CListCtrl中的CCheckBox问题(VC/MFC 界面 )
我在CListCtrl中添加了CCheckBox,现在想选中某一行的Checkbox的同时,将该行的数据立刻添加到数据库中,取消选中时,将该行数据立刻从数据库中删除。这个功能需要在CListCtrl的那个事件中实现,如何判断我点击的时那一行对应的checkbox
void CTestForm::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult)
...{
NMITEMACTIVATE* pActivate = (NMITEMACTIVATE*)pNMHDR ;
LVHITTESTINFO oInfo ;
oInfo.pt = pActivate->ptAction ;
m_List.HitTest(&oInfo) ;
if(oInfo.flags == LVHT_ONITEMSTATEICON)
AfxMessageBox("State") ;
*pResult = 0;
}
void CCBTestDlg::OnKeydownList1(NMHDR* pNMHDR, LRESULT* pResult)
...{
LV_KEYDOWN* pLVKeyDow = (LV_KEYDOWN*)pNMHDR;
// please insert code here...
if(pLVKeyDow->wVKey == VK_SPACE)
AfxMessageBox("State") ;
*pResult = 0;
}
如何隐藏当前打开ie网页窗口 (VB 基础类 )
http://www.codeproject.com/shell/AutomateShellWindow.asp
http://blog.joycode.com/jiangsheng/archive/2005/10/20/65489.aspx
IE控件右边的Scroll问题(VC/MFC ATL/ActiveX/COM )
我在程序中用了一个IE控件用于显示Html格式的数据,显示通过IHTMLDocument2的IPersistStreamInit接口的Load方法实现。为了能取得IHTMLDocument2,在程序初始化时,我会调用Navigate2("about:blank", ...)来初始化IE的文档对象,这时麻烦来了,右边会出现一个灰掉的ScrollBar,我想不让这个灰掉的ScrollBar显示出来(只有当ScrollBar有效时才显示),
http://support.microsoft.com/kb/324419
ActiveX在网页中显示的问题(VC/MFC ATL/ActiveX/COM )
自己写的ActiveX控件,使用,<OBJECT CLASSID==''>时,显示正常.
使用Javascript:
new ActiveXObject(ProgID),控件方法可以执行,但是不能显示控件.
var myObjectElement = document.createElement('<object id="elementid"
classid="clsid:098F2470-BAE0-11CD-B579-08002B30BFEB"></object>');
var myParamElement1 = document.createElement('<PARAM NAME=movie
value="example.avi">');
var myParamElement2 = document.createElement('<Param name=quality value=high>');
var myParamElement3 = document.createElement('<Param name=bgcolor value=#FFFFFF>');
myObjectElement.appendChild(myParamElement1);
myObjectElement.appendChild(myParamElement2);
myObjectElement.appendChild(myParamElement3);
embedControlLocation.appendChild(myObjectElement);
在ClistCtrl中用鼠标框选多行的事件是什么?(就像在资源管理器中点左键或右键拖动鼠标,选中多行) (VC/MFC 基础类 )
LVN_MARQUEEBEGIN
怎样得到构成一个函数的所有指令所占内存的大小(VC/MFC 硬件/系统)
举例说明:
int __stdcall Addup(int n)
...{
int sum = 0;
int i = n;
for(i = n; i >= 0; i--)
...{
sum += i;
}
return sum;
}
void *p = Addup;
现在我想知道从“p”开始,在这以后多少字节是函数“Addup”的指令,怎样知道这部分内存的大小
把Addup函数声明为static的,紧接其后再声明一个static的函数,名字自定,这个函数体为空即可。然后用后面的函数名减去前面的函数名,即地址相关,就可得前面函数所占的代码空间。
http://blog.csdn.net/jiangsheng/archive/2003/11/09/3789.aspx
如果在一个线程中,让线程休眠,结果会怎样呢?(VC/MFC 进程/线程/DLL )
如果有与休眠并行的操作,比如下面程序中对ret赋值,那么这个并行的操作在什么时候被执行呢?而且,执行SuspendThread后,线程是立刻进入休眠的么?
如果这么做(在线程内休眠自己,在线程外重新启动),有没有什么副作用?
谢谢各位。
#include <windows.h>
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
DWORD ret = -1;
HANDLE threadHandle = 0;
DWORD WINAPI ThreadProc(LPVOID lpParam)
...{
::Sleep(500);
cout<<"123"<<endl;
DWORD ret = ::SuspendThread(threadHandle);//程序运行到这里时,会休眠自己,那么ret会在什么时候被赋值呢?休眠前还是休眠后?为什么?
while(1)
cout<<"abc"<<endl;
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
...{
DWORD a;
threadHandle = ::CreateThread(NULL, 0, ThreadProc, 0, 0, &a);
::Sleep(1000);
::Sleep(1000);
a = ::ResumeThread(threadHandle);
::Sleep(1000);
return 0;
}
SuspendThread在休眠后才返回。你看看汇编码就知道了
Calling SuspendThread on a thread that owns a synchronization object, such as a mutex or critical section, can lead to a deadlock if the calling thread tries to obtain a synchronization object owned by a suspended thread. To avoid this situation, a thread within an application that is not a debugger should signal the other thread to suspend itself.
如果没有同步对象的存在,是不是这样就是安全的?
还有个问题,线程池一般是如何实现的?我的想法是起一系列的休眠线程,然后在需要用到时替换内部的运行函数,这个函数运行完后,线程将设标志位标志回收,并自己休眠自己,不知道这样是否可行
1 hard to say. deadlock can occur in other conditional waitings
2 http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/vcsample/html/vcsamCThreadPoolSample.asp
CppWebBrowser的Fresh与重复Navigate同一网址有啥区别(CppWebBrowser的Fresh与重复Navigate同一网址有啥区别)
Fresh can repost all form data.
点击网页中控键怎么与后台mfc程序交互(VC/MFC HTML/XML)
http://www.codeguru.com/cpp/i-n/ieprogram/article.php/c4399/
http://msdn.microsoft.com/workshop/browser/mshtml/tutorials/sink.asp
http://www.codeproject.com/miscctrl/luo31.asp
http://www.codeproject.com/shell/dlgdhtmlevents.asp
突然发现VS2005 的 devenv.exe 是在 Common7 目录下(.NET技术 C#)
既然 VS2005 号称 8.0,那么应当是在Common8 目录下才对的啊
It's a long story. I don't know all the gory details, but I understand the problem is due to some component authoring decisions made in the VS 2002 timeframe. Not because of backwards compatibility, but for side-by-side correctness, we're stuck with them now.
--Paul Harrington, Visual Studio Platform Team, Microsoft
如何在windows media player里控制伴唱,原唱 (专题开发/技术/项目 多媒体/流媒体开发 )
First, enable multichannel support (http://www.microsoft.com/windowsxp/using/windowsmediaplayer/expert/bridgman_03january07.mspx)
Second, set the player.settings.balance property. The value zero indicates that the audio plays at equal volume on both left and right channels. A value of –100 indicates that audio plays only on the left channel. A value of 100 indicates that audio plays only on the right channel.
Reference:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmplay10/mmp_sdk/settingsobject.asp
编程实现WMV/ASF文件用MMS或HTTP协议通过一个端口发送出去 (专题开发/技术/项目 多媒体/流媒体开发)
我想实现对WMV/ASF本地文件的广播,能编程实现吗
可以编程控制Windows Media Encoder(IWMEncPushDistribution ),或者自己用Windows Media Format的IWMWriterNetworkSink 接口创建一个本地点播点
去http://msdn.microsoft.com/windowsmedia/downloads/default.aspx 下SDK
http://msdn.microsoft.com/library/en-us/wmform95/htm/sampleapplications.asp
The following samples are installed by default in C:\WMSDK\WMFSDK9\samples. The samples will not work unless the Windows Media Format SDK has been installed.
......
WMVNetWrite This console application shows how a Windows Media file is streamed across the Internet. The sample requires a port to be specified, and then the file can be played using a player.
如何通过IHTMLDocument2接口获取网页中的meta信息(VC/MFC HTML/XML )
HRESULT TBaseWebBrowserPageletCtrl::GetMetaCollection(IHTMLElementCollection** pCollec, IHTMLDocument2* pDocument)
...{
CComPtr <IDispatch > lDispatch;
CComQIPtr <IHTMLDocument2 > lDocument;
HRESULT lResult;
if (pDocument == NULL)
...{
if (!m_BrowserTree)
return E_FAIL;
lResult = m_BrowserTree- >get_Document(&lDispatch);
lDocument = lDispatch;
lDispatch = NULL;
ASSERT(SUCCEEDED(lResult) && lDocument);
if (FAILED(lResult) ¦ ¦ (lDocument == NULL))
return E_FAIL;
}
else
...{
lDocument = pDocument;
}
CComPtr <IHTMLElementCollection > lCollec;
lResult = lDocument- >get_all(&lCollec);
ASSERT(SUCCEEDED(lResult) && lCollec);
if (FAILED(lResult) ¦ ¦ (lCollec == NULL))
return E_FAIL;
lResult = lCollec- >tags(CComVariant( "META "), &lDispatch);
return lDispatch- >QueryInterface(pCollec);
}
HRESULT TBaseWebBrowserPageletCtrl::CheckMetaTags()
...{
CComQIPtr <IHTMLElementCollection > lCollec;
CComQIPtr <IHTMLMetaElement > lMetaElement;
CComPtr <IDispatch > lDispatch;
HRESULT lResult;
long lIndex = 0;
long lLength = 1;
lResult = GetMetaCollection(&lCollec);
if (SUCCEEDED(lResult) && lCollec)
...{
lResult = lCollec- >get_length(&lLength);
ASSERT(SUCCEEDED(lResult));
}
while (lIndex < lLength)
...{
if (lCollec)
...{
lResult = lCollec- >item(CComVariant(lIndex), CComVariant(), &lDispatch);
lMetaElement = lDispatch;
lDispatch = NULL;
ASSERT(SUCCEEDED(lResult) && lMetaElement);
}
if (SUCCEEDED(lResult) && lMetaElement)
...{
//
CComBSTR lName;
lResult = lMetaElement- >get_name(&lName);
if (SUCCEEDED(lResult)
&& lName
&& (!wcsicmp(CComBSTR(KEEBOO_PRODUCT_NAME), lName)
¦ ¦ !wcsicmp(CComBSTR(KEEBOO_COMPANY), lName)))
...{
CComBSTR lMetaContent;
lResult = lMetaElement- >get_content(&lMetaContent);
if (SUCCEEDED(lResult) && lMetaContent)
...{
if (!wcsicmp(L "no-stretch ", lMetaContent))
...{
m_bNoStretch = TRUE;
}
else if (!wcsicmp(L "no-cache ", lMetaContent))
...{
CComQIPtr <IPageletSink > lPageletSink(m_pControlSite);
if (lPageletSink)
...{
CComObject <TDeleteCacheEntryCallback >* lCallback;
CComQIPtr <IPageletDestroyCallback > lCBInterface;
CComObject <TDeleteCacheEntryCallback >::CreateInstance(&lCallback);
lCallback- >SetPage(getModel());
lCBInterface = lCallback;
lPageletSink- >SetDestroyCallback(lCallback);
}
}
else
...{
TModelPtr <TPropertyObjectModel > lProp;
TModelPtr <TContentModel > lContentModel;
if (!wcsicmp(L "online-reload ", lMetaContent))
...{
getModel()- >getContent(&lContentModel);
GetModelProperty <TContentModel >(lContentModel, T_CONTENT_NETWORK_PROPERTIES, &lProp, TRUE);
ASSERT(lProp);
if (lProp)
lProp- >putBooleanField( "online-reload ", true);
}
else if (!wcsicmp(L "online-flush ", lMetaContent))
...{
getModel()- >getContent(&lContentModel);
GetModelProperty <TContentModel >(lContentModel, T_CONTENT_NETWORK_PROPERTIES, &lProp, TRUE);
ASSERT(lProp);
if (lProp)
lProp- >putBooleanField( "online-flush ", true);
}
}
}
}
}
lIndex++;
}
return S_OK;
}
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。