"Joseph M. Newcomer" <newcomer@flounder.com> wrote in message
news:1hr55354r0m098i061p9en7tjmiuq1k8jm@4ax.com...
see below...
On Tue, 22 May 2007 10:44:52 +0100, "GT" <ContactGT_remove_@hotmail.com>
wrote:
"David Lowndes" <DavidL@example.invalid> wrote in message
news:r854539qjghd5hre7iq8uillu04hgloope@4ax.com...
Following an OnDraw(), everything is drawn properly, except my combo
box.
What's wrong with it?
Well, everything is drawn properly (my own lines/ boxes and the CButtons
etc), except my combo box - its just a white box so I can't see it!
I assume it is a z-order problem
Why?
I thought it is possibly being drawn before I draw the rest of the screen,
therefore it is behind something else
Have you checked the z-order of the control using Spy++? The z-order
is just the order the controls are listed under their parent in Spy++.
The z-order can be changed by using SetWindowPos.
And like I said in my original question, the CComboBox ::SetWindowPos()
method is not the same parameter list as the main SetWindowPos method in
the
MSDN - the second parameter (in the MSDN) is how to change the Z-order and
this is the parameter missing from the CComboBox::SetWindowPos() method!
Hmm...CComboBox::SetWindowPos does not exist; it derives directly from
CWnd::SetWindowPos.
It is not the second parameter to CWnd::SetWindowPos that determines the
z-order, but the
first parameter. It is the second parameter of ::SetWindowPos (the raw
API call) but that
is not relevant here. So what are you talking about?
The parameters to CWnd::SetWindowPos are
(const CWnd * pInsertAfter, int x, int y, int cx, int cy, UINT flags)
so I have no idea why you would think the x-coordinate had anything to do
with the
Z-order.
You've got the wrong end of the stick. Clearly I didn't think the x
coordinate has anything to do with the z-order. The second parameter in
SetWindowPos according to the MSDN is 'hWndInsertAfter'. I looked up
SetWindowPos in the MSDN and arrived at this page entitled "SetWindowPos
Funtion":
http://msdn2.microsoft.com/en-us/library/ms633545.aspx
The second parameter here is 'hWndInsertAfter'. The x coordinate is the 3rd
parameter. The 'hWndInsertAfter' can be set to HWND_TOP (amongst other
things). However, when I tried to use this method on my control the compiler
told me that I had the wrong number of parameters and the intellisense
clearly showed that the second parameter of the MSDN's SetWindowPos
('hWndInsertAfter') was not there for CScrollBar, but in fact the parameter
list is as you have quoted above, hence my confusion - 2 methods with the
same name, but different parameter lists and the parameter I need to use
isn't available in the CComboBox::SetWindowPos! If the 'hWndInsertAfter'
parameter is not there, then how do I set it?. I tried using HWND_TOP as my
first parameter and the compiler said it couldn't convert from "HWND" to
"Const Wnd *". At this point, I went to bed!
the first parameter removed. If you use this name, unqualified, from a
CWnd method, then you are calling the CWnd method. To get the API
function you would need to do, for example, ::SetWindowsPos(...). The