Re: Let 's talk about how to custom draw a window caption bar,any one interesting?
If you draw all things by yourself then the application always has a look
as your design, no mater the theme is on/off .
my solution is that if a application has a menu then i draw it under the
titlebar, and then deal something necessarily in
OnNcHitTest/OnNcMouseMove/OnNcLButtonDown/OnNcLButtonUp.
just like bellow:
OnNcLButtonUp:
switch (nHitTest)
{
case HTCLOSE:
{
SendMessage(m_hWnd,WM_CLOSE,0,0);
return;
break;
}
case HTMENU://here deal with the menu popup.
break;
}
OnNcHitTest:
if (m_rcMenu.PtInRect(point))
{
m_nHitTest = HTMENU;
return m_nHitTest;
}
"Anthony Wieser" <newsgroups-sansspam@wieser-software.com>
??????:uf8fOhPcJHA.6024@TK2MSFTNGP02.phx.gbl...
"Joseph M. Newcomer" <newcomer@flounder.com> wrote in message
news:2ms9m416qrrd45d8p293aerc7nbnqkh11j@4ax.com...
However, it does point out a serious defect in Microsoft's approach to
controls. EVERY
control ought to have a default-paint-background handler, a
default-paint-nonclient
handler, etc., which we can explicitly call when we need to tweak "just
one thing". For
example, my custom buttons no longer follow Vista style, but I don't know
how to create
the Vista-style button.
ShadeCap is pretty much an illustration of how deeply flawed the ideas
are. In my
OnNcPaint handler I should be able to call DrawDefaultBorders(),
DrawSystemMenu(),
DrawMinimize(), DrawMaximize(), DrawClose(), DrawHelp(),
DrawCaptionBar(),
DrawCaptionBarText(), and other useful primitives. Instead, I have to
simulate what has
become release-specific visual effects without any way to do this in a
platform-independent fashion.
joe
You might want to have a look at the uxtheme api, also listed under XP
Visual Styles, with functions like
DrawThemeBackground. That should get you some part of the way there.
Anthony Wieser
Wieser Software Ltd