其实,大家每天用电脑都免不了看显示器,而显示的设置又很大程序上会影响我们眼睛的接受能力! 坐在那就不舒服了,如果眼睛难受,看电脑企不是受罪? 我今天用LabWindows/CVI写了一个程序,有关显示器设置方面的,请大家共勉! 主要包括象素位数、分辨率、刷新频率的设置! 界面如下: 代码为: /* 改变屏幕设置函数的定义 LONG ChangeDisplaySettings( LPDEVMODE lpDevMode, 显示模式 DWORD dwflags 显示模式选项 ); */ /* dwflags的主要属性为: 0 动态改变显示设置属性 CDS_UPDATEREGISTRY 动态改变显示设置,并在下次起动机器时,所做的修改依然有效 CDS_TEST 测试所做的修改是否有效 */ /* 返回值的主要属性为: DISP_CHANGE_SUCCESSFUL 修改成功 DISP_CHANGE_RESTART 修改后需要重启 DISP_CHANGE_BADFLAGS 修改标志错误 DISP_CHANGE_BADPARAM 修改参数错误 DISP_CHANGE_FAILED 修改失败 DISP_CHANGE_BADMODE 修改模式错误 DISP_CHANGE_NOTUPDATED 只对于Windows NT/2000有效,不能写入注册表 */ #include "windows.h" #include #include #include "屏幕分辨率设置.h"
static int panelHandle; int __stdcall WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow) { if (InitCVIRTE (hInstance, 0, 0) == 0) return -1; /* out of memory */ if ((panelHandle = LoadPanel (0, "屏幕分辨率设置.uir", PANEL)) < 0) return -1; DisplayPanel (panelHandle); RunUserInterface (); DiscardPanel (panelHandle); return 0; } //修改按钮 int CVICALLBACK OkCallback (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { int Frequency; int HWPixel; int BitsPerPixel; long result; //声明该函数变量 DEVMODE lpDevMode; /* lpDevMode的主要属性为: dmBitsPerPel 象素位数 dmPelsWidth 水平分辨率 dmPelsHeight 垂直分辨率 dmDisplayFlags 设备修改方式 dmDisplayFrequency 刷新频率 dmPosition 多显示器显示内容位置设置,只对Windows 98, Windows 2000有效 */ switch (event) { case EVENT_COMMIT: //获得象素位数 GetCtrlVal (panelHandle, PANEL_RING_BIT, &BitsPerPixel); //获得水平分辨率 GetCtrlVal (panelHandle, PANEL_RING_RES, &HWPixel); //获得垂直分辨率 GetCtrlVal (panelHandle, PANEL_RING_FRE, &Frequency); //设置象素位数 lpDevMode.dmBitsPerPel = BitsPerPixel; //设备刷新频率 lpDevMode.dmDisplayFrequency = Frequency; if (HWPixel == 0) { //分辨率为1024*768 lpDevMode.dmPelsWidth = 1024; lpDevMode.dmPelsHeight = 768; } else { //分辨率为800*600 lpDevMode.dmPelsWidth = 800; lpDevMode.dmPelsHeight = 600; } //获得数据结构的大小 lpDevMode.dmSize = sizeof(lpDevMode); //设置要修改的字段 lpDevMode.dmFields = DM_PELSWIDTH|DM_PELSHEIGHT|DM_BITSPERPEL|DM_DISPLAYFREQUENCY; /* dmFields的主要属性为: DM_BITSPERPEL 设置象素有效 DM_PELSWIDTH 设置水平分辨率有效 DM_PELSHEIGHT 设置垂直分辨率有效 DM_DISPLAYFLAGS 设置显示设备的修改方式有效 DM_DISPLAYFREQUENCY 设置刷新频率有效 DM_POSITION 设置多显示器有效 */ //设置屏幕分辨率并获得返回值 result = ChangeDisplaySettings(&lpDevMode, 0); if (result == DISP_CHANGE_SUCCESSFUL) { ChangeDisplaySettings(&lpDevMode, CDS_UPDATEREGISTRY); } else { MessagePopup ("提示", "屏幕分辨率修改失败!"); } break; } return 0; } //退出按钮 int CVICALLBACK QuitCallback (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { switch (event) { case EVENT_COMMIT: QuitUserInterface (0); break; } return 0; }
Mc2r5oeY.rar (383.11 KB)
|