我以前写的测试程序,可以用的,也许有用
long pascal CPlApplet(HWND hWnd,UINT wMsg,long lp1,long lp2)
{
char szMsg[8][256] = {"CPL_INIT","CPL_GETCOUNT","CPL_INQUIRE","CPL_DBLCLK",
"CPL_EXIT","CPL_STOP","CPL_NEWINQUIRE","other"};
int nIndex = 0;
CPLINFO *pCplInfo;
BOOL bRet =1; switch(wMsg)
{
case CPL_INIT:
nIndex = 0;
break;
case CPL_GETCOUNT:
nIndex = 1;
break;
case CPL_INQUIRE:
// case CPL_NEWINQUIRE:
nIndex = 2;
if(lp1>0) return 0;
pCplInfo = (CPLINFO*)lp2;
pCplInfo->idInfo = IDI_MAIN;
pCplInfo->idName = IDI_MAIN;
pCplInfo->idIcon = IDI_MAIN;
pCplInfo->lData = NULL;
bRet = 0;
break;
case CPL_DBLCLK:
nIndex = 3;
On_Process(hWnd,(CPLINFO*)lp2);
return 1;
break;
case CPL_EXIT:
nIndex = 4;
break;
case CPL_STOP:
nIndex = 5;
break;
case CPL_NEWINQUIRE:
nIndex = 6;
break;
default:
nIndex = 7;
bRet = 0;
break;
} MessageBox(hWnd,szMsg[nIndex],"消息!",MB_OK);
return bRet;
}我看你的程序也没问题。:(
long pascal CPlApplet(HWND hWnd,UINT wMsg,long lp1,long lp2)
{
char szMsg[8][256] = {"CPL_INIT","CPL_GETCOUNT","CPL_INQUIRE","CPL_DBLCLK",
"CPL_EXIT","CPL_STOP","CPL_NEWINQUIRE","other"};
int nIndex = 0;
CPLINFO *pCplInfo;
BOOL bRet =1; switch(wMsg)
{
case CPL_INIT:
nIndex = 0;
break;
case CPL_GETCOUNT:
nIndex = 1;
break;
case CPL_INQUIRE:
// case CPL_NEWINQUIRE:
nIndex = 2;
if(lp1>0) return 0;
pCplInfo = (CPLINFO*)lp2;
pCplInfo->idInfo = IDI_MAIN;
pCplInfo->idName = IDI_MAIN;
pCplInfo->idIcon = IDI_MAIN;
pCplInfo->lData = NULL;
bRet = 0;
break;
case CPL_DBLCLK:
nIndex = 3;
On_Process(hWnd,(CPLINFO*)lp2);
return 1;
break;
case CPL_EXIT:
nIndex = 4;
break;
case CPL_STOP:
nIndex = 5;
break;
case CPL_NEWINQUIRE:
nIndex = 6;
break;
default:
nIndex = 7;
bRet = 0;
break;
} MessageBox(hWnd,szMsg[nIndex],"消息!",MB_OK);
return bRet;
}我看你的程序也没问题。:(
注意你的CPL要拷贝到系统目录下才能在控制面板上看到的。
还有在
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
ghInstance = (HINSTANCE)hModule;//我没有作判断,
return TRUE;
}
你说的地方我都有呀!,现在主要问题是在CPlApplet收到第一个消息CPL_INIT后
就再也接收不到消息了,产一个异常中断.
extern "C" __declspec(dllexport) long pascal CPlApplet(HWND hWnd,UINT wMsg,long lp1,long lp2);
就是这样了,
我刚才试过的。
主要是pascal的调用方式。
OK