Deriving from a CDialog derived class (IYSWIM)
Jeff Eldridge -- jeldridge@cix.compulink.co.uk
Thursday, April 11, 1996
Environment: NT3.51 (SP4) VC4.0 MFC4.0
I'm have written a class (CStandardDialog) which derives from CDialog.
CStandardDialog receives a couples of message (WM_CTLCOLOR and
WM_CTLCOLORDLG) to enforce a standard look to my apps dialogs. All
dialogs is my app derive from CStandardDialog.
I would've thought that messages are sent to CWnd which passes them onto
CDialog. Anything that isn't processed by CDialog would goto my
CStandardDialog and anything that doesn't process goes to the final
dialog class. I hope thats clear.
Well, that doesn't seem to be happening. I've placed breakpoints in
CStandardDialog's message handlers for WM_CTLCOLOR* but nothing ever gets
there.
Is my supposition right? Have I forgotten to do anything?
Jeff
Darius Thabit -- darius@world.std.com
Sunday, April 14, 1996
[Mini-digest: 2 responses]
> I'm have written a class (CStandardDialog) which derives from CDialog.
> CStandardDialog receives a couples of message (WM_CTLCOLOR and
> WM_CTLCOLORDLG) to enforce a standard look to my apps dialogs. All
> dialogs is my app derive from CStandardDialog.
I did the same thing, it's very useful.
> I would've thought that messages are sent to CWnd which passes them onto
> CDialog. Anything that isn't processed by CDialog would goto my
> CStandardDialog and anything that doesn't process goes to the final
Well in effect it's the other way around: anything that isn't handled in
_your_ dialog class gets passed down to CDialog or the next highest class
with a handler (a more complete view would note that calls first get bounced
up from the original receiving class to the highest class which has a
handler).
> Well, that doesn't seem to be happening. I've placed breakpoints in
> CStandardDialog's message handlers for WM_CTLCOLOR* but nothing ever gets
All I can think of is that you did use ClassWizard to defined these,
right? There should be declarations for these inside the AFX_MSG and
AFX_MSG_MAP macros (in the header and source file respectively).
-----From: Niels Ull Jacobsen
>I would've thought that messages are sent to CWnd which passes them onto
>CDialog. Anything that isn't processed by CDialog would goto my
>CStandardDialog and anything that doesn't process goes to the final
>dialog class. I hope thats clear.
Actually, it is the other way around. First CStandardDialog gets a crack at
them, the CDialog, then CWnd.
>
>Well, that doesn't seem to be happening. I've placed breakpoints in
>CStandardDialog's message handlers for WM_CTLCOLOR* but nothing ever gets
>there.
Have you used Spy++ to ensure that the messages are actually sent?
Have you set a breakpoint "at AfxWndProc when WM_CTLCOLOR* is recieved" ?
>
>Is my supposition right? Have I forgotten to do anything?
>
>Jeff
>
Niels Ull Jacobsen, Krьger A/S (nuj@kruger.dk)
Everything stated herein is THE OFFICIAL POLICY of the entire Kruger group
and should be taken as legally binding in every respect. Pigs will grow
wings and fly.
| Вернуться в корень Архива
|