/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Ang. "owner drawn buttons" under win32
Fra : Ukendt


Dato : 13-03-03 23:10

Hej!

Jeg sidder og roder med en dialogboks, hvor jeg gerne vil lave en "owner
drawn button". Jeg har lavet en knap i min dialog-template, der har
style sat til BS_OWNERDRAW. Det virker i og for sig også fint, hvis jeg
tegner knappen, når der kommer en WM_DRAWITEM-besked.

Problemet opstår ved, at denne knap mod forventning ikke opfører sig som
"almindelige" knapper på andre områder end udseendet. Når den får fokus,
deaktiverer den ikke, som de øvrige knapper gør, dialogboksens
default-knap. Min owner drawn button modtager altså aldrig et tryk
på fx enter, som istedet automatisk sendes videre til default-knappen.

Jeg forstår ikke, hvorfor denne knap ikke udelukkende afviger på
udseendet, men også ændrer opførsel. Jeg håber der er nogen, der forstår
mit spørgsmål og kan svare på, hvordan jeg skal gøre for at få den til
at opføre sig "normalt".

-Christian~ldots


INT_PTR CALLBACK DialogProc(HWND hWndDlg, UINT uMsg, WPARAM wParam,
   LPARAM lParam)
{
   switch (uMsg)
   {
   case WM_INITDIALOG:
....
      return TRUE;

   case WM_COMMAND:
....
      break;

   case WM_DRAWITEM:
....
       *TEGN KNAPPEN*
....
      return TRUE;
   }
   return FALSE;
}


 
 
Leo Havmøller (14-03-2003)
Kommentar
Fra : Leo Havmøller


Dato : 14-03-03 06:57

"ldots" <none> wrote in message news:Xns933DEBB658964ldots@62.243.74.162...
> Hej!
>
> Jeg sidder og roder med en dialogboks, hvor jeg gerne vil lave en "owner
> drawn button". Jeg har lavet en knap i min dialog-template, der har
> style sat til BS_OWNERDRAW. Det virker i og for sig også fint, hvis jeg
> tegner knappen, når der kommer en WM_DRAWITEM-besked.
>
> Problemet opstår ved, at denne knap mod forventning ikke opfører sig som
> "almindelige" knapper på andre områder end udseendet. Når den får fokus,
> deaktiverer den ikke, som de øvrige knapper gør, dialogboksens
> default-knap. Min owner drawn button modtager altså aldrig et tryk
> på fx enter, som istedet automatisk sendes videre til default-knappen.
>
> Jeg forstår ikke, hvorfor denne knap ikke udelukkende afviger på
> udseendet, men også ændrer opførsel.

Fordi det er sådan ownerdrawn buttons virker. Der er flere ting du selv skal
håndtere. Start med at kigge på:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/pla
tform/commctls/buttons/usingbuttons.asp

Leo Havmøller.



Ukendt (15-03-2003)
Kommentar
Fra : Ukendt


Dato : 15-03-03 10:13

"Leo Havmøller" <leh@-nospam-rtx.dk> wrote in
news:3e716f15$0$24656$edfadb0f@dread14.news.tele.dk:

> Fordi det er sådan ownerdrawn buttons virker. Der er flere ting du
> selv skal håndtere.

Ok, det er fair nok, men ved du/nogen hvordan man så kan implementere den
funktion, at default-knappen midlertidigt ikke er default-knap, mens ens
owner drawn button har fokus. Windows' egne knapper gør det vel på en eller
anden smart måde...

-Christian

Rasmus Kaae (17-03-2003)
Kommentar
Fra : Rasmus Kaae


Dato : 17-03-03 09:25

ldots wrote:
> "Leo Havmøller" <leh@-nospam-rtx.dk> wrote in
> news:3e716f15$0$24656$edfadb0f@dread14.news.tele.dk:
>
>
>>Fordi det er sådan ownerdrawn buttons virker. Der er flere ting du
>>selv skal håndtere.
>
>
> Ok, det er fair nok, men ved du/nogen hvordan man så kan implementere den
> funktion, at default-knappen midlertidigt ikke er default-knap, mens ens
> owner drawn button har fokus. Windows' egne knapper gør det vel på en eller
> anden smart måde...
>
> -Christian

http://msdn.microsoft.com og slå CButton op. Der findes vist nok nogen
SetFocus funktioner, der gør det du ønsker. Hvis dette ikke er
tilfældet, så kan du formentlig i mange tilfælde "nøjes" med at
overloade OK-knappen og dens funktionalitet.


Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408193
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste