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

Problem z Obiektami Kontrolnymi.

Ostatnio zmodyfikowano 2013-07-29 17:11
Autor Wiadomość
aspoka
Temat założony przez niniejszego użytkownika
Problem z Obiektami Kontrolnymi.
» 2013-07-28 12:01:52
To moja pierwsza wiadomość na blogu, więc witam wszystkich :}. Mam problem z obiektami kontrolnymi w Dev-C++. Problem polega na tym, że piszę program i wszystko się dobrze kompiluje, ale gdy włączam program to ramka, przycisk,pole wyboru, pole opcji i pole tekstowe nie wyświetla się.
Tutaj podaje kod źródłowy:
C/C++
#include <windows.h>

LPSTR NazwaKlasy = "Klasa Okna";
MSG Komunikat;

LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam,
LPARAM lParam );

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )


{
   
    WNDCLASSEX ko;
    ko.cbSize = sizeof( WNDCLASSEX );
    ko.style = 0;
    ko.lpfnWndProc = WndProc;
    ko.cbClsExtra = 0;
    ko.cbWndExtra = 0;
    ko.hInstance = hInstance;
    ko.hIcon = LoadIcon( NULL, IDI_APPLICATION );
    ko.hCursor = LoadCursor( NULL, IDC_ARROW );
    ko.hbrBackground =( HBRUSH )( COLOR_WINDOW + 1 );
    ko.lpszMenuName = NULL;
    ko.lpszClassName = NazwaKlasy;
    ko.hIconSm = LoadIcon( NULL, IDI_APPLICATION );
   
   
    if( !RegisterClassEx( & ko ) )
         return 0;
   
    HWND hwnd;
    hwnd = CreateWindowEx( WS_EX_CLIENTEDGE, NazwaKlasy, "Moje okno", WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT, CW_USEDEFAULT, 500, 300, NULL, NULL, hInstance, NULL );
   
    ShowWindow( hwnd, nCmdShow );
    UpdateWindow( hwnd );
   
    while( GetMessage( & Komunikat, NULL, 0, 0 ) )
    {
       
        TranslateMessage( & Komunikat );
        DispatchMessage( & Komunikat );
       
    }
    return Komunikat.wParam;
   
    HWND Ramka;
   
    Ramka = CreateWindowEx( 0, "BUTTON", "Ramka", WS_CHILD
    | WS_VISIBLE | BS_GROUPBOX | WS_BORDER,
    480, 280, 10, 10, hwnd, NULL, hInstance, NULL );
   
   
}
LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )

{
   
    switch( msg )
    {
       
    case WM_CLOSE:
        DestroyWindow( hwnd );
        break;
    case WM_DESTROY:
        PostQuitMessage( 0 );
        break;
        default:
        return DefWindowProc( hwnd, msg, wParam, lParam );
       
    }
   
   
    return 0;
}
Proszę o pomoc w korekcie tego programu.
Z góry dziękuje ^.^

P-88924
Admixior
» 2013-07-29 00:13:39
Widzę że jesteś początkujący w c++ (i w ogóle).
1. To forum nie blog :)

2.
wszystko się dobrze kompiluje
Jeżeli będziesz dalej pisać to szybko się zorientujesz że jak coś się skompiluje to dopiero zacznie się poprawianie błędów.

3. Jeśli nie wiesz to wiedz: program wykonuje się z góry na dół bez względu na wszystko. Nie obchodzi go czy jest to dobre.

4. Jeśli nie wiesz co znaczy "return cośtam" to wiedz że to wyjście z funkcji

5. Jeśli wychodzisz z funkcji "main" lub "WinMain" to wiedz że wtedy się program zakończy

6. Patrząc na powyższe dwa pkt. możesz wywnioskować że :
C/C++
ShowWindow( hwnd, nCmdShow ); //pokazanie okienka
UpdateWindow( hwnd ); //zaaktualizowanie tego co wyświetla (pokazanie wyszystkich nowych kontrolek itp.)

while( GetMessage( & Komunikat, NULL, 0, 0 ) ) //główna pętla podczas której okienko robi to co ma robić (wyświetla się i pracuje)
{
   
    TranslateMessage( & Komunikat );
    DispatchMessage( & Komunikat );
   
}

//instrukcje kończące program
//i wyjście z programu
return Komunikat.wParam; //////////////  wyjście z funkcji WinMain == wyjście z programu

//to niżesj się nie wykona
HWND Ramka;

Ramka = CreateWindowEx( 0, "BUTTON", "Ramka", WS_CHILD
| WS_VISIBLE | BS_GROUPBOX | WS_BORDER,
480, 280, 10, 10, hwnd, NULL, hInstance, NULL );

7. Skoro jest pkt. 3 to mam nadzieję że będziesz wiedział/a gdzie umieścić to coś co jest źle umieszczone
P-88973
aspoka
Temat założony przez niniejszego użytkownika
» 2013-07-29 17:11:12
Ok. poradziłem sobie. dzięki za pomoc.
Temat zamknięty.
P-89002
« 1 »
  Strona 1 z 1