Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    331

    C per Terminali Mobili: problemi con SHCMBM_OVERRIDEKEY

    Salve a tutti, sto provando a gestire i tasti del cellulare e ho trovato questi link utili al mio scopo:

    http://msdn.microsoft.com/en-us/library/bb431783.aspx

    http://msdn.microsoft.com/en-us/library/ms912123.aspx

    ho provato quindi a implementare il seguente codice:

    codice:
    ON_MESSAGE(WM_HOTKEY, &CTestSerialLibPDADlg::OnHotKey)
    
    void CTestSerialLibPDADlg::SetKeys() {
      
     SendMessage(SHCMBM_OVERRIDEKEY, VK_TTALK, MAKELPARAM(SHMBOF_NODEFAULT |  SHMBOF_NOTIFY, SHMBOF_NODEFAULT |  SHMBOF_NOTIFY)); 
      SendMessage(SHCMBM_OVERRIDEKEY, VK_TEND, MAKELPARAM(SHMBOF_NODEFAULT |  SHMBOF_NOTIFY, SHMBOF_NODEFAULT |  SHMBOF_NOTIFY)); 
      SendMessage(SHCMBM_OVERRIDEKEY, VK_TBACK, MAKELPARAM(SHMBOF_NODEFAULT |  SHMBOF_NOTIFY, SHMBOF_NODEFAULT |  SHMBOF_NOTIFY)); 
      SendMessage(SHCMBM_OVERRIDEKEY, VK_THOME, MAKELPARAM(SHMBOF_NODEFAULT |  SHMBOF_NOTIFY, SHMBOF_NODEFAULT |  SHMBOF_NOTIFY)); 
      SendMessage(SHCMBM_OVERRIDEKEY, VK_TPOWER, MAKELPARAM(SHMBOF_NODEFAULT |  SHMBOF_NOTIFY, SHMBOF_NODEFAULT |  SHMBOF_NOTIFY)); 
    
    }
    
    void CTestSerialLibPDADlg::RestoreKeys() {
      SendMessage(SHCMBM_OVERRIDEKEY, VK_TTALK, MAKELPARAM(SHMBOF_NODEFAULT |  SHMBOF_NOTIFY, 0)); 
      SendMessage(SHCMBM_OVERRIDEKEY, VK_TEND, MAKELPARAM(SHMBOF_NODEFAULT |  SHMBOF_NOTIFY, 0)); 
      SendMessage(SHCMBM_OVERRIDEKEY, VK_TBACK, MAKELPARAM(SHMBOF_NODEFAULT |  SHMBOF_NOTIFY, 0)); 
      SendMessage(SHCMBM_OVERRIDEKEY, VK_THOME, MAKELPARAM(SHMBOF_NODEFAULT |  SHMBOF_NOTIFY, 0)); 
      SendMessage(SHCMBM_OVERRIDEKEY, VK_TPOWER, MAKELPARAM(SHMBOF_NODEFAULT |  SHMBOF_NOTIFY, 0)); 
    }
    
    LRESULT CTestSerialLibPDADlg::OnHotKey(WPARAM wParam, LPARAM lParam) {
       SendDlgItemMessage(IDC_LIST1, LB_RESETCONTENT, 0, 0));
       
    
       switch (wParam)  {
    	 case 0:
    	   SendDlgItemMessage(IDC_LIST1, LB_ADDSTRING, 0, (LPARAM) (LPCTSTR) L"TSOFT1 Pressed");
    	   break;
    
         default:
    	   SendDlgItemMessage(IDC_LIST1, LB_ADDSTRING, 0, (LPARAM) (LPCTSTR) L"HotKey Pressed");
    	   break;
       }
    	
    UpdateWindow();    
    return 0;
    }
    Con l'idea di evitare che, premendo un tasto (tipo power o la chiamata) durante l'esecuzione dell'applicazione, venga eseguita la funzione del tasto medesimo.
    Sembra pero' che la cosa non funzioni a dovere.

    Sto provando su un Samsung con Windows mobile 5 e su HTC Touch HD (WinMobile 6.1) e HTC Touch HD2 (WinMobile 6.5) questi ultimi due programmati con Windows Mobile 6.5 Professional.

    Quello che succede e' che se premo, ad esempio, il tasto chiamata sembra inattivo pero' la OnHotKey non fa assolutamente nulla, mentre ad esempio il pulsante del power continua a fare quello che fa sempre.
    Dove sbaglio?

    ciao e grazie
    Sandro

  2. #2

    Re: C per Terminali Mobili: problemi con SHCMBM_OVERRIDEKEY

    Intanto leggendo nella documentazione c'è scritto i pulsanti per i quali puoi fare l'override della funzione, e il pulsante power non è tra quelli.

    Poi per ricevere notifica della pressione dei pulsanti secondo me hai sbagliato l'uso dei flag.

    codice:
    ON_MESSAGE(WM_HOTKEY, &CTestSerialLibPDADlg::OnHotKey)
    
    void CTestSerialLibPDADlg::SetKeys() {
      
     SendMessage(SHCMBM_OVERRIDEKEY, VK_TTALK, MAKELPARAM(SHMBOF_NODEFAULT |  SHMBOF_NOTIFY, SHMBOF_NOTIFY));
    lolide
    Java Programmer

    Informati

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    331
    Vero!
    Cmq la notifica non funziona lo stesso.
    E' possibile da codice far eseguire le funzionalita' di un tasto ad un altro tasto.
    Ad esempio se io volessi far eseguire lo stesso comportamento di VK_TTALK a VK_TEND o VK_TPOWER sarebbe possibile?

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.