您的位置:首页 > 其它

【VC MFC开发】Dll 中对话框的控件无法接受到按键消息的解决办法

2011-12-05 04:36 661 查看
使用DLL注入到 别的程序中时,发现DLL的窗口过程无法响应WM_CHAR事件,摸索了很久,才找到原因,给碰到同样问题的人参考。

WNDPROC OldComboEditProc = NULL;

LRESULT CALLBACK ComboEditProc(

HWND hwnd, // handle to window

UINT uMsg, // message identifier

WPARAM wParam, // first message parameter

LPARAM lParam // second message parameter

)

{

if (uMsg==WM_CHAR)

{

if (g_Msg_Form) g_Msg_Form->PostMessage(WM_CHAR,wParam,lParam);

}

return CallWindowProc(OldComboEditProc,hwnd,uMsg,wParam,lParam);

}

BOOL CMsgForm::OnInitDialog()

{

ClxDialog::OnInitDialog();

HWND gh=FindWindowEx(m_conCommond.m_hWnd,0,"Edit",NULL);;//获取窗口句柄

if (gh)

{

OldComboEditProc =(WNDPROC)GetWindowLong(gh,GWL_WNDPROC);//以前窗口过程

SetWindowLong(gh,GWL_WNDPROC,(long)ComboEditProc);//设置新的窗口过程

}

return TRUE; // return TRUE unless you set the focus to a control

// EXCEPTION: OCX Property Pages should return FALSE

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐