[这个贴子最后由x86在 2006/03/25 02:40pm 第 2 次编辑]
用自己的程序修改屏幕分辨率的感觉是不一样的。特别是在有些情况下程序必须在1024×768环境下才可以运行,那么就需要在程序执行前先改分辨率,执行后恢复原来的分辨率。修改分辨率可以用API函数来实现,下面给出程序源码:- void OnChagne(int i,int j)
- {
- DEVMODE lpDevMode;
- lpDevMode.dmBitsPerPel = 16;
- lpDevMode.dmPelsWidth=i;
- lpDevMode.dmPelsHeight=j;
- lpDevMode.dmSize = sizeof(lpDevMode);
- lpDevMode.dmFields = DM_PELSWIDTH|DM_PELSHEIGHT|DM_BITSPERPEL;
- LONG result = ChangeDisplaySettings(&lpDevMode,0);
- if(result == DISP_CHANGE_SUCCESSFUL)
- {
- MessageBox(NULL,"\n恭喜,修改成功!本程序已经出色的完成任务,厉害不?","→无条件●程序设计!联系QQ:335342",MB_OK);
- ChangeDisplaySettings(&lpDevMode,CDS_UPDATEREGISTRY);
- }
- else
- {
- MessageBox(NULL,"\n对不起,本程序已经尽力了,但还是修改失败了!","→无条件●程序设计!联系QQ:335342",MB_OK);
- ChangeDisplaySettings(NULL,0);
- }
- }
复制代码 调用这个子函数就可以修改屏幕分辨率了,传递的两个参数就是欲设置的屏幕分辨率。如果您不想要提示,只需要把MessageBox()这句去掉。主程序大家可以自由发挥,调用这个子函数就可以了。
为了便于学习和交流,我这里随意给出一个主程序:- char m[200];
- int i=GetSystemMetrics(0),j=GetSystemMetrics(1);
- sprintf(m,"\n\t 您的当前分辨率为:%d×%d\n\n",i,j);
- if (i==1024)
- {
- lstrcat(m," 本程序将尝试将它改为“800×600”,你是否愿意?\t");
- if (MessageBox(NULL,m,"→无条件●程序设计!联系QQ:335342",MB_YESNO|MB_ICONQUESTION)==IDYES)
- OnChagne(800,600);
- }
- else if(i==800)
- {
- lstrcat(m," 本程序将尝试将它改为“1024×768”,你是否愿意?\t");
- if (MessageBox(NULL,m,"→无条件●程序设计!联系QQ:335342",MB_YESNO|MB_ICONQUESTION)==IDYES)
- OnChagne(1024,768);
- }
- else if(i==1152)
- {
- lstrcat(m," 本程序将尝试将它改为“1024×768”,你是否愿意?\t");
- if (MessageBox(NULL,m,"→无条件●程序设计!联系QQ:335342",MB_YESNO|MB_ICONQUESTION)==IDYES)
- OnChagne(1024,768);
- }
- else
- {
- lstrcat(m," 真的很对不起,本程序暂时不支持此分辨率的修改!\t");
- MessageBox(NULL,m,"→无条件●程序设计!联系QQ:335342",MB_OK);
- }
复制代码 |