gpt4 book ai didi

c++ - 如何绘制非客户区?

转载 作者:可可西里 更新时间:2023-11-01 16:27:16 26 4
gpt4 key购买 nike

我希望能够在菜单栏的右侧,在窗口的非客户区进行一些绘图。

这可能吗,使用 C++/MFC?

最佳答案

查理用 WM_NCPAINT 找到了答案。如果您使用的是 MFC,代码将如下所示:

// in the message map
ON_WM_NCPAINT()

// ...

void CMainFrame::OnNcPaint()
{
// still want the menu to be drawn, so trigger default handler first
Default();

// get menu bar bounds
MENUBARINFO menuInfo = {sizeof(MENUBARINFO)};
if ( GetMenuBarInfo(OBJID_MENU, 0, &menuInfo) )
{
CRect windowBounds;
GetWindowRect(&windowBounds);
CRect menuBounds(menuInfo.rcBar);
menuBounds.OffsetRect(-windowBounds.TopLeft());

// horrible, horrible icon-drawing code. Don't use this. Seriously.
CWindowDC dc(this);
HICON appIcon = (HICON)::LoadImage(AfxGetResourceHandle(), MAKEINTRESOURCE(IDR_MAINFRAME), IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR);
::DrawIconEx(dc, menuBounds.right-18, menuBounds.top+2, appIcon, 0,0, 0, NULL, DI_NORMAL);
::DestroyIcon(appIcon);
}
}

关于c++ - 如何绘制非客户区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/99623/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com