PDA

Visualizza la versione completa : [C++] Convertire comando di un messaggio Windows in stringa


stefanoB
06-06-2007, 18:20
Credo di chiedere forse una cosa bizzarra!!!
E' possibile convertire il contenuto, dei 16 bit di LOWORD(wParam) quale identificatore del controllo spedito a WM_COMMAND, in una stringa?

zero85
06-06-2007, 20:38
Se vuoi semplicemente convertire il valore restituito dalla macro LOWORD, che č di tipo WORD, definito come unsigned short int, puoi semplicemente fare una cosa del genere:



LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
WORD wmId, wmEvent;
TCHAR msg[32];

switch (message)
{
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);

if(wmEvent == BN_CLICKED)
{
switch(wmId)
{

case 0x500:
wsprintf(msg,_T("Cliccato Id: %hu"),wmId);
MessageBox(hWnd,msg,_T("Cliccato"),32);
break;
}
}
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}


Ovviamente la message box restituirā il messaggio "Cliccato id: 1280". Spero di aver capito bene cosa intendevi :ciauz:

stefanoB
13-06-2007, 18:38
Originariamente inviato da zero85
Se vuoi semplicemente convertire il valore restituito dalla macro LOWORD, che č di tipo WORD, definito come unsigned short int, puoi semplicemente fare una cosa del genere:



LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
WORD wmId, wmEvent;
TCHAR msg[32];

switch (message)
{
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);

if(wmEvent == BN_CLICKED)
{
switch(wmId)
{

case 0x500:
wsprintf(msg,_T("Cliccato Id: %hu"),wmId);
MessageBox(hWnd,msg,_T("Cliccato"),32);
break;
}
}
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}


Ovviamente la message box restituirā il messaggio "Cliccato id: 1280". Spero di aver capito bene cosa intendevi :ciauz:

No, questa č la notifica del messaggio che il controllo manda alla window!!!
Grazie lo stesso.

Comunque ho evitato di trasformarlo in char lavorando con un intero in questo modo:

unsigned int mItem=LOWORD(wParam);

Loading