comlaterbok Temat założony przez niniejszego użytkownika |
Problem z WinApi » 2011-10-30 21:23:48 Jestem początkujący w tj bibliotece , i może to głupi problem , ale głowię się nad nim i nie wiem... Program działał , dopóki nie dałem w nim funkcji LPSTR okno2( void ) { HWND hwnd; hwnd = CreateWindowEx( WS_EX_CLIENTEDGE, NazwaKlasy, "Save Web-Site", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 480, 480, NULL, NULL, hInstance, NULL ); if( hwnd == NULL ) { MessageBox( NULL, "Okno odmówiło przyjścia na świat!", "Ale kicha...", MB_ICONEXCLAMATION ); return 1; } ShowWindow( hwnd, nCmdShow ); UpdateWindow( hwnd ); while( GetMessage( & Komunikat, NULL, 0, 0 ) ) { TranslateMessage( & Komunikat ); DispatchMessage( & Komunikat ); } return Komunikat.wParam; }
Błędy: C:\Dev-Cpp\main.cpp In function `int WinMain(HINSTANCE__*, HINSTANCE__*, CHAR*, int)': 38 C:\Dev-Cpp\main.cpp expected primary-expression before "okno2" 38 C:\Dev-Cpp\main.cpp expected `;' before "okno2" C:\Dev-Cpp\Makefile.win [Build Error] [main.o] Error 1
Jeżeli chodzi o typ zmiennej jaką funkcja ma mi zwracać , to próbowałem już każdej. Zostawiłem to , jako że jest to synonim char. Pomóżcie zielonemu :) Dzięki |
|
malan |
» 2011-10-30 21:34:18 |
|
comlaterbok Temat założony przez niniejszego użytkownika |
» 2011-10-30 21:38:34 #include <windows.h>
int okno2( void );
LPSTR NazwaKlasy = "Klasa Okienka"; 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 wc; wc.cbSize = sizeof( WNDCLASSEX ); wc.style = 0; wc.lpfnWndProc = WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon( NULL, IDI_APPLICATION ); wc.hCursor = LoadCursor( NULL, IDC_ARROW ); wc.hbrBackground =( HBRUSH )( COLOR_WINDOW + 1 ); wc.lpszMenuName = NULL; wc.lpszClassName = NazwaKlasy; wc.hIconSm = LoadIcon( NULL, IDI_APPLICATION ); if( !RegisterClassEx( & wc ) ) { MessageBox( NULL, "Wysoka Komisja odmawia rejestracji tego okna!", "Niestety...", MB_ICONEXCLAMATION | MB_OK ); return 1; } okno2(); int okno2( void ) { HWND hwnd; hwnd = CreateWindowEx( WS_EX_CLIENTEDGE, NazwaKlasy, "Save Web-Site", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 480, 480, NULL, NULL, hInstance, NULL ); if( hwnd == NULL ) { MessageBox( NULL, "Okno odmówiło przyjścia na świat!", "Ale kicha...", MB_ICONEXCLAMATION ); return 1; } ShowWindow( hwnd, nCmdShow ); UpdateWindow( hwnd ); while( GetMessage( & Komunikat, NULL, 0, 0 ) ) { TranslateMessage( & Komunikat ); DispatchMessage( & Komunikat ); } return Komunikat.wParam; } }
LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ) { switch( msg ) { case WM_CLOSE: MessageBox( NULL, "Czy napewno chcesz zamknąć program?", "Save Web-Site", MB_ICONQUESTION | MB_YESNO ); switch( msg ) { case IDYES: DestroyWindow( hwnd ); break; case IDNO: MessageBox( NULL, "Okej", "Save Web-Site", MB_ICONINFORMATION | MB_OK ); okno2(); break; } case WM_DESTROY: PostQuitMessage( 0 ); break; default: return DefWindowProc( hwnd, msg, wParam, lParam ); } return 0; }
Nadal nie idzie z int-em. To cały kod. |
|
malan |
» 2011-10-30 21:40:31 |
|
comlaterbok Temat założony przez niniejszego użytkownika |
» 2011-10-30 21:57:57 Dobrze. Powiedzmy , że uporałem się z tym problemem. Mam jeszcze jedno pytanie. Klikam w programie aby mi zamknął okno (krzyżyk). Wyskakuje mi pytanie czy na pewno , ja zmieniam zdanie i klikam "nie". Jak zrobić, aby po prostu zamknął mi komunikat i powrócił do okna głównego?
Ps. Wybór "Yes" "No" - czyli komunikat , jest zrobiony oczywiście w switch-u. |
|
comlaterbok Temat założony przez niniejszego użytkownika |
» 2011-10-30 22:31:02 Pomoże mi ktoś? |
|
DejaVu |
» 2011-10-30 23:03:17 |
|
szyx_yankez |
» 2011-10-30 23:12:05 LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ) { switch( msg ) { case WM_CLOSE: if( MessageBox( NULL, "Czy napewno chcesz zamknąć program?", "Save Web-Site", MB_ICONQUESTION | MB_YESNO ) == IDYES ) PostQuitMessage( 0 ), DestroyWindow( hwnd ); else MessageBox( NULL, "Okej", "Save Web-Site", MB_ICONINFORMATION | MB_OK ); break; case WM_DESTROY: PostQuitMessage( 0 ); break; default: return DefWindowProc( hwnd, msg, wParam, lParam ); } return 0; }
|
|
« 1 » |