Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Galera,
Tô precisando de uma força em C++ aqui.. a problemática é a seguinte: crio um Windows Application no Dev, tem que ser lá porque o form não pode pedir nenhuma DLL ou coisa do tipo (pra rodar em qualquer windows, o Builder ele pede umas bibliotecas), coloco dois botões, quando clicar nesses botões, deve-se executar uma ação qualquer, por exemplo abrir um MessageBox, mas devo diferenciar quais dos botões é clicado.. como posso saber qual o botão que foi clicado?? Segue abaixo até onde cheguei, se alguém puder me ajudar por favor eu agradeceria muito:
#include <windows.h> / Declare Windows procedure /LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM); / Make the class name into a global variable /char szClassName[ ] = "WindowsApp"; int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nFunsterStil) { HWND hwnd; / This is the handle for our window / MSG messages; / Here messages to the application are saved / WNDCLASSEX wincl; / Data structure for the windowclass / / The Window structure / wincl.hInstance = hThisInstance; wincl.lpszClassName = szClassName; wincl.lpfnWndProc = WindowProcedure; / This function is called by windows / wincl.style = CS_DBLCLKS; / Catch double-clicks / wincl.cbSize = sizeof (WNDCLASSEX); / Use default icon and mouse-pointer / wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION); wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION); wincl.hCursor = LoadCursor (NULL, IDC_ARROW); wincl.lpszMenuName = NULL; / No menu / wincl.cbClsExtra = 0; / No extra bytes after the window class / wincl.cbWndExtra = 0; / structure or the window instance / / Use Windows's default color as the background of the window / wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND; / Register the window class, and if it fails quit the program / if (!RegisterClassEx (&wincl)) return 0; / The class is registered, let's create the program/ hwnd = CreateWindowEx ( 0, / Extended possibilites for variation / szClassName, / Classname / "Windows App", / Title Text / WS_OVERLAPPEDWINDOW, / default window / CW_USEDEFAULT, / Windows decides the position / CW_USEDEFAULT, / where the window ends up on the screen / 544, / The programs width / 375, / and height in pixels / HWND_DESKTOP, / The window is a child-window to desktop / NULL, / No menu / hThisInstance, / Program Instance handler / NULL / No Window Creation data / ); // botão 1 HWND hwndButton1 = CreateWindow("BUTTON", "PROGRAMA 1", WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON, 10, // starting x position 20, // starting y position 100, // button width 100, // button height hwnd, // parent window NULL, // No menu (HINSTANCE) 0, //(HINSTANCE) GetWindowLong(hwnd, GWL_HINSTANCE), NULL); // pointer not needed // botão 2 HWND hwndButton2 = CreateWindow("BUTTON", "PROGRAMA 2", WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON, 120, // starting x position 20, // starting y position 100, // button width 100, // button height hwnd, // parent window NULL, // No menu (HINSTANCE) GetWindowLong(hwnd, GWL_HINSTANCE), NULL); // pointer not needed / Make the window visible on the screen / ShowWindow (hwnd, nFunsterStil); / Run the message loop. It will run until GetMessage() returns 0 / while (GetMessage (&messages, NULL, 0, 0)) { / Translate virtual-key messages into character messages / TranslateMessage(&messages); / Send message to WindowProcedure / DispatchMessage(&messages); } / The program return-value is 0 - The value that PostQuitMessage() gave / return messages.wParam;} / This function is called by the Windows function DispatchMessage() / LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){ switch (message) / handle the messages / { case WM_DESTROY: PostQuitMessage (0); / send a WM_QUIT to the message queue / break; case WM_COMMAND: if(LOWORD(wParam) == BN_CLICKED) { MessageBox(hwnd, "O botão que foi clicado é o ????", "teste", MB_OK); }; break; default: / for messages that we don't deal with / return DefWindowProc (hwnd, message, wParam, lParam); } return 0;}
Abraços
André
Carregando comentários...