LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
BOOL Discard = FALSE;
if ((wParam == WM_KEYDOWN) && (HC_ACTION == nCode))
{
PKBDLLHOOKSTRUCT p = (PKBDLLHOOKSTRUCT) lParam;
if (VK_F4 == p->vkCode)
{
CString strAmt = CaptureImage();
if (NULL != g_pDlg)
{
g_pDlg->SetAmt(strAmt);
g_pDlg->ShowWindow(SW_SHOW);
g_pDlg->SetCapture();
PostMessage(g_pDlg->GetSafeHwnd(),WM_SETFOCUS,NULL,NULL);
PostMessage(g_pDlg->m_editCode.GetSafeHwnd(),WM_SETFOCUS,NULL,NULL);
g_pDlg->m_editCode.SetCapture();
}
}
else if (VK_ESCAPE == p->vkCode )
{
g_pDlg->ShowWindowEx(FALSE);
}
}
if ((wParam == WM_CHAR) && (HC_ACTION == nCode))
{
TRACE("44444444444444444444\n");
}
return CallNextHookEx(NULL, nCode, wParam, lParam);
}
BOOL Installhook()
{
HINSTANCE hins=AfxGetInstanceHandle();
g_Hook = SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)KeyboardProc, hins, 0);
return (BOOL)g_Hook;
}
1.基于對話框dlgA,在其OnInit時呼叫Installhook設定鉤子
2打開記事本,輸入內容
3.按F4調起非模態對話g_pDlg,g_pDlg有個edit框m_editCode
以上步驟正常
4.調起g_pDlg之后,看著游標在m_editCode框上,但是資料內容還是顯示在之前打開的記事本
現在問題就是想把輸入內容顯示到m_editCode上。
自己嘗試了好幾種設定焦點的方式都無法將輸入內容設定到m_editCode上。
麻煩大神指點,謝謝
uj5u.com熱心網友回復:
試試把發送訊息設定焦點修改為APISetFocus(g_pDlg->m_editCode.GetSafeHwnd());
uj5u.com熱心網友回復:
if ((wParam == WM_CHAR) && (HC_ACTION == nCode))WM_CHAR 是 Up 和 Down 的結果
uj5u.com熱心網友回復:
游標閃爍,應該是假焦點轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/48551.html
下一篇:Unicode編碼和多位元組編碼
