全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2198
推到 Plurk!
推到 Facebook!

改變第二個螢幕解析度

答題得分者是:taishyang
BCBNPC
一般會員


發表:14
回覆:15
積分:5
註冊:2008-11-25

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-09-10 14:21:06 IP:61.224.xxx.xxx 訂閱
大家好:

在我的電腦上,有兩個螢幕
一般來控制時,我用 Screen->Monitors[0]、Screen->Monitors[1]去控制第1、2個螢幕

但如題,若要只改變第二個螢幕的解析度,一直做不到
我有找許多相關文章,做出來卻變成只改變第一個螢幕解析度@@...

相關文章:delphi.ktop.com.tw/board.php

我的程式碼:

我這個做法,螢幕只會閃一下,不做動作
[code cpp]
void __fastcall TForm1::Button1Click(TObject *Sender)
{
BYTE a[] = "\\.\Display2";
DEVMODE DeviceMode;
strcat( DeviceMode.dmDeviceName, a );
DeviceMode.dmSize = sizeof(TDeviceMode);
DeviceMode.dmPelsWidth = 1280;
DeviceMode.dmPelsHeight = 1024;
DeviceMode.dmFields = DM_ORIENTATION || DM_PELSWIDTH || DM_PELSHEIGHT;
ChangeDisplaySettings( &DeviceMode, CDS_UPDATEREGISTRY);
}

[/code]

我用另外一個做法,會變成改變第一個螢幕解析度:
[code cpp]
void __fastcall TForm1::Button4Click(TObject *Sender)
{
DEVMODE deDisplayMode, deCurDisplayMode;
EnumDisplaySettings( NULL, ENUM_CURRENT_SETTINGS, &deCurDisplayMode);
EnumDisplaySettings( NULL, ENUM_CURRENT_SETTINGS, &deDisplayMode);
unsigned char a[] = "\\.\Display2";
strcat( deDisplayMode.dmDeviceName, a );
deDisplayMode.dmPelsWidth = 1280;
deDisplayMode.dmPelsHeight = 1024;
deDisplayMode.dmSize=sizeof(deDisplayMode);
ChangeDisplaySettings(&deDisplayMode, CDS_UPDATEREGISTRY);
}
[/code]

請問各位,該如何修改呢??謝謝!
編輯記錄
BCBNPC 重新編輯於 2009-09-10 14:22:44, 註解 無‧
BCBNPC 重新編輯於 2009-09-10 14:23:02, 註解 無‧
BCBNPC 重新編輯於 2009-09-10 14:23:20, 註解 無‧
taishyang
站務副站長


發表:377
回覆:5486
積分:4552
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-09-10 14:45:46 IP:122.116.xxx.xxx 訂閱
下面連結有提到
http://delphi.ktop.com.tw/board.php?cid=30&fid=72&tid=98600
目前只會改變 主螢幕,無法變更子螢幕(延伸螢幕)
引用 ChangeDisplaySettingsEx即可
BCBNPC
一般會員


發表:14
回覆:15
積分:5
註冊:2008-11-25

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-09-10 15:56:49 IP:61.224.xxx.xxx 訂閱
抱歉~

請問做法是?

真是糟糕...經大大一提
我才發現多了個"Ex"...下次要看仔細了!..
------------------------------------------------------------------------
我剛剛試了一下

[code cpp]
ChangeDisplaySettingsEx( NULL, &DeviceMode, NULL, CDS_UPDATEREGISTRY, NULL );
[/code]

還是沒有辦法,所以是我搞錯使用方式了嗎?~
編輯記錄
BCBNPC 重新編輯於 2009-09-10 16:59:23, 註解 無‧
BCBNPC
一般會員


發表:14
回覆:15
積分:5
註冊:2008-11-25

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-09-14 09:40:45 IP:61.224.xxx.xxx 訂閱
大家好:

我參考了一篇
寫出的結果如下

雖然是會調整(因為我用CDS_RESET),但是不是調整成1280*1024

該如何處置呢?~


[code cpp]
int status;
DISPLAY_DEVICE dv;
DEVMODE dm;
POINTL pt;
dv.cb = sizeof(dv);
dm.dmSize = sizeof(dm);

dm.dmFields = DM_POSITION;
dm.dmPelsWidth = 1280;
dm.dmPelsHeight = 1024;

status = EnumDisplayDevices( NULL, 1, &dv, 0);
status = EnumDisplaySettings( dv.DeviceName, ENUM_CURRENT_SETTINGS, &dm );

status = ChangeDisplaySettingsEx( dv.DeviceName, &dm, NULL, CDS_RESET, NULL );
if( status == DISP_CHANGE_SUCCESSFUL )
ShowMessage( "OK" );
[/code]

系統時間:2017-10-24 19:32:38
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!