各位兄弟:
我的屏幕分辨率是1024*768,我引入了一个outlook风格的代码段,然后就写代码,在界面的右边加了许多对话框,刚好适合我屏幕分辨率。
我今天把屏幕调回800*600,竟然发现我的程序执行后右边比800*600多出来的部分全显示不出来了,而且也不出左滚和右滚的条,总之怎么想办法界面也都是丢了一大块,我曾经试图把视类和里边包含的子对话框类的SCROLL属性都选择了,可还是不行,还是丢。加入的滚动条不是在最右边就是在最下边,根本在800*600上显示不出来。
各位,能不能通过在我的程序中加点啥代码让这个界面能出个左右和上下的滚动条以滚动整个程序界面。
我的屏幕分辨率是1024*768,我引入了一个outlook风格的代码段,然后就写代码,在界面的右边加了许多对话框,刚好适合我屏幕分辨率。
我今天把屏幕调回800*600,竟然发现我的程序执行后右边比800*600多出来的部分全显示不出来了,而且也不出左滚和右滚的条,总之怎么想办法界面也都是丢了一大块,我曾经试图把视类和里边包含的子对话框类的SCROLL属性都选择了,可还是不行,还是丢。加入的滚动条不是在最右边就是在最下边,根本在800*600上显示不出来。
各位,能不能通过在我的程序中加点啥代码让这个界面能出个左右和上下的滚动条以滚动整个程序界面。
根据当前分辨率调整窗口大小。
根据窗口的大小调用setscrollinfo来显示滚动条,并处理滚动消息。
LONG ChangeDisplaySettings(
LPDEVMODE lpDevMode, // graphics mode
DWORD dwflags // graphics mode options
);
---------------------------------------------------------------
int nFullWidth=GetSystemMetrics(SM_CXSCREEN);
int nFullHeight=GetSystemMetrics(SM_CYSCREEN);
bool bChanged=0;
if(nFullWidth!=800 ¦ ¦ nFullHeight!=600)//change to 800*600;
{
DEVMODE lpDevMode;
lpDevMode.dmBitsPerPel=16;//Change from 24 to 16
lpDevMode.dmPelsWidth=800;
lpDevMode.dmPelsHeight=600;
lpDevMode.dmDisplayFrequency=85;
lpDevMode.dmSize=sizeof(DEVMODE);
lpDevMode.dmFields =DM_PELSWIDTH ¦DM_PELSHEIGHT ¦DM_BITSPERPEL ¦DM_DISPLAYFREQUENCY;
LONG result;
//EnumDisplaySettings(NULL,ENUM_REGISTRY_SETTINGS,&lpDevMode);
result=ChangeDisplaySettingsEx(NULL,&lpDevMode,NULL,0,NULL);
if (result==DISP_CHANGE_SUCCESSFUL)
{
result=ChangeDisplaySettingsEx(NULL,&lpDevMode,NULL,CDS_UPDATEREGISTRY,NULL);
bChanged=1;
}
else
{
result=ChangeDisplaySettingsEx(NULL,&lpDevMode,NULL,0,NULL);
}
}
---------------------------------------------------------------
LONG ChangeDisplaySettings();