Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Erweiterte MessageBox

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
29.04.2011, 15:09 Uhr
~DerBesteDerSchlechtesten
Gast


Hallo,

Ich schreibe gerade ein WinAPI-Programm und an einer Stelle möchte ich die Bestätigung des Anwenders für weitere Schritte haben. Das könnte ich problemlos mit der Funktion MessageBox mit dem Parameter MB_YESNO machen, aber ich möchte zusätzlich die Option geben, dass die Bestätigung nicht nochmal angezeigt wird, und dazu gibt es keinen default style für die Messageboxes. Also habe ich mir das Fenster selber erstellt (mit Ressourcen). Alles funktioniert einwandfrei, aber ich möchte nur wissen, ob das so geht und es keine Schwachstellen besitzt


C++:
Ich erstelle das modelss window mit:
int iEditProfResult = DialogBox(hInst, MAKEINTRESOURCE(IDR_CONFIRMSYNC), hDlgMain, (DLGPROC)ConfirmSync);


Die Funktion an sich macht nicht viel - gibt nur einen Rückgabewert zurück (je nach dem, auf was geklickt wurde):


C++:
LRESULT CALLBACK ConfirmSync(HWND hWndDlgConf, UINT Msg, WPARAM wParam, LPARAM lParam)
{
    switch(Msg)
    {
    case WM_COMMAND:
        {
            switch (LOWORD(wParam))
            {
            case ID_PROCEED:
                {
                    EndDialog(hWndDlgConf, 11);
                    return TRUE;
                } break;

            case IDCANCEL:
                {
                    EndDialog(hWndDlgConf, 0);
                    return FALSE;
                } break;
            }

        } break;
    }
    return FALSE;
}



Die Ressourcen, falls es wichtig ist:


C++:
IDR_CONFIRMSYNC DIALOGEX 150, -10, 175, 90
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_MINIMIZEBOX
CAPTION "Large data found"
FONT 8, "MS Sans Serif"
BEGIN
    LTEXT        "bla bla bla. Still proceed?",    IDC_STATIC,                10, 10, 160, 35
    CHECKBOX    "Dont show this message again",        IDC_CB_NOTREMIND,        20, 50, 115, 10,    BS_AUTOCHECKBOX

    PUSHBUTTON    "Yes",                ID_PROCEED,                30, 70, 50, 14
    PUSHBUTTON    "No",                IDCANCEL,                100, 70, 50, 14
END


Danke!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
29.04.2011, 16:51 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Normalerweise ruft man im default der Nachrichtenbehandlungsfunktion noch DefDlgProc auf aber ich kann dir jetzt nicht sagen ob das unbedingt erforderlich ist. Dazu ist das Ganze zu lange her bei mir
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
30.04.2011, 20:50 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


ja du solltest statt generell FALSE zurückgeben, DefDlgProc (hieß das nicht DefaultDialogProc oder so? aber das standard-dingens halt) aufrufen
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: