| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1153 人关注过本帖
标题:GetWindowRect
取消只看楼主 加入收藏
vc好难
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2009-8-26
收藏
 问题点数:0 回复次数:0 
GetWindowRect
在网上下载了几个美化对话框的实例代码:
基本的思路都差不多,都是从DefWindowProc开始,然后在里面调用一个函数用于自绘对话框的边框,代码如下:
LRESULT CTitleBarDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
LRESULT lrst=CDialog::DefWindowProc(message, wParam, lParam);

if (!::IsWindow(m_hWnd))
return lrst;

if(message==WM_MOVE||message==WM_PAINT||message==WM_NCPAINT||message ==WM_NCACTIVATE ||message == WM_NOTIFY)
{
CDC* pWinDC = GetWindowDC();
if (pWinDC)
DrawTitleBar(pWinDC);
ReleaseDC(pWinDC);
}
return lrst;
}

void CTitleBarDlg::DrawTitleBar(CDC *pDC)
{
if (m_hWnd)
{
CBrush Brush(RGB(0,100,255));
CBrush* pOldBrush = pDC->SelectObject(&Brush);

CRect rtWnd, rtTitle, rtButtons;
GetWindowRect(&rtWnd); //得到的到底是什么尺寸?

我的问题是GetWindowRect(&rtWnd); 得到的矩形很怪 top=0,bott0m=352,left=0,right=554;
GetWindowRect函数功能:该函数返回指定窗口的边框矩形的尺寸。该尺寸以相对于屏幕坐标左上角的屏幕坐标给出。
既然该尺寸以相对于屏幕坐标左上角的屏幕坐标给出的,那么屏幕的左上角坐标为0,0;对话框又不是在屏幕的左上角0,0的位置出现,为什么top=0,left=0,?这个想不明白?GetWindowRect(&rtWnd)得到的到底是什么?

另外,我要是为对话框添加一个按钮,在按钮的点击响应函数中加入GetWindowRect(&rtWnd),它的值为
top=207,bott0m=532,left=269,right=755;这个值看上去比较正常;两次的值不一样,我的解释是通过CTitleBarDlg::DefWindowProc函数调用DrawTitleBar(CDC *pDC)函数时对话框还没有创建,所以在DrawTitleBar中GetWindowRect(&rtWnd)的值很怪!要是这种想法成立的话,那么在DrawTitleBar中用GetWindowRect(&rtWnd)得到值代表的是什么,这个值有什么意义?
搜索更多相关主题的帖子: 边框 message 美化 都差不多 return 
2010-03-19 21:34
快速回复:GetWindowRect
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030710 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved