GetDlgItem



  • Hi,

    noch ne Frage..
    Warum funktioniert GetDlgItem bei mir nur in den vom HauptDialog geöffnetten DialogBoxen und nicht auch direkt in meiner WndProc?

    switch(message)
    {
        case WM_CREATE:
             hInstance=((LPCREATESTRUCT)lParam)->hInstance;
             hFName=GetDlgItem(hwnd,IDC_FNAME);
             return 1;
    ...
    

    hFName bekommt so immer den Wert NULL zugewiesen.

    Vielleicht ne dumme Frage, aber warum geht das nicht?

    mfg
    Fred



  • ich bin mir nicht sicher, aber heißt es bei dialogen nicht WM_INITDIALOG anstatt WM_CREATE ??



  • WM_CREATE benutze ich immer für mein MainWnd und WM_INITDIALOG für die Dialoge die ich von dort aus starte.
    WM_CREATE wird auch bei mir gleich aufgerufen aber es geht halt nicht mit GetDlgItem. Auch nicht wenn ich z.B. es durch was anderes als WM_CREATE aufrufe in meiner WndProc.

    mfg
    Fred



  • Das geht nicht weil GetDlgItem vom DIALOGMANAGER behandelt wird, welcher nur bei CreateDialog() oder DialogBox() tätig/aufgerufen/bereitgestellt wird!

    Deshalb heißt die Funktion GetDlgItem, weil es sich um ein DIALOG-Item handeln muß (= vom DialogManager verwaltet)!



  • Hmm, hatte ich mir schon fast gedacht, aber es müsste doch ne Möglichkeit geben den Handle auch in der WndProc zu bekommen.
    Oder ist das komplett unmöglich?

    mfg
    Fred



  • Fang in deiner Message-Loop IsDialogMessage ab. Damit könnte es eventuell gehen.



  • Original erstellt von Hepi:
    **Das geht nicht weil GetDlgItem vom DIALOGMANAGER behandelt wird, welcher nur bei CreateDialog() oder DialogBox() tätig/aufgerufen/bereitgestellt wird!

    Deshalb heißt die Funktion GetDlgItem, weil es sich um ein DIALOG-Item handeln muß (= vom DialogManager verwaltet)!**

    Nein!

    You can use the GetDlgItem function with any parent-child window pair, not just with dialog boxes.

    Hat also nichts mit IsDialogMessage oder dem DIALOGMANAGER zu tun.



  • OK, egal habe jetzt die Controls direkt erstellt im Source mit Handle etc. das andere ist zwar einfacher aber nun ja..

    mfg
    Fred



  • Du solltest dich mal Fragen ob der Dialog überhaupt schon besteht.
    Wenn nein dann kannst du auch nicht auf Elemente darauf zugreifen


Anmelden zum Antworten