Article View: be.comp.programming
Article #4822Re: probleempje met OnKeyDown() in vc++ 6.0
From: Haplo
Date: Mon, 14 Jul 2003 18:54
Date: Mon, 14 Jul 2003 18:54
63 lines
3065 bytes
3065 bytes
In article <vNwQa.10678$Yf3.823463036@hestia.telenet-ops.be>,
slavearc@pandora.be says...
<knip>
>
> void CMouseDlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
> {
> char lsChar; //ingedrukt key
> HCURSOR lhCursor; //handle naar af te beelden cursor
>
> lsChar = char(nChar); //cast key in char
>
> if(lsChar == 'A')
> {
> lhCursor = AfxGetApp()->LoadStandardCursor(IDC_ARROW);//get cursor
> handle
> SetCursor(lhCursor); //zet cursor
> }
> if(lsChar == 'B')
> {
> lhCursor = AfxGetApp()->LoadStandardCursor(IDC_IBEAM);
> SetCursor(lhCursor);
> }
> if(lsChar == 'C')
> {
> lhCursor = AfxGetApp()->LoadStandardCursor(IDC_WAIT);
> SetCursor(lhCursor);
> }
> if(lsChar = 'X')
> {
> lhCursor = AfxGetApp()->LoadStandardCursor(IDC_ARROW);
> SetCursor(lhCursor);
> OnOK();
> }
> else
> {
> SetCursor(lhCursor);
> }
>
>
> CDialog::OnKeyDown(nChar, nRepCnt, nFlags);
> }
Update: Ik heb ook eventjes naar de rest van de code gekeken en er zijn
nog een paar kleine opmerkingen.
- Gebruik 1 groot "if-else if" blok ipv afzonderlijke if's. Hierdoor
wordt de code leesbaarder en vermijd je onnodige vergelijkingen
- Vergelijk nChar met de echte Virtual Key Codes (VKEY_A, VKEY_B, ...)
ipv van de cast naar char. Nu komt dit toevallig uit maar dit is niet
zeker voor andere keys.
- Verplaats de SetCursor na het "if-else if" blok, omdat dit in elke if
voorkomt en dus niets met de if te maken heeft.
- Als je intensief van die paar Cursors gebruik gaat maken is het
optimaler van ze in static const variabelen te steken en die dan te
gebruiken. Zo vermijd je dat ze steeds geladen worden bij elke onKey
- In het else-blok doe je een SetCursor van een mogelijk ongedefinieerde
HCURSOR. Dit zou ook wel eens een crash kunnen veroorzaken.
Groeten,
Haplo
Technical Details
Message-ID:
<MPG.197d1abca2f1a4a398968d@news.telenet.be>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-06!sn-xit-08!supernews.com!news.tele.dk!news.tele.dk!small.news.tele.dk!newsgate.cistron.nl!aotearoa.belnet.be!news.belnet.be!ossa.telenet-ops.be!afrodite.telenet-ops.be.POSTED!not-for-mailReferences:
<vNwQa.10678$Yf3.823463036@hestia.telenet-ops.be>Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit X-Google-Thread: fcea4,2d3c3f0d196b914b X-Google-Attributes: gidfcea4,public X-Google-ArrivalTime: 2003-07-14 11:54:10 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-06!sn-xit-08!supernews.com!news.tele.dk!news.tele.dk!small.news.tele.dk!newsgate.cistron.nl!aotearoa.belnet.be!news.belnet.be!ossa.telenet-ops.be!afrodite.telenet-ops.be.POSTED!not-for-mail From: Haplo <Wim.Valgaeren@p.b.invalid> Newsgroups: be.comp.programming Subject: Re: probleempje met OnKeyDown() in vc++ 6.0 Message-ID: <MPG.197d1abca2f1a4a398968d@news.telenet.be> References: <vNwQa.10678$Yf3.823463036@hestia.telenet-ops.be> Organization: Monkey Business Reply-To: Wim.Valgaeren@pandora.be X-Newsreader: MicroPlanet Gravity v2.60 Lines: 63 Date: Mon, 14 Jul 2003 18:54:07 GMT NNTP-Posting-Host: 213.119.123.38 X-Complaints-To: abuse@telenet.be X-Trace: afrodite.telenet-ops.be 1058208847 213.119.123.38 (Mon, 14 Jul 2003 20:54:07 MET DST) NNTP-Posting-Date: Mon, 14 Jul 2003 20:54:07 MET DST