怎么一改活动窗口标题栏 非活动窗口标题栏就跟着改呢???
怎么一改活动窗口标题栏非活动窗口标题栏就跟着改呢???属性外观高级里怎么一改活动窗口标题栏非活动窗口标题栏就跟着改呢???我只改了一个另一个就自动跟着改了这是怎么回事啊我...
怎么一改活动窗口标题栏 非活动窗口标题栏就跟着改呢???
属性 外观 高级 里 怎么一改活动窗口标题栏 非活动窗口标题栏就跟着改呢???
我只改了一个 另一个就自动 跟着改了 这是怎么回事啊
我电脑 让我 不小心把 活动窗口标题栏 大小改了 上边蓝色那个框的小红叉变的可小了 所以 我想 改回来 可是 我一改活动窗口标题栏
屏幕最下方的 开始 那栏 也跟着改 我晕啊···
现在就是上边正好 下边小 下边正好 上边小 我都哭死了啊···
那位高手 给指点 指点啊····· 感激 感激啊 ~~~~ 展开
属性 外观 高级 里 怎么一改活动窗口标题栏 非活动窗口标题栏就跟着改呢???
我只改了一个 另一个就自动 跟着改了 这是怎么回事啊
我电脑 让我 不小心把 活动窗口标题栏 大小改了 上边蓝色那个框的小红叉变的可小了 所以 我想 改回来 可是 我一改活动窗口标题栏
屏幕最下方的 开始 那栏 也跟着改 我晕啊···
现在就是上边正好 下边小 下边正好 上边小 我都哭死了啊···
那位高手 给指点 指点啊····· 感激 感激啊 ~~~~ 展开
1个回答
2008-11-15
展开全部
参考了一些文章。
我的方法是处理WM_NCPAINT等几个非客户区消息,这些
消息处理之后都要调用缺省函数DefWindowProc(),因此
重载DefWindowProc虚函数.
对话框属性有 Tool Window 去掉System Menu
LRESULT CTitleDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
LRESULT lt=CDialog::DefWindowProc(message, wParam, lParam);
if(::IsWindow(m_hWnd))
{
if(message==WM_NCPAINT||
message==WM_NCACTIVATE||
message==WM_NOTIFY||
message==WM_SETTEXT)
{
CDC *pDC=GetWindowDC();
if(pDC)
{
CRect rtWnd, rtTitle;
GetWindowRect(&rtWnd);
rtTitle.left=GetSystemMetrics(SM_CXFRAME);
rtTitle.top=GetSystemMetrics(SM_CYFRAME);
rtTitle.right=rtWnd.right-rtWnd.left-
GetSystemMetrics(SM_CYFRAME);
rtTitle.bottom=rtTitle.top +
GetSystemMetrics(SM_CYSMCAPTION)-1;
//现在已经获得DC和RECT,可以随意在标题栏上画
CBrush br;
CPen pen(PS_SOLID,1,RGB(255,255,0));
br.CreateSolidBrush(RGB(255,255,0));
int save=pDC->SaveDC();
pDC->SelectObject(&pen);
pDC->SelectObject(&br);
pDC->Rectangle(rtTitle);//画矩形
//画一个标准最小化按钮
pDC->DrawFrameControl(CRect(4,4,15,14),
DFC_CAPTION,DFCS_CAPTIONMIN);
//照上还可以画最大和关闭标准按钮
pDC->RestoreDC(save);
ReleaseDC(pDC);
}
}
}
return lt;
}
处理鼠标按下消息
........
先判断是哪个按钮,再作相应的处理,例如:
最大化和恢复按钮: if(IsZoomed())
SendMessage(WM_SYSCOMMAND,SC_RESTORE,
MAKELPARAM(point.x,point.y));
else
SendMessage(WM_SYSCOMMAND,SC_MAXIMIZE,
MAKELPARAM(point.x,point.y));
最小化按钮: SendMessage(WM_SYSCOMMAND,SC_MINIMIZE,
MAKELPARAM(point.x,point.y));
关闭按钮: SendMessage(WM_CLOSE);
.........
我的方法是处理WM_NCPAINT等几个非客户区消息,这些
消息处理之后都要调用缺省函数DefWindowProc(),因此
重载DefWindowProc虚函数.
对话框属性有 Tool Window 去掉System Menu
LRESULT CTitleDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
LRESULT lt=CDialog::DefWindowProc(message, wParam, lParam);
if(::IsWindow(m_hWnd))
{
if(message==WM_NCPAINT||
message==WM_NCACTIVATE||
message==WM_NOTIFY||
message==WM_SETTEXT)
{
CDC *pDC=GetWindowDC();
if(pDC)
{
CRect rtWnd, rtTitle;
GetWindowRect(&rtWnd);
rtTitle.left=GetSystemMetrics(SM_CXFRAME);
rtTitle.top=GetSystemMetrics(SM_CYFRAME);
rtTitle.right=rtWnd.right-rtWnd.left-
GetSystemMetrics(SM_CYFRAME);
rtTitle.bottom=rtTitle.top +
GetSystemMetrics(SM_CYSMCAPTION)-1;
//现在已经获得DC和RECT,可以随意在标题栏上画
CBrush br;
CPen pen(PS_SOLID,1,RGB(255,255,0));
br.CreateSolidBrush(RGB(255,255,0));
int save=pDC->SaveDC();
pDC->SelectObject(&pen);
pDC->SelectObject(&br);
pDC->Rectangle(rtTitle);//画矩形
//画一个标准最小化按钮
pDC->DrawFrameControl(CRect(4,4,15,14),
DFC_CAPTION,DFCS_CAPTIONMIN);
//照上还可以画最大和关闭标准按钮
pDC->RestoreDC(save);
ReleaseDC(pDC);
}
}
}
return lt;
}
处理鼠标按下消息
........
先判断是哪个按钮,再作相应的处理,例如:
最大化和恢复按钮: if(IsZoomed())
SendMessage(WM_SYSCOMMAND,SC_RESTORE,
MAKELPARAM(point.x,point.y));
else
SendMessage(WM_SYSCOMMAND,SC_MAXIMIZE,
MAKELPARAM(point.x,point.y));
最小化按钮: SendMessage(WM_SYSCOMMAND,SC_MINIMIZE,
MAKELPARAM(point.x,point.y));
关闭按钮: SendMessage(WM_CLOSE);
.........
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询