Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2001
    Messaggi
    372

    [c++ api WM_COMMAND LOWORD(wParam) convertirlo in char* !?!]

    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?

  2. #2
    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:

    codice:
    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

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2001
    Messaggi
    372
    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:

    codice:
    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
    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);

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.