Cum schimb functionalitatea Ctrl+Tab intr-o aplicatie MDI ?

Intrebari legate de programarea cu biblioteci precum MFC, ATL, WTL si GDI+.
Post Reply
mesajflaviu
Membru++
Membru++
Posts: 687
Joined: 10 Sep 2008, 21:40
Judet: Cluj

Cum schimb functionalitatea Ctrl+Tab intr-o aplicatie MDI ?

Post by mesajflaviu » 24 Aug 2011, 21:24

Intr-o aplicatie MDI, cand avem mai multe ferestre child deschise, putem naviga intre ele cu Ctrl+Tab ... tinand Ctrl-ul apasat, la fiecare apasare de Tab se activeaza alta fereastra child. Sa zicem ca am 4 ferestre child deschise. Daca as vrea sa activez fereastra 2 si 4, ma duc cu combinatia de taste descrisa mai sus la fereastra 2, eliberez tasta Ctrl, apoi similar activez fereastra 4, iar apoi daca apas alterantiv Ctrl+Tab as vrea sa navighez doar intre fereastra 2 si 4, asa cum functioneaza si editorul din VC6 de exemplu ... cum as putea schimba aceasta comportare ?



User avatar
bu7ch3r
Membru++
Membru++
Posts: 326
Joined: 17 May 2011, 15:17
Judet: Iaşi
Location: Sofia
Contact:

Re: Cum schimb functionalitatea Ctrl+Tab intr-o aplicatie MD

Post by bu7ch3r » 25 Aug 2011, 09:56

Ai doua functii unde poti sa prinzi apasarea tastelor si sa iei alte decizii:
virtual BOOL PreTranslateMessage( MSG* pMsg ); si
int WINAPI TranslateAccelerator( __in HWND hWnd, __in HACCEL hAccTable, __in LPMSG lpMsg );

Poti sa faci ceva de genu:

BOOL ClasaParinte :: PreTranslateMessage( MSG* pMsg )
{
if( !pMsg )
return false;

if( WM_KEYDOWN == pMsg-> message && VK_TAB == pMsg->lParam)
{
if(0x8000 & GetKeyState(VK_CONTROL) ) //sau GetAsynKeyState(..) nu mai stiu exact
//do something
}
return ::PreTranslateMessage(pMsg);
}
Cu stima,
Lupu Claudiu

User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3778
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: Cum schimb functionalitatea Ctrl+Tab intr-o aplicatie MD

Post by Ovidiu Cucu » 25 Aug 2011, 11:18

Pare OK cu o mica observatie (probabil e vorba de un typo): codul tastei e in wParam si nu in lParam.

User avatar
bu7ch3r
Membru++
Membru++
Posts: 326
Joined: 17 May 2011, 15:17
Judet: Iaşi
Location: Sofia
Contact:

Re: Cum schimb functionalitatea Ctrl+Tab intr-o aplicatie MD

Post by bu7ch3r » 25 Aug 2011, 11:33

Da asa este. Vroiam sa va verific :p
Cu stima,
Lupu Claudiu

User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3778
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: Cum schimb functionalitatea Ctrl+Tab intr-o aplicatie MD

Post by Ovidiu Cucu » 25 Aug 2011, 18:41

bu7ch3r wrote:Da asa este. Vroiam sa va verific :p
"Prinsul" mesajelor in TranslateAccelerator era tot un test?
Daca vrei sa pui quiz-uri/teste, te rog specifica!

User avatar
bu7ch3r
Membru++
Membru++
Posts: 326
Joined: 17 May 2011, 15:17
Judet: Iaşi
Location: Sofia
Contact:

Re: Cum schimb functionalitatea Ctrl+Tab intr-o aplicatie MD

Post by bu7ch3r » 25 Aug 2011, 21:06

Nu nu era un quiz. Fiind la serviciu incerc sa scriu riguros in Visual nu pe forum-uri asa ca am incercat sa schitzez doar (am gresit si am vrut sa ma scot). Din cate imi aduc eu aminte, aveam odata un copil de a lui CHtmlCtrl si nu prindea sub nici o forma CTRL+O si altele (cred ca nici CTRL+L) in PreTranslate asa ca am folosit: TranslateAccelerator. Acum ma gandesc daca doar CHtmlCtrl are metoda asta :-??
Cu stima,
Lupu Claudiu

Post Reply