Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[winAPI][C++] Problemy z otworzeniem okna dialogowego

Ostatnio zmodyfikowano 2014-01-18 16:41
Autor Wiadomość
mikson
Temat założony przez niniejszego użytkownika
[winAPI][C++] Problemy z otworzeniem okna dialogowego
» 2014-01-15 19:57:05
Witam.

Mam problemy z otworzeniem okna dialogowego. Robię to w ten sposób:

C/C++
//.......
else if( LOWORD( wParam ) == 108 ) //108 to ID przycisku w MENU aplikacji
{
    DialogBox( HINSTANCE hInstance, LPCTSTR lpTemplate, HWND hWndParent, DLGPROC lpDialogFunc )
}
//......

Ale kompilator mówi:

In function `LRESULT WindowProcedure(HWND__*, UINT, WPARAM, LPARAM)':
expected primary-expression before "hInstance"
expected primary-expression before "lpTemplate"
expected primary-expression before "hWndParent"
expected primary-expression before "lpDialogFunc"
expected `;' before '}' token
[Build Error]  [main.o] Error 1

Na wszelki wypadek, kod okna dialogowego w pliku *.rc :

C/C++
#include <windows.h>
#include "dialog.h"

IDD_MOJDIALOG DIALOG DISCARDABLE 20, 20, 200, 66
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Mój własny dialog"
FONT 8, "MS Sans Serif"
{
    DEFPUSHBUTTON "&Fajnie!", IDOK, 124, 18, 50, 14
    PUSHBUTTON "&Anuluj", IDCANCEL, 124, 35, 50, 14
    LTEXT "To jest okno dialogowe", IDC_LABEL, 16, 18, 80, 33
}

BOOL CALLBACK DlgProc( HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam )
{
    switch( Msg )
    {
    case WM_INITDIALOG:
        {
        }
        break;
    case WM_COMMAND:
        {
        }
        break;
        default: return FALSE;
    }
    return TRUE;
}
P-102260
Monika90
» 2014-01-16 11:05:27
DialogBox( HINSTANCE hInstance, LPCTSTR lpTemplate, HWND hWndParent, DLGPROC lpDialogFunc )
» Kurs C++ » Poziom 2Funkcje - pierwsze starcie lekcja

Na wszelki wypadek, kod okna dialogowego w pliku *.rc :
C/C++
BOOL CALLBACK DlgProc( HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam )
Procedurę okna dialogowego należy umieścić w pliku cpp, a nie rc
P-102290
mikson
Temat założony przez niniejszego użytkownika
» 2014-01-16 20:36:46
Ok, zrozumiałem i poprawiłem swoje błędy, ale nie wiem niestety jeszcze do czego służą
lpTemplate
 i
lpDialogFunc
.
Co powinienem tam zdefiniować?
Mój kod wywołania okna wygląda tak:
C/C++
DialogBox( hInstance, LPCTSTR lpTemplate /*Co to?*/, hwnd, DLGPROC lpDialogFunc /*Co to?*/ );
P-102326
Monika90
» 2014-01-16 20:43:19
lpTemplate to nazwa szablonu okna dialogowego w pliku rc (albo jego identyfikator),
a lpDialogFunc to wskaźnik do procedury okna, czyli u ciebie będzie tak:
C/C++
DialogBox( hInstance, MAKEINTRESOURCE( IDD_MOJDIALOG ), hwnd, DlgProc );

To są pytania o elementarne sprawy, które na pewno są opisane w kursie, czytaj uważnie kurs.
P-102328
mikson
Temat założony przez niniejszego użytkownika
» 2014-01-17 17:47:15
Kompilator mówi
`IDD_MOJDIALOG' undeclared (first use this function)
 mimo wpisu
#define IDD_MOJDIALOG 200
 w pliku *.rc.
P-102377
Monika90
» 2014-01-18 12:15:25
#define IDD_MOJDIALOG 200
To powinieneś dać do jakiegoś pliku nagłówkowego i inkludować go zarówno w pliku *.rc, jak i w *.cpp
P-102427
mikson
Temat założony przez niniejszego użytkownika
Zamykam.
» 2014-01-18 16:41:26
Wielkie dzięki, już działa!
P-102456
« 1 »
  Strona 1 z 1