Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di mamo139
    Registrato dal
    May 2005
    residenza
    Londra
    Messaggi
    841

    [c/c++] messaggi

    se il bottone destro del mouse è 0x0201 il tasto A cos'è????

    grazie ciao!!!!

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [c/c++] messaggi

    Originariamente inviato da mamo139
    se il bottone destro del mouse è 0x0201 il tasto A cos'è????
    Non è affatto chiara la tua domanda! Cosa vuoi sapere: il codice ASCII del carattere 'A'?? Lo scan-code che invia la tastiera per il tasto 'A'?? E sopratutto con quali funzioni di gestione dell'input??

    Il codice ASCII della 'A' è 65 (0x41) e lo scan-code (se non mi sbaglio) è 0x1C sulle tastiere AT.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Moderazione

    Originariamente inviato da mamo139
    se il bottone destro del mouse è 0x0201 il tasto A cos'è????
    Spreca un po' di tempo nel porre le tue domande aggiungendo qualche dettaglio in più, visto che spesso i titoli non aiutano ("messaggi" è forse un po' criptico e sintetico, oltreché oscuro) e il testo neppure (così impedisci anche di risalire ad un titolo decente da attribuire alla discussione, cosa che normalmente dovresti fare tu, non io).
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #4
    Utente di HTML.it L'avatar di mamo139
    Registrato dal
    May 2005
    residenza
    Londra
    Messaggi
    841
    scusami ma la guida che sto leggendo li chiama prorpio "messaggi"

    i messaggi (vedi anche ciclo dei messaggi)
    codice:
    while(GetMessage(&Msg, NULL, 0, 0) > 0)
    {
        TranslateMessage(&Msg);
        DispatchMessage(&Msg);
    }
    nella programmazione win32 a finistre da quel che ho capito sono degli input che puoi dare al programma...
    la guida mi fa degli esempi
    #define WM_INITDIALOG 0x0110
    #define WM_COMMAND 0x0111

    #define WM_LBUTTONDOWN 0x0201
    io vorrei però avere una lista completa di anche tutti i tasti...
    spero di essere stato chiaro questa volta...
    grazie ciao

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Moderazione

    Originariamente inviato da mamo139
    scusami ma la guida che sto leggendo li chiama prorpio "messaggi"
    Anche la guida di un biologo parla genericamente di "cellule", ma ovviamente ci aggiunge qualcosa di contorno per contestualizzare la cosa.

    Ho corretto il titolo.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  6. #6
    Ti servono i file di intestazione di Windows, inclusi nel platform SDK (ad es. windows.h, winbase.h, ...); nello specifico la definizione delle costanti dei messaggi è situata nel file winuser.h.
    Il platform SDK, che include un'ampia guida di riferimento alle API, esempi, le intestazioni in questione e molto altro, può essere scaricata a questo indirizzo: http://www.microsoft.com/downloads/d...displaylang=it
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da mamo139
    i messaggi (vedi anche ciclo dei messaggi)
    codice:
    while(GetMessage(&Msg, NULL, 0, 0) > 0)
    {
        TranslateMessage(&Msg);
        DispatchMessage(&Msg);
    }
    nella programmazione win32 a finistre da quel che ho capito sono degli input che puoi dare al programma...
    la guida mi fa degli esempi
    #define WM_INITDIALOG 0x0110
    #define WM_COMMAND 0x0111

    #define WM_LBUTTONDOWN 0x0201
    io vorrei però avere una lista completa di anche tutti i tasti...
    spero di essere stato chiaro questa volta...
    grazie ciao
    Ok ... è già decisamente più chiaro. Stiamo quindi parlando di programmazione Win32.
    Quelli che tu chiami "input da dare al programma", sono dei messaggi. In Win32 ogni thread ha la sua coda dei messaggi e tutta l'interfaccia utente (GUI) è gestita "ad eventi". Ogni messaggio ricevuto viene traslato con TranslateMessage (per quanto riguarda i virtual-key code) e poi "dispacciato" con DispatchMessage alla corretta window-procedure.

    All'interno della struttura MSG è contenuto il campo 'message' che contiene appunto il messaggio come quelli che hai indicato (WM_INITDIALOG, ecc....).

    I messaggi che credo ti possano interessare (per la gestione della tastiera, intendo) sono WM_KEYDOWN e WM_KEYUP. Per questi messaggi il parametro WPARAM contiene un codice che si chiama virtual-key code. L'elenco di questi codici lo trovi <qui>.

    Poi comunque non so cosa devi fare di preciso. Sappi solo che se vuoi fare qualche gestione di questi messaggi non la devi fare in quel loop dei messaggi ma all'interno di una window-procedure.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  8. #8
    Utente di HTML.it L'avatar di mamo139
    Registrato dal
    May 2005
    residenza
    Londra
    Messaggi
    841
    Originariamente inviato da andbin
    Poi comunque non so cosa devi fare di preciso. Sappi solo che se vuoi fare qualche gestione di questi messaggi non la devi fare in quel loop dei messaggi ma all'interno di una window-procedure.
    intendi qua dentro???
    codice:
    LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
    {
        switch(msg)
        {
            case WM_CLOSE:
                DestroyWindow(hwnd);
            break;
            case WM_DESTROY:
                PostQuitMessage(0);
            break;
            default:
                return DefWindowProc(hwnd, msg, wParam, lParam);
        }
        return 0;
    }
    quindi nel codice per intendere ad esempio la A dovrei scrivere
    WM_KEYDOWN 41????

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da mamo139
    intendi qua dentro???
    Esatto. Esempio:
    codice:
    LRESULT CALLBACK WndProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
    {
        switch (uMsg)
        {
            ....
            ....
    
            case WM_KEYDOWN:
                if (wParam == 'A')
                {
                    ....
                }
                return 0;
    
            ....
            ....
        }
    
        return DefWindowProc (hWnd, uMsg, wParam, lParam);
    }
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  10. #10
    Programmando in win32 devi utilizzare un switch contenuto nella CALLBACK che processi i vari case ai quali fai corrispondere la pressione dei tasti.
    Definisci all'interno di questo switch i case di cui hai bisogno.

    Ciao!

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 © 2025 vBulletin Solutions, Inc. All rights reserved.