我现在写一个项目,我要让窗体与控件的大小随着显示器分辨率来改变大小.
我试用过许多函数,但都没有成功
求各位大哥们给点意见

解决方案 »

  1.   

    响应 WM_SETTINGCHANGE 事件
      

  2.   

    可能你需要设置一个缩放比例,出现不同分辨率的时候,调整这个分辨率,然后MoveWindow();
    比如默认1024×768时,这个比例为1;分辨率为1280*1024时,比例为1.25,对原来的控件的rect改变宽度和高度以及left的值(如果不改这个值,可能会被覆盖)。窗口的大小你可以响应WM_GETMINMAXINFO
    C****::OnGetMinMaxInfo (MINMAXINFO* pMMI)
    {
    //以下代码实现最大化时为800*800,最小为120*120
        pMMI->ptMinTrackSize.x = 120;      //也可以用这个值代替x:GetSystemMetrics(SM_CXSCREEN)-10
        pMMI->ptMinTrackSize.y = 120;
    pMMI->ptMaxTrackSize.x = 800;  //也可以用这个值GetSystemMetrics(SM_CXSCREEN)
    pMMI->ptMaxTrackSize.y = 800;  //),GetSystemMetrics(SM_CYSCREEN)
    }
      

  3.   

    响应WM_WINDOWPOSCHANGED,在里面SetWindowPos(NULL,GetSystemMetrics(SM_CXSCREEN)/8,GetSystemMetrics(SM_CYSCREEN)/8,GetSystemMetrics(SM_CXSCREEN)*3/4,GetSystemMetrics(SM_CYSCREEN)*3/4,SWP_SHOWWINDOW);GetSystemMetrics取得屏幕的像素大小,这样就可以设置窗口跟屏幕是一个固定的比例了,随着屏幕像素大小改变。
      

  4.   

    比较赞成my_girlf 的方法。