從CWnd派生出一個類,如何來指定其Client區域和Window區域?以使GetClientRect()和GetWindowRect()返回不同值。

mate 2001-03-08 09:51:00
...全文
237 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
farland 2001-03-10
  • 打赏
  • 举报
回复
客户区大小应该是由Windows内部默认的,不应该由用户指定,你要建立自己的"客户区"可以自己在程序中实现,定义自己的GetClientRect,根据自己设定的区域,处理OnPaint(),这是我个人的意见,不一定正确。
mate 2001-03-10
  • 打赏
  • 举报
回复
是沒人會還是嫌分太少。
farland 2001-03-10
  • 打赏
  • 举报
回复
自己的"客户区"上再加上一个子窗口做图形输出,自己实现这些功能,我实在想不出其他好办法。
mate 2001-03-10
  • 打赏
  • 举报
回复
to farland:
可是還有一些相關的如: CClientDC這些,難道都要自已來做嗎? 我可不是只為了GetClientRect()一個,而是實現真正的ClientRect。
mate 2001-03-09
  • 打赏
  • 举报
回复
怎麼,沒人可以解決嗎?
panda_w 2001-03-08
  • 打赏
  • 举报
回复
它们本来就不一样:
一个返回包括了菜单和工具条的所有窗口区域
一个只是客户区
xyzboat 2001-03-08
  • 打赏
  • 举报
回复
Client和Window区域是可以指定
但要GetClientRect和GetWindowRect 返回不同的值是什么意思?他们本来就返回不同,一个相对于窗口,一个相对于屏幕.而且这两个都不是虚函数,你的类是派生的也没有用.
如果仅仅是想让其与默认取的值不同,关于GetWindowRect,你可以改变映射模式,但好象没什么意义.

听听...
In355Hz 2001-03-08
  • 打赏
  • 举报
回复
关注!
mate 2001-03-08
  • 打赏
  • 举报
回复
to 以上各位:
我是想知道如何來設定自已派生的窗口類的Client rect.
比如: CFrameWnd的Window Rect是包括Caption、Menu、框架等,而Client Rect只有中間的CView區域(不考慮相對坐標).我如何才能做到這一點。
Ex:我從CWnd派生一個窗口,然后在其周圍畫上3d框,而這時,我想當Call GetWindowRect時返回的rect是不包括3d框的該怎么做?
joke100 2001-03-08
  • 打赏
  • 举报
回复
正如楼上那位同志所言,这两块区域本来就不等.
设置客户区大小可用下面这个函数,比如pYourWnd->SetWindowPos(NULL, 10, 10, 20, 20, SWP_NOZORDER);

BOOL CWnd::SetWindowPos( const CWnd* pWndInsertAfter, int x, int y, int cx, int cy, UINT nFlags );

第一个参数指出本窗口在哪个窗口的下层,可用wndTop将本窗口设在上层,
其中的x,y和cx,cy分别是左上角座标和宽高.
最后一个参数设为SWP_NOZORDER则可忽略第一个参数的设置.


16,551

社区成员

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

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

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