求教:在Dialog动态创建控件,出问题了!

zijida 2005-11-21 05:10:57
环境:VC.net

现象:
  在一个默认为中文字体的Dialog上使用Create()动态创建静态文本框,按钮,编辑框等控件时,
 所创建的控件默认字体为系统默认的Microsoft Sans Serif 8,并且根据中文Dialog得出来的控件位置都偏移了.各位高人,请问这是怎么回事,应该怎么办?


贴一小段代码:
CButton* pObject = new CButton();
pObject->Create( PSC->m_Caption, PSC->m_Style,rect,cwnd,PSC->m_ResID);
g_ctrlTable.push_back((CWnd*)pObject);
pObject->ShowWindow(SW_SHOW);
...全文
255 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zijida 2005-11-22
  • 打赏
  • 举报
回复
应该咋个转换泥?~
wshcdr 2005-11-22
  • 打赏
  • 举报
回复
我在Dialog上先放好控件,记下的位置,然后删掉它们,使用这些记录的坐标位置动态创建,
结果跟想像的不符,它们错位了.
////////////////
可能坐标需要转换
zijida 2005-11-22
  • 打赏
  • 举报
回复
我在Dialog上先放好控件,记下的位置,然后删掉它们,使用这些记录的坐标位置动态创建,
结果跟想像的不符,它们错位了.
zijida 2005-11-22
  • 打赏
  • 举报
回复
谢大家!结贴!!
菜牛 2005-11-22
  • 打赏
  • 举报
回复
你在对话框编辑器上看到的坐标,是字体相关的,你可以改动对话框字体看一下效果。拿这个坐标来用,Window下的函数使用的是屏幕点坐标,不能一一对应。

可以参考一下这几个函数:
GetDialogBaseUnits MapDialogRect
wshcdr 2005-11-21
  • 打赏
  • 举报
回复
位置可以用MoveWindow来设置正确啊
fine10000 2005-11-21
  • 打赏
  • 举报
回复
是不是坐标用的不对?
zijida 2005-11-21
  • 打赏
  • 举报
回复
兄弟,thank you!
字体正确啦,位置还有问题...
快乐鹦鹉 2005-11-21
  • 打赏
  • 举报
回复
定义一个CFont成员变量,获取当前对话框所用字体(GetFont),然后设置到这些动态创建的控件上。
zijida 2005-11-21
  • 打赏
  • 举报
回复
答楼上兄弟问:
  Microsoft Sans Serif 8的Dialog和中宋9的Dialog控件大小位置是不一样的,
 在属性栏里切换时,可以看到Dialog的尺寸有明显区别.
  我遇到的问题是:动态创建的控件是按Microsoft Sans Serif 8的样式显示的,而实际上
 Dialog用的是中宋9.
快乐鹦鹉 2005-11-21
  • 打赏
  • 举报
回复
并且根据中文Dialog得出来的控件位置都偏移了
==这句话没有理解?你的问题到底是什么????

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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