如何确定对话框中各个对象的相对位置?

smq 2000-01-17 02:48:00
怎样获取例如一个按钮在对话框中的位置,不用资源文件中的定义
我用以下方法获取:

CWnd *pWnd = GetDlgItem(IDD_BUTTON);
pWnd->GetClientRect(&rect);

但是RECT中的X为0,不知怎么回事,请指教?
...全文
253 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
herolee 2000-01-18
  • 打赏
  • 举报
回复
see GetClientRect() and ClientToScreen()
注意: GetClientRect()的返回值left,top总是0,实际上是Rect的大小,必须使用ClientToScreen() or ScreenToClient();
wuxfBrave 2000-01-17
  • 打赏
  • 举报
回复
看看ScreenToClient() ClientToScreen(),注意调用方法的对象pWnd->ScreenToClient() pWnd是什么
WHQ 2000-01-17
  • 打赏
  • 举报
回复
当然为0,它实际得到的是客户区的大小。你应该先用GetWindowRect得到它左上角的屏幕坐标,然后用ScreenToClient把这个点转换成在其父窗口(你的对话框)的客户区中的坐标。
kxy 2000-01-17
  • 打赏
  • 举报
回复
window的help
Because client coordinates are relative to the upper-left corner of a window's client area, the coordinates of the upper-left corner are (0,0).
pRect

Points to a RECT structure that receives the client coordinates. The left and top members are zero. The right and bottom members contain the width and height of the window.
所以x=0是对的.
使用
The ClientToScreen function converts the client coordinates of a specified point to screen coordinates.

BOOL ClientToScreen(

HWND hWnd, // window handle for source coordinates
LPPOINT lpPoint // pointer to structure containing screen coordinates
);
可能有帮助.

16,471

社区成员

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

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

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