none
为什么MFC显示的页面比设置的大很多? RRS feed

  • 问题

  • 如下,在my.rc中设置页面的大小为520,480

    但显示的页面明显比这个要大,而且我甚至看着纵向比横向还大!!

    在OnInitDialog()里用MoveWindow(0,0,520,480)是正常的。

    这是为什么呢???什么地方有什么别的设置吗?刚接触还不大了解,求指教!!

    IDD_PAGE DIALOGEX 0, 0, 520, 480
    STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_BORDER
    BEGIN
        PUSHBUTTON      "开始",IDC_BTN_START,0,467,37,13
    END

    2019年5月28日 7:11

全部回复

  • Hi djq123,

    根据你的描述,这个问题是关于C++开发的问题。由于我们论坛主要是讨论VS安装和日常使用的问题,我会帮你的问题移到合适的论坛,谢谢。

    Best regards,

    Sara


    MSDN Community Support Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com

    2019年5月28日 9:05
  • 你好,

    感谢您在MSDN论坛发帖提问。

    >>如下,在my.rc中设置页面的大小为520,480
    但显示的页面明显比这个要大,而且我甚至看着纵向比横向还大!!
    在OnInitDialog()里用MoveWindow(0,0,520,480)是正常的。
    这是为什么呢???什么地方有什么别的设置吗?

    资源编辑器上的单位是DLU(对话框逻辑单位),而实际运行的程序在屏幕上的单位是像素,两个是不一样的。dlu的一个x方向的坐标单位相当于对话框中所用字体的平均宽度的1/4,y方向的坐标单位相当于对话框对话框所用字体高度的1/8。

    如果你想要将DLU转换为像素,我建议你可以使用MapDialogRect函数。他可以用于将指定的对话框单位转换为屏幕单位(像素)。传入一个RECT对话框单元,RECT返回以像素为单位的等效项。请注意,您需要一个对话框句柄才能提供MapDialogRect()足够的上下文。该函数需要知道字体才能执行转换。

    我建议你可以参考一下链接:https://stackoverflow.com/questions/6870485/how-to-convert-dlu-into-pixels

    Best Regards,

    Jeanine Zhang

    2019年5月28日 9:16
    版主
  • 你好,

    你有任何更新吗? 如果您的案例已经解决,请帮助标记答案。 如果有,请随时与我们联系。
    您的理解与合作将不胜感激。

    Best Regards,

    Jeanine Zhang

    2019年6月4日 5:49
    版主