環境
XP SP2
Visual C++ 6.0
MFC
[Enter]キーにてフォーカス移動を行う際、ボタンコントロール上かの判定を
オブジェクトID (IDOK、IDCANCELなど) で行いたいのですが、取得方法が分か
りません。
アクティブなコントロールのオブジェクトID を取得する方法を教えて下さい。
オブジェクトIDが取得できるとフォーカス移動以外にも使えるので(^^;
BOOL CxxxxDlg::PreTranslateMessage(MSG* pMsg)
{
// アクティブなコントロールのスタイルを取得
CWnd* pCWnd = GetFocus();
UINT uStyle = ((CButton*)pCWnd)->GetButtonStyle();
if(pMsg->message==WM_KEYDOWN){
switch (pMsg->wParam){
case VK_RETURN:
// 現在とりあえず、
// アクティブコントロールのスタイルにて判定
if( uStyle != BS_DEFPUSHBUTTON ){ // ボタンでなかったら
NextDlgCtrl(); // 次へフォーカス移動
return FALSE;
}
break;
case VK_DOWN:
NextDlgCtrl(); // 次へフォーカス移動
return FALSE;
case VK_UP:
PrevDlgCtrl(); // 前へフォーカス移動
return FALSE;
}
}
return CDialog::PreTranslateMessage(pMsg);
}
自己解決
if((GetFocus()->GetDlgCtrlID() != IDOK) &&
(GetFocus()->GetDlgCtrlID() !=IDCANCEL)){
NextDlgCtrl(); // 次のタブへフォーカス移動
return FALSE;
}
でできました。
ツイート | ![]() |