SennyK Temat założony przez niniejszego użytkownika |
WinAPI - Sprawdzanie wciśniętego buttona.. » 2016-04-21 20:47:29 Witam. Jestem tutaj nowy, więc witam programistów :P A więc tak.. Ucze się od dziś WinAPI no i mam pare problemów... Zrobiłem okno windowsowe, pobawiłem się troche w nim a teraz mam pytanie... Jak zrobić sprawdzenie naciśniętego buttona w MessageBoxie? W poradniku było tylko opisane jak sprawdzić naciśnięty button ale w oknie głównym.. Oto mój kod: LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ) { switch( msg ) { case WM_CLOSE: MessageBox( hwnd, "Czy na pewno chcesz wyjść?", "Wyjście", MB_ICONINFORMATION | MB_OKCANCEL ); switch() { case ID_OK: DestroyWindow( hwnd ); break; case ID_CANCEL: return DefWindowProc( hwnd, msg, wParam, lParam ); break; } break; case WM_DESTROY: PostQuitMessage( 0 ); break; default: return DefWindowProc( hwnd, msg, wParam, lParam ); } }
Moge pomógłby ktoś? Jestem amatorem w WinAPI... P.S. Umiem bardzo dobrze C++ ale tego czystego konsolowego... przyda mi sie w WinAPI czy nie za bardzo? Chodzi mi o takie funkcje jak np: rand srand itd itp.. Pozdrawiam Sennyk |
|
Gibas11 |
» 2016-04-21 21:02:53 WinAPI ogranicza Cię do jednej platformy, jak uczysz się jeden dzień to lepiej odpuścić i zająć się Qt, są fajne narzędzia jak Qt creator itp. Co do samego pytania, to chyba jest ok, ale kawałek MessageBox( hwnd, "Czy na pewno chcesz wyjść?", "Wyjście", MB_ICONINFORMATION | MB_OKCANCEL ); powinieneś przenieść do switcha, o tak: switch( MessageBox( hwnd, "Czy na pewno chcesz wyjść?", "Wyjście", MB_ICONINFORMATION | MB_OKCANCEL ) ) Bo nie chodzi Ci chyba o same przyciski, tylko efekt wyboru użytkownika, tak? |
|
SennyK Temat założony przez niniejszego użytkownika |
no tak, masz racje, ale.. » 2016-04-22 22:34:23 no tak, ale ja nie moge korzystać, z żadnych kreatorów, tylko musi to być czysty kod C++ na zaliczenie z podstaw programowania, abym dostał celujący na koniec roku..
Rozumiem, ze nalezy dac to do switch'a, ale jak zrobić case'y z id tych przycisków (ID_OK i ID_CANCEL) nie działają... Mam czas do czerwca, żeby to ogarnąć :) |
|
j23 |
» 2016-04-23 10:42:56 Nie ID_OK i ID_CANCEL, tylko IDOK i IDCANCEL. Czytaj dokumentację! |
|
Gibas11 |
» 2016-04-23 14:32:38 @up Że też nie zauważyłem. :\
@autor 1. Qt nie narzuca używania kreatorów, to tylko możliwość. Tak czy inaczej kod jest czysty i bardziej OO. 2. Kreator wypluwa Ci zwykły plik (chyba xml), standardowy format do projektowania UI w Qt, nikt nie każe Ci mówić, że coś to zrobiło za Ciebie. ;) |
|
SennyK Temat założony przez niniejszego użytkownika |
» 2016-04-25 20:29:55 no tak, tylko jak mi facet z P.Programowania zapytaj co i jak? albo coś mi zmieni to co ja mu powiem?
Wiem Ze IDOK a nie ID_OK poprostu pomyliło mi się..
Chodzi mi o proste sprawdzenie naciśniętego klawisza, a jak to jest takie trudne to poprosze o coś łatwiejszego w którym napisze aplikacje na windowsa okienkowa w czystym (powtarzam czystym) C++ tak jak to sie robi na CMD i WinAPI, bez zadnych kreatorów... |
|
pekfos |
» 2016-04-25 20:51:10 Wiem Ze IDOK a nie ID_OK poprostu pomyliło mi się.. |
No i co z tym teraz? Działa, nie działa? albo coś mi zmieni to co ja mu powiem? |
Możesz mu powiedzieć, że ci to nie robi różnicy, kod i tak miałeś skopiowany z kursu. |
|
carlosmay |
» 2016-04-25 22:20:52 Może coś takiego się przyda? #define ID_BUTTON_1 501
WinMain() { g_hButton_1 = CreateWindowEx( WS_EX_CLIENTEDGE,( LPCWSTR ) _T( "BUTTON" ), _T( "Button 1" ), WS_CHILD | WS_VISIBLE | WS_BORDER, 30, 40, 150, 30, hOkno,( HMENU ) ID_BUTTON_1, hInst, NULL ); }
LRESULT CALLBACK WndProc( HWND hOkno, UINT message, WPARAM wParam, LPARAM lParam ) { switch( message ) { case WM_COMMAND: { switch( wParam ) { case ID_BUTTON_1: MessageBox( NULL, _T( "Użyto Przycisk 1" ), NULL, MB_ICONINFORMATION ); break; } case WM_DESTROY: PostQuitMessage( 0 ); break; default: return DefWindowProc( hOkno, message, wParam, lParam ); break; } return 0; } |
|
« 1 » 2 |