Avatar billede narrr Nybegynder
17. maj 2004 - 16:16 Der er 3 kommentarer

CDialog::OnOk og ENTER i MFC

Hejsa.

Når man laver en dialog-box i MFC, så er ENTER åbenbart bundet til funktionen CDialog::OnOK, så selvom man ikke har en IDOK-knap, så bliver OnOK stadig kaldt, når man trykker enter.. Dette synes jeg er MEGET irriterende, og er der ikke en måde hvorpå man kan få MFC til at lade være med at kalde OnOk, bare fordi man trykker ENTER ?
Avatar billede jpk Nybegynder
17. maj 2004 - 16:23 #1
Hvis dit problem reelt skyldes at OnOK bliver kaldt, kan du bare override funktionen i din nedarvede klasse og lade være med at kalde CDialog::OnOK.
Avatar billede narrr Nybegynder
17. maj 2004 - 16:32 #2
Ja, det prøvede jeg, men så er problemet bare, at OnOK stadig bliver kaldt, og derfor snupper den på en måde VK_RETURN-beskeden. Tror jeg nok! Hvis jeg sætter følgende ind i dialogen, får jeg i hvert fald ingen reaktion på ENTER:

---
void CMyDialog::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
    // TODO: Add your message handler code here and/or call default

    if(nChar == VK_RETURN)
        AfxMessageBox("hej med dig");
}
---
Avatar billede jpk Nybegynder
18. maj 2004 - 09:29 #3
Du kan override PreTranslateMessage således for at fange enter:

BOOL CMyDlg::PreTranslateMessage(MSG* pMsg)
{
    if(pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN)
    {
        // Do something...
        return FALSE;
    }

    return CDialog::PreTranslateMessage(pMsg);
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester