HWND g_hwnd=NULL;
BOOL CMyfirstDlg::OnInitDialog()
{
g_hwnd=m_hWnd;
LRESULT CALLBACK KeyboardProc(
int code, // hook code
WPARAM wParam, // virtual-key code
LPARAM lParam // keystroke-message information
)
{
if(VK_F11==wParam)
{
::SendMessage(g_hwnd,WM_CLOSE,0,0);
}
return 1;
}
void CMyfirstDlg::OnOK()
{ hkeyborad=SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,NULL,GetCurrentThreadId());
hmouse=SetWindowsHookEx(WH_MOUSE,MouseProc,NULL,GetCurrentThreadId());
}
为什么我再用sendMessage这个函数的时候一定要这样才能成功?
最开始我在CMyfirstDlg类里面声明HWND g_hwnd;
然后再构造函数里面g_hwnd=m_hWnd就不行。。我很费解。
谢谢大家!
BOOL CMyfirstDlg::OnInitDialog()
{
g_hwnd=m_hWnd;
LRESULT CALLBACK KeyboardProc(
int code, // hook code
WPARAM wParam, // virtual-key code
LPARAM lParam // keystroke-message information
)
{
if(VK_F11==wParam)
{
::SendMessage(g_hwnd,WM_CLOSE,0,0);
}
return 1;
}
void CMyfirstDlg::OnOK()
{ hkeyborad=SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,NULL,GetCurrentThreadId());
hmouse=SetWindowsHookEx(WH_MOUSE,MouseProc,NULL,GetCurrentThreadId());
}
为什么我再用sendMessage这个函数的时候一定要这样才能成功?
最开始我在CMyfirstDlg类里面声明HWND g_hwnd;
然后再构造函数里面g_hwnd=m_hWnd就不行。。我很费解。
谢谢大家!
CDialog 类的数据成员 m_hWnd 保存了[窗口对象]的句柄.
但是在 CDialog 类构造的时候,[窗口对象]还没有建立,这时, m_hWnd == NULL
等[窗口对象]建立后, m_hWnd 才会是一个有效的句柄.