我做了个基于对话框的程序.对话框比较大.当时的屏幕分辨率是1024*768.
现在改成800*600,结果发现对话框下侧部分在屏幕外面了,看不到了.
如何让对话框随着分辨率的改变而自动调整大小?

解决方案 »

  1.   

    不知道有没有这样的消息可以判断分辨率 改变。如果没有的话,你可以尝试在OnInitDialog里面去判断当前屏幕的分辨率,进而改变窗口的大小。
      

  2.   

    MoveWindow函数可以在运行中调整窗口大小,不过窗口控件在大小和位置上都要重新调整。
      

  3.   

    那你对话框内应该用相对坐标,不过这样计算量很大,一点点改量就要全部重画,还是改变程序方便一些,
    这是我写的:判断屏幕是否自己需要的,不能是就改变它.
    DEVMODE DevMode;
    if(0 != EnumDisplaySettings(NULL,ENUM_CURRENT_SETTINGS,&DevMode))
    {
    if(DevMode.dmPelsWidth != 800 && DevMode.dmPelsHeight != 600)
    {
    DevMode.dmPelsWidth = 800;
    DevMode.dmPelsHeight = 600; LONG res = ChangeDisplaySettings(&DevMode,CDS_UPDATEREGISTRY);
    if(res != DISP_CHANGE_SUCCESSFUL) 
     ChangeDisplaySettings(NULL,0);
    }
    }
      

  4.   

    程序要自己控制控件的位置 ,在OnSize ,和 WM_SETTINGCHANGE 消息中处理,自己调整位置