Skocz do zawartości

Re: Pliki zasobow - dialogi


Aspect

Recommended Posts

TinS napisał:
Powinienem zajac sie zbieraniem znaczkow, a nie programowaniem - za glupi na to jestem :(

Nie, to jest wszystko proste, tylko ja tak zamieszalem - sorry.
Oto przykladowy kod o ktory prosiles, moze bardizej Ci pomoze. W razie jak bys nie wiedzial co robia niektore funkcje to sobie poczytaj o nich na stronei https://msdn.microsoft.com/library/. No dobra, daje juz ten kod:
Plik .rc:

#include <windows.h>
#include "resource.h"

IDM_MAIN MENU
{
        POPUP "Program"
        {
                MENUITEM "Okno dialogowe",IDM_DIALOG
                MENUITEM SEPARATOR
                MENUITEM "Zamknij",IDM_CLOSE
        }
}

IDD_DIALOGBOX DIALOGEX 0, 0, 240, 80
        STYLE DS_CENTER | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX
        CAPTION "Dialog Box"
        FONT 8, "MS Sans Serif", 0, 0, 0x0
        {
                LTEXT           "To jest przykladowy DialogBox.",IDC_STATIC,10,11,120,11,SS_NOPREFIX
            DEFPUSHBUTTON   "OK",IDOK,180,10,50,15,WS_GROUP
            PUSHBUTTON      "Cancel",IDCANCEL,180,27,50,15
        }

Plik resource.h:

#define IDC_STATIC        -1
#define IDM_DIALOG      100
#define IDM_CLOSE       101

W pliku .cpp musisz zamienic linie:

wincl.lpszMenuName = NULL;

na

wincl.lpszMenuName = "IDM_MAIN";

.
Do funkcji WindowProcedure dodaj:

        case WM_COMMAND:
                switch(LOWORD(wParam))
                {
                        case IDM_DIALOG:
                    DialogBox(GetModuleHandle(NULL),"IDD_DIALOGBOX",hwnd,(DLGPROC)DialogProcedure);
                    break;
                        case IDM_CLOSE:
                        PostMessage(hwnd,WM_CLOSE,0,0);
                        break;
                }

,
i do calego kodu dodaj jeszcze funkcje:

LRESULT CALLBACK DialogProcedure(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam)
{
        switch (message)
        {
                case WM_INITDIALOG:
                                return TRUE;

                case WM_COMMAND:
                        if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
                        {
                                EndDialog(hdlg, LOWORD(wParam));
                                return TRUE;
                        }
                        break;
        }
    return FALSE;
}

Mam nadziueje, ze bedzie dzialac.
Powodzenia.

Link do komentarza
Udostępnij na innych stronach

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gość
Odpowiedz...

×   Wkleiłeś zawartość bez formatowania.   Usuń formatowanie

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Utwórz nowe...