E 'possibile dire Scintilla di ignorare certe sequenze di tasti e passarli alla finestra di padre?

StackOverflow https://stackoverflow.com/questions/1982448

Domanda

Vorrei Scintilla di ignorare determinate combinazioni di tasti come, Ctrl + Invio o Ctrl + D, e per notificare la finestra genitore quando sono entrati. Ho letto attraverso la documentazione e non riuscivo a capire come fare questo. È possibile?

È stato utile?

Soluzione

Ci sono due opzioni, davvero. Aggancio in WM_KEYDOWN, come suggerito, è uno. L'altro è quello di utilizzare una tabella acceleratore (vedi http: / /msdn.microsoft.com/en-us/library/ms645526(VS.85).aspx ) per tradurre i tasti premuti in ID di comando di livello superiore ed elaborare i ID di comando nel gestore WM_COMMAND.

Utilizzando la tabella acceleratore è senza dubbio il modo "giusto", ma WM_KEYDOWN sembra funzionare altrettanto bene, e non richiede la modifica del codice ciclo di messaggi / rintracciare la funzione di quadro magia che ha bisogno di essere sovrascritto / etc.

(se si utilizza MFC, la funzione di quadro magico per le tabelle acceleratori specifici finestra è CWnd::PreTranslateMessage ignorarlo, chiamare TranslateAccelerator in là (passando nella tabella acceleratore che viene caricata nel costruttore / OnCreate / etc) e FALSE tornare.. - - se TranslateAccelerator restituito 0 - o TRUE - se è tornato qualcos'altro Questo consente l'utilizzo di scorciatoie da tastiera che sono specifici per le finestre Scintilla)

..

A proposito, entrambi questi metodi coesistono tranquillamente, quindi alcuni tasti premuti possono essere gestite con acceleratori e alcuni con WM_KEYDOWN. Il mio ultimo programma di Scintilla ha fatto questo; Sono assolutamente non riesco a ricordare il motivo per cui, temo, ma certamente funzionato bene.

Altri suggerimenti

Bene, se tutto il resto fallisce si potrebbe sottoclasse procedura di finestra del controllo Scintilla. Sarebbe abbastanza semplice per intercettare i messaggi WM_KEYDOWN e WM_KEYUP, filtrarli, e poi passare sia alla finestra principale di Scintilla proc o alla vostra finestra padre.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top