다이얼로그로 대화창을 만들고, 에디트 버튼이나, 기타 엔터키 입력을 받는 콘트롤을 올려 놓을 경우에, 다이얼로그에서 먼져 엔터키를 받아서 OnOK();가 호출되어 걍 ~~ 죽죠.

이 부분을 막아 보겠습니다.

1.  리소스 부분에서 IDOK 부분을 다른 리소스로 변환합니다.

IDOK -- > IDC_BUTTON_ACCEPT       

#define IDC_BUTTON_ACCEPT               1150 //(이건 Resource.h에 있음)

 2. IDC_BUTTON_ACCEPT의 핸들러 OnAccept();를 만들죠..

void CConfigDlg::OnAccept()
{
    // Add code here..
    CDialog::OnOK();
}

3. 그 핸들러에 IDOK 의 디폴트 핸들러를 호출합니다. (위에서 같이요:    CDialog::OnOK();)

4. ::PreTranslateMessage()핸들러를 만들고 아래와 같이 작성 하세요..

BOOL CConfigDlg::PreTranslateMessage(MSG* pMsg)
{
    if( pMsg->message == WM_KEYDOWN ) // Enter Key Prevent.. so good.. ^^
    {
        if(pMsg->wParam == VK_RETURN
            || pMsg->wParam == VK_ESCAPE )
        {
            ::TranslateMessage(pMsg);
            ::DispatchMessage(pMsg);

            return TRUE;                    // DO NOT process further
        }
    }
    return CDialog::PreTranslateMessage(pMsg);
}

5. 다이얼로그를 모달루 띠우고, 엔터키를 입력해도 죽지 않습니다.

즐코요..


펌 : http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=51&MAEULNo=20&no=7092&ref=7092

저작자 표시 비영리 변경 금지
신고
블로그 이미지

roter

JHB / Peripheral Programmer

댓글을 달아 주세요