如何改变窗口非客户区的颜色?

doom 2001-05-04 05:00:00
在窗口非客户区Textout起作用,但是设置背景色没有作用,如何改变它的背景色?
甚至可以显示一个图片?
...全文
750 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
doom 2001-05-09
  • 打赏
  • 举报
回复
谢谢各位的参与
doom 2001-05-08
  • 打赏
  • 举报
回复
<
Jackyin 2001-05-07
  • 打赏
  • 举报
回复
gz
elang 2001-05-07
  • 打赏
  • 举报
回复

这段程序可以在标题栏上改变颜色 至于系统菜单的图标和最大化最小化关闭的按钮 最后有话的位置不是很吻合 你自己看着改改把

void CCAPPIView::OnNcPaint()
{
// TODO: Add your message handler code here
TRACE("\nNCPAINT...................\n");
//CView::OnNcPaint();
/*

// To accesses the entire screen area of a CWnd
// (both client and nonclient areas).
CDC *dc=AfxGetMainWnd()->GetWindowDC();

CRect rc;
GetWindowRect(rc);

// Size of menu bar (non-client area) is smaller
rc.bottom = GetSystemMetrics(SM_CYCAPTION) + GetSystemMetrics(SM_CYFRAME);

// Compute color increment
double decrement = (double)(LIGHT_COLOR - DARK_COLOR) / rc.Width();

// Draw menu bar
for(int i = 2; i < rc.Width()-2; i++)
{
double color;
CPen* oldPen;
color = LIGHT_COLOR - decrement * (double) i;
CPen pen(PS_SOLID, 1, RGB(0,0,(int)color));
dc->MoveTo(i,1);
oldPen = dc->SelectObject(&pen);
dc->LineTo(i,rc.bottom-1);
dc->SelectObject(oldPen);
}

// Area for buttons
CRect closeRect;
closeRect.left = rc.right - rc.left - 20;
closeRect.top = GetSystemMetrics(SM_CYFRAME);
closeRect.right = rc.right - rc.left - 0;
closeRect.bottom = GetSystemMetrics( SM_CYSIZE );

// Put the close button on the caption
dc->DrawFrameControl(closeRect,
DFC_CAPTION,
DFCS_CAPTIONCLOSE );

closeRect.left-=20;
closeRect.right-=20;

dc->DrawFrameControl(closeRect,
DFC_CAPTION,
DFCS_CAPTIONMAX);
closeRect.left-=20;
closeRect.right-=20;
dc->DrawFrameControl(closeRect,
DFC_CAPTION,
DFCS_CAPTIONMAX);

*/

// Save button position
}

doom 2001-05-07
  • 打赏
  • 举报
回复
>
chendd2001 2001-05-07
  • 打赏
  • 举报
回复
hao
progman2001 2001-05-06
  • 打赏
  • 举报
回复
谁知道NetAnts的basket那样的窗口是怎么作出来的?
怎样才能真真的去掉窗口的标题栏?
progman2001 2001-05-06
  • 打赏
  • 举报
回复
谁知道NetAnts的basket那样的窗口是怎么作出来的?
怎样才能真真的去掉窗口的标题栏?
progman2001 2001-05-06
  • 打赏
  • 举报
回复
谁知道NetAnts的basket那样的窗口是怎么作出来的?
怎样才能真真的去掉窗口的标题栏?
vcbacker 2001-05-06
  • 打赏
  • 举报
回复
gz
liu_feng_fly 2001-05-05
  • 打赏
  • 举报
回复
guanzhu
jumbo6 2001-05-05
  • 打赏
  • 举报
回复
a
doom 2001-05-05
  • 打赏
  • 举报
回复
.
doom 2001-05-05
  • 打赏
  • 举报
回复
贴出来看看阿。。。
doom 2001-05-05
  • 打赏
  • 举报
回复
1;GetWindowDC得到的DC我修改了背景色以后不起作用阿?不知道为什么?谁成功过请帮助我一下?
2;WM_NCPAINT消息如果重载的话,是否意味着菜单,工具条等都要重画?这样太繁琐了吧?
3;我看到一个源代码,就是那个BCG库,它修改了菜单和工具条的背景,加上了图片,但是它这个代码太多了,我不能把这部分我需要的功能分离出来。。。:(
谁曾经做过这样的事情?
shenyc 2001-05-05
  • 打赏
  • 举报
回复
GetWindowDC & WM_NC* message
vcbacker 2001-05-05
  • 打赏
  • 举报
回复
无人知晓?
doom 2001-05-05
  • 打赏
  • 举报
回复
.
doom 2001-05-05
  • 打赏
  • 举报
回复
有一些库是可以实现,但是都太大了,并且我不能把我想要的那部分功能分离出来,因为它们都是通用的,而我只需要其中一点功能。
除了重画就没有别的办法了吗?
yjfu_ 2001-05-05
  • 打赏
  • 举报
回复
可以去掉工具条.菜单.状态栏.重新加一个漂亮的.再作位图给标题栏变了.
加载更多回复(11)

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧