vc mfc Edit SetFocus 设置焦点 无效 失败
可能導致的原因:因為是在線程里執行的,所以對話框無效果。
參見API說明:SetFocus,對指定的窗口設置鍵盤焦點。該窗口必須與調用此API的線程的消息隊列相關
所以,SetFocusAPI 如指定的窗口(或控件)不屬于當前輸入線程,則該函數是沒有效果
解決方案:直接發消息給UI線程,然后由UI線程來SetFocus()
參考代碼:
對話框頭文件:
afx_msg LRESULT OnDIYMessage_1(WPARAM wParam, LPARAM lParam);
對話框cpp文件:
#define DIYMESSAGE_1 WM_USER + 100
ON_MESSAGE(DIYMESSAGE_1?, OnDIYMessage_1)
LRESULT CenterDlg::OnDIYMessage_1( WPARAM wParam, LPARAM lParam )
{
CWnd* pCWnd_temp = GetFocus();
if (pCWnd_temp!=NULL && IsWindow(pCWnd_temp->m_hWnd))
{
if ( IDC_EDT_YZM_1 != pCWnd_temp->GetDlgCtrlID())
{
theLog.SaveLog(true, "焦點移動到(IDC_EDT_YZM_1)");
GetDlgItem(IDC_EDT_YZM_1)->SetFocus();
}
}
return 0;
}
線程里:
pCWnd->SendMessage(DIYMESSAGE_1);
?
總結
以上是生活随笔為你收集整理的vc mfc Edit SetFocus 设置焦点 无效 失败的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【每天1分钟】MarkDown语法学习之
- 下一篇: VCF文件中QUAL和GQ的区别