【VC MFC開發】Dll 中對話方塊的控制元件無法接受到按鍵訊息的解決辦法
使用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);//設定新的視窗過程
}
// EXCEPTION: OCX Property Pages should return FALSE
}