返回列表 发帖

[原创]重置屏幕分辨率

[这个贴子最后由x86在 2006/03/25 02:40pm 第 2 次编辑]

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

[原创]重置屏幕分辨率

这个程序在修改屏幕分辨率一般不会失败。在所有操作系统下都支持。

TOP

[原创]重置屏幕分辨率

cxScreen = GetSystemMetrics (SM_CXSCREEN) ; cyScreen = GetSystemMetrics (SM_CYSCREEN) ; 这两个用着有点烦琐。得到当前分辨率的最简单方法是: #include int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance, LPSTR lpszCmdLine,int nCmdShow) { char m[200]; int i=GetSystemMetrics(0),j=GetSystemMetrics(1); sprintf(m,"\n\t 您的当前分辨率为:%d×%d",i,j); MessageBox(NULL,m,"→无条件●程序设计!联系QQ:335342",MB_OK); }

TOP

返回列表 回复 发帖