void CSizingControlBar::OnNcPaint()
{
// get window DC that is clipped to the non-client area
CWindowDC dc(this); CRect rcClient, rcBar;
GetClientRect(rcClient);
ClientToScreen(rcClient);
GetWindowRect(rcBar);
rcClient.OffsetRect(-rcBar.TopLeft());
rcBar.OffsetRect(-rcBar.TopLeft()); CDC mdc;
mdc.CreateCompatibleDC(&dc);
CBitmap bm;
bm.CreateCompatibleBitmap(&dc, rcBar.Width(), rcBar.Height());
CBitmap* pOldBm = mdc.SelectObject(&bm); // draw borders in non-client area
CRect rcDraw = rcBar;
DrawBorders(&mdc, rcDraw); // erase the NC background
mdc.FillRect(rcDraw, CBrush::FromHandle(
(HBRUSH) GetClassLong(m_hWnd, GCL_HBRBACKGROUND))); if (m_dwSCBStyle & SCBS_SHOWEDGES)
{
CRect rcEdge; // paint the sizing edges
for (int i = 0; i < 4; i++)
if (GetEdgeRect(rcBar, GetEdgeHTCode(i), rcEdge))
mdc.Draw3dRect(rcEdge, ::GetSysColor(COLOR_BTNHIGHLIGHT),
::GetSysColor(COLOR_BTNSHADOW));
} NcPaintGripper(&mdc, rcClient); // client area is not our bussiness :)
dc.IntersectClipRect(rcBar);
dc.ExcludeClipRect(rcClient); dc.BitBlt(0, 0, rcBar.Width(), rcBar.Height(), &mdc, 0, 0, SRCCOPY); ReleaseDC(&dc); mdc.SelectObject(pOldBm);
bm.DeleteObject();
mdc.DeleteDC();
}
{
// get window DC that is clipped to the non-client area
CWindowDC dc(this); CRect rcClient, rcBar;
GetClientRect(rcClient);
ClientToScreen(rcClient);
GetWindowRect(rcBar);
rcClient.OffsetRect(-rcBar.TopLeft());
rcBar.OffsetRect(-rcBar.TopLeft()); CDC mdc;
mdc.CreateCompatibleDC(&dc);
CBitmap bm;
bm.CreateCompatibleBitmap(&dc, rcBar.Width(), rcBar.Height());
CBitmap* pOldBm = mdc.SelectObject(&bm); // draw borders in non-client area
CRect rcDraw = rcBar;
DrawBorders(&mdc, rcDraw); // erase the NC background
mdc.FillRect(rcDraw, CBrush::FromHandle(
(HBRUSH) GetClassLong(m_hWnd, GCL_HBRBACKGROUND))); if (m_dwSCBStyle & SCBS_SHOWEDGES)
{
CRect rcEdge; // paint the sizing edges
for (int i = 0; i < 4; i++)
if (GetEdgeRect(rcBar, GetEdgeHTCode(i), rcEdge))
mdc.Draw3dRect(rcEdge, ::GetSysColor(COLOR_BTNHIGHLIGHT),
::GetSysColor(COLOR_BTNSHADOW));
} NcPaintGripper(&mdc, rcClient); // client area is not our bussiness :)
dc.IntersectClipRect(rcBar);
dc.ExcludeClipRect(rcClient); dc.BitBlt(0, 0, rcBar.Width(), rcBar.Height(), &mdc, 0, 0, SRCCOPY); ReleaseDC(&dc); mdc.SelectObject(pOldBm);
bm.DeleteObject();
mdc.DeleteDC();
}
解决方案 »
- socket send和recv
- gdi+ 显示图片问题
- MFC 程序只启动一次后.....
- 注册表已添加键值,开机也自动启动了,但是sys.ini里面的设置没有成功加载,程序不可以用,退出后重新启动一切就正常,郁闷中
- 用DOM操作网页提交表单时,怎样模拟对radio的点击选择?
- 新手问题:如何连续显示bmp图像成为动画
- 关于EnumProcessModules函数的一个问题
- 作一个类似电脑报合订本光盘需要多少钱?Up有分
- ODBC编程的增加、修改纪录的问题!急急急!!!!
- 共享内存如何实现同步问题?
- 一个很菜地问题~
- 请大家帮忙看看关于CRecordset访问多表项ODBC出错的问题,困扰多日了
这个做什么?