🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #4822

Re: probleempje met OnKeyDown() in vc++ 6.0

#4822
From: Haplo
Date: Mon, 14 Jul 2003 18:54
63 lines
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-mail
References: <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