关于制作控制面板组件(.cpl)之Question
我照着一本书,编了一个简单的.cpl例程。在 OnInquire(UINT uAppNum,NEWCPLINFO* pInfo) function 中,代码如下:
{
//填充NEWCPLINFO结构
pInfo->dwSize=sizeof(NEWCPLINFO);
pInfo->dwFlags=0;
pInfo->dwHelpContext=0;
pInfo->lData=0;
AfxMessageBox("test",MB_OK);
pInfo->hIcon =::LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(3001));
strcpy(pInfo->szName,"UserInfo");
strcpy(pInfo->szInfo,"Test Control Panel Applet");
strcpy(pInfo->szHelpFile,"");
return 0;
}
按书上说,控制面板用LoadLibrary()把CPL库导入内存后,即刻向CPlApplet()发CPL_INIT消息,指示CPL库初始化,之后,再向CPlApplet()发CPL_GETCOUNT消息,接下来就是CPL_NEWINWUIRE即对应如上函数OnInquire(),此后,控制面板显示所有组件。可我的组件怎么也显示不出来.OnInquire()中::LoadIcon()中MAKEINTRESOURCE(3001)宏中的3001为我自做的ICON之Resource Symbol.可就是看不见图标。
恳请诸位高手出手相救也么哥!
问题点数:28、回复次数:3Top
1 楼cng(质子)回复于 2001-09-14 14:12:57 得分 0
afxMessageBox("test",MB_OK);一行为我调试时加上,一不小心粘上,应不算数。特此声明,望高手见谅,也可给我发信:iesxq@hotmail.comTop
2 楼panda_w(好想睡啊!)回复于 2001-09-14 14:21:59 得分 28
其实,多数控制面板程序仅需处理CPL_INQUIRE消息而将CPL_NEWINQUIRE消息忽略。CPL_INQUIRE通过一个控制面板能够缓存的结构存放信息从而提高性能。CPL_NEWINQUIRE仅当您需要根据计算机的状态来改变控制面板程序的图标和显示字符串时有用。
可以参考:http://www.vckbase.com/article/system/0008.htmTop
3 楼cng(质子)回复于 2001-09-15 10:42:03 得分 0
我的操作系统为WINNT4.0,而CPL_NEWINQUIRE 是为WIN32设计。我一时弄错,thanks panda_w,thanks a lots ,pray you "一路Sleep good"!Top




