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

[WinApi] Okna Dialogowe

Ostatnio zmodyfikowano 2011-04-07 16:33
Autor Wiadomość
wojtek1150
Temat założony przez niniejszego użytkownika
[WinApi] Okna Dialogowe
» 2011-04-07 15:52:56
Witam wszystkich.

Po zapoznaniu się z kursem podstawowym i dodatkowym c++ postanowiłem przejść do WinApi. Jednak stanąłem na oknach dialogowych, a konkretnie na ich kompilacji. Otóż zrobiłem sobie dialog.h z treścią:

C/C++
#define IDD_MOJDIALOG 200
#define IDC_LABEL 201

Jednak żaden programik nie kompiluje mi się:

||=== projekt3, Debug ===|
C:\Users\Wojtek\CPP\WInAPI\projekt3\main.cpp||In function 'int WinMain(HINSTANCE__*, HINSTANCE__*, CHAR*, int)':|
C:\Users\Wojtek\CPP\WInAPI\projekt3\main.cpp|20|error: 'hwnd' was not declared in this scope|
C:\Users\Wojtek\CPP\WInAPI\projekt3\main.cpp|28|error: 'msg' was not declared in this scope|
C:\Users\Wojtek\CPP\WInAPI\projekt3\main.cpp|34|error: 'msg' was not declared in this scope|
C:\Users\Wojtek\CPP\WInAPI\projekt3\main.cpp|20|warning: unused variable 'hPrzyc'|
||=== Build finished: 3 errors, 1 warnings ===|

Sprawdzałem nawet ten co jest w 1 części kursu z oknami:

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

// Prototypy funkcji obsługujących komunikaty.
// Sztuk dwie, jedna dla okna głównego, jedna dla dialogu ;-)

LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM );
BOOL CALLBACK DlgProc( HWND, UINT, WPARAM, LPARAM );

int WINAPI WinMain( HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument,
int nFunsterStil )
{
   
    //
    // Tworzenie okna - saaaam to sobie zrób ;-)
    //
   
    // Tworzymy jakiś przycisk do wywołania dialogu
   
    HWND hPrzyc = CreateWindowEx( 0, "BUTTON", "Dialog", WS_CHILD | WS_VISIBLE,
    5, 5, 50, 25, hwnd, NULL, hThisInstance, NULL );
   
    // Pokazujemy główne okno
    ShowWindow( hwnd, nFunsterStil );
   
   
    // No i standardowo - pętelka
    while( GetMessage( & msg, NULL, 0, 0 ) )
    {
        TranslateMessage( & msg );
        DispatchMessage( & msg );
    }
   
    return msg.wParam;
}

// Procedura okna
LRESULT CALLBACK WndProc( HWND hwnd, UINT mesg, WPARAM wParam, LPARAM lParam )
{
    switch( mesg )
    {
    case WM_COMMAND:
        {
            // Tutaj wywołujemy nasz dialog
            int ret = DialogBox( GetModuleHandle( NULL ), MAKEINTRESOURCE( 200 ), hwnd, DlgProc );
            if( ret == IDOK )
                 MessageBox( hwnd, "Wybrałeś \'Fajnie\' w oknie dialogowym!", "Test", MB_ICONINFORMATION );
            else if( ret == IDCANCEL )
                 MessageBox( hwnd, "Wybrałeś \'Anuluj\' w oknie dialogowym!", "Test", MB_ICONINFORMATION );
           
        }
        break;
       
    case WM_DESTROY:
        PostQuitMessage( 0 );
        break;
       
        default:
        return DefWindowProc( hwnd, mesg, wParam, lParam );
    }
   
    return 0;
}

// Procedura dialogowa
BOOL CALLBACK DlgProc( HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam )
{
    switch( Msg )
    {
    case WM_COMMAND:
        {
            // reakcja na przyciski
            switch( LOWORD( wParam ) )
            {
            case IDOK: EndDialog( hwnd, IDOK ); break;
            case IDCANCEL: EndDialog( hwnd, IDCANCEL ); break;
            }
        }
        break;
       
        default: return FALSE;
    }
   
    return TRUE;
}


Jakieś sugestie? Sprawdzałem w kilku środowiskach: dev4 i 5, code block, visual2008, qt creator, ale nic...

Pozdrawiam
P-30403
DejaVu
» 2011-04-07 16:33:54
Używasz zmiennych, które nie istnieją. Kompilator wyraźnie to napisał.
P-30405
« 1 »
  Strona 1 z 1