【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
}
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
}
相关文章推荐
- Formview单文档或对话框项目接受不到按键消息的解决办法
- [MFC]关于VS2002中文版开发显示对话框的常规DLL出现RC2135错误的解决办法
- vc/mfc 对话框中文本控件textout输出字体消失的解决办法
- Formview单文档或对话框项目接受不到按键消息的解决办法
- 添加RichEdit控件导致MFC对话框程序无法执行的解决方法
- VS2008中,VC++开发时添加自定义的消息时,发生错误的解决办法
- VC中对话框不能响应WM_CHAR WM_KEYUP WM_KEYDOWN消息的解决办法
- MFC 对话框 无法为控件关联变量 已解决!
- C#开发中提示无法加载DLL"***.dll":找不到指定的模块(异常来自HRESULT:0x8007007E)问题的解决办法
- win32关于对话框处理不到WM_KEYDOWN消息的解决办法(注:非MFC)
- CFormView中控件无法响应Ctrl+C和Ctrl+V消息的解决办法
- 添加RichEdit控件导致MFC对话框程序无法执行的解决方法
- VS2008无法为添消控件添加消息响应函数的解决办法
- 添加RichEdit控件导致MFC对话框程序无法执行的解决方法
- VC MFC 对话框 敲回车,ESE键,程序自动退出解决办法
- VC++ 6.0 环境下用MFC开发常见问题及解决办法
- MFC 中Picture 控件中的图片在对话框拖出屏幕后消失的解决办法
- Tab Control——属性页的子对话框中的CEdit控件无法输入的解决办法
- 添加RichEdit控件导致MFC对话框程序无法执行的解决方法
- MFC对话框里不能响应按键事件的解决办法