为什么我使用其他程序调用这个DLL就崩溃

xengine-qyt 2009-09-11 10:27:27
BOOL BoolRegHotkey;
HWND W_Hwnd;
int ID_HTK;
int OldProc,ScrollProc;
extern "C" _declspec(dllexport) BOOL __stdcall RegHotKey(HWND Hwnd,int ID_HOTKEY,UINT Key)
{
OldProc = SetWindowLong(Hwnd,GWL_WNDPROC,ScrollProc);
if (RegisterHotKey(Hwnd,ID_HOTKEY,MOD_CONTROL|MOD_ALT,Key))
{
return true;
W_Hwnd = Hwnd;
BoolRegHotkey = true;
ID_HTK = ID_HOTKEY;
}
return false;
BoolRegHotkey = false;
}

extern "C" _declspec(dllexport) BOOL __stdcall UnHotKey(HWND Hwnd,int ID_HOTKEY)
{
if (UnregisterHotKey(Hwnd,ID_HOTKEY))
{
return true;
}
return false;
}

LRESULT WndProc(HWND hwnd, UINT message, WPARAM wParam,LPARAM lParam)
{
hwnd = W_Hwnd;
switch (BoolRegHotkey)
{
case WM_HOTKEY:if (BoolRegHotkey)
{
ShowWindow(hwnd,SW_HIDE);
}
else
{
ShowWindow(hwnd,SW_SHOW);
}
BoolRegHotkey = !BoolRegHotkey;
return 0;
break;
case WM_DESTROY:UnregisterHotKey(hwnd,ID_HTK);
PostQuitMessage(0);
return 0;
break;
}
return CallWindowProc((WNDPROC)OldProc,hwnd,message,wParam,lParam);
}

代码如上,我使用程序调用这个DLL的时候 程序直接崩溃,谁帮我修改下啊! 到底哪儿的问题
我想实现的功能是 热键注册,并且通过热键隐藏和显示窗口
...全文
182 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xengine-qyt 2009-09-12
  • 打赏
  • 举报
回复
恩 谢谢二楼 粗心了

三楼 如何初始化啊!
magic7004 2009-09-11
  • 打赏
  • 举报
回复
int OldProc,ScrollProc;
extern "C" _declspec(dllexport) BOOL __stdcall RegHotKey(HWND Hwnd,int ID_HOTKEY,UINT Key)
{
OldProc = SetWindowLong(Hwnd,GWL_WNDPROC,ScrollProc);

ScrollProc没有看到哪里初始化它了,如果没有初始化就直接SetWindowLong(Hwnd,GWL_WNDPROC,ScroProc);你的程序一定会崩溃啊。
Chivalry 2009-09-11
  • 打赏
  • 举报
回复
extern "C" _declspec(dllexport) BOOL __stdcall RegHotKey(HWND Hwnd,int ID_HOTKEY,UINT Key)
{
OldProc = SetWindowLong(Hwnd,GWL_WNDPROC,ScrollProc);
if (RegisterHotKey(Hwnd,ID_HOTKEY,MOD_CONTROL|MOD_ALT,Key))
{
return true;
W_Hwnd = Hwnd;
BoolRegHotkey = true;
ID_HTK = ID_HOTKEY;
}
return false;
BoolRegHotkey = false;
}

....
return之后在写代码还有什么意义。。。

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧