vc mfc Edit SetFocus 设置焦点 无效 失败
可能導(dǎo)致的原因:因?yàn)槭窃诰€程里執(zhí)行的,所以對話框無效果。
參見API說明:SetFocus,對指定的窗口設(shè)置鍵盤焦點(diǎn)。該窗口必須與調(diào)用此API的線程的消息隊(duì)列相關(guān)
所以,SetFocusAPI 如指定的窗口(或控件)不屬于當(dāng)前輸入線程,則該函數(shù)是沒有效果
解決方案:直接發(fā)消息給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, "焦點(diǎn)移動到(IDC_EDT_YZM_1)");
GetDlgItem(IDC_EDT_YZM_1)->SetFocus();
}
}
return 0;
}
線程里:
pCWnd->SendMessage(DIYMESSAGE_1);
?
總結(jié)
以上是生活随笔為你收集整理的vc mfc Edit SetFocus 设置焦点 无效 失败的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【每天1分钟】MarkDown语法学习之
- 下一篇: 【图像隐藏】基于小波变换+SURF、RA