Problema de programación de C Windows, ¿cómo recibir el mensaje de que se hace clic en el botón en una ventana?
Primero asigne una ID al botón y luego guarde su identificador (HWND estático) al crear. Escriba la función de respuesta en el mensaje WM_COMMAND y use el interruptor para seleccionarla. El siguiente código: #define BUTTON_ID 10011 //ID del botón
LRESULT CALLBACK WndProc(HWND hwnd, mensaje UINT, WPARAM wp, LPARAM lp)
{
HDC hdc;
PAINTSTRUCT ps;
estático HWND btnWnd;
estático bool flag=false;
cambiar(mensaje) p >
{
caso WM_CREATE: btnWnd =CreateWindow("Botón","Botón",WS_VISIBLE|WS_CHILD,
10, 10, 150, 120, hwnd, ( HMENU )BUTTON_ID, 0, 0); break; //El penúltimo es el ID de la subventana del botón
case WM_PAINT: break;
case WM_COMMAND: //Botón mensaje WM_COMMAND para manejar
switch(LOWORD(wp)) //El byte bajo de wParam es el ID del botón en el que se hizo clic
{ //¡Escribe algo a continuación!
case BUTTON_ID:
//SetWindowText(btnWnd, "¿Hacer clic en mí otra vez?");
if(flag==true)
{
SendMessage(btnWnd, WM_SETTEXT, 0, LPARAM("¿Por qué hacer clic en mí?"));
}
else p>
{
SendMessage(btnWnd, WM_SETTEXT, 0, LPARAM("¿Hacer clic de nuevo?"));
//SetWindowText(btnWnd, (LPCSTR)" Hacer clic");
}
flag = !flag;
//MessageBox(hwnd, "¿Por qué haces clic en mí?", "¡Haz clic en mí!", MB_OK);
romper;
predeterminado: romper
}
caso WM_DESTROY; PostQuitMessage(0); devuelve 0;
predeterminado: descanso
}
devuelve DefWindowProc(hwnd, mensaje, wp, lp);
p>
}