- ベストアンサー
二台目のディスプレーのデータを取り込みたい。
ノートパソコン(1280×768)に、外部ディスプレー(1280×1024以上の物)を、取り付けて、外部ディスプレー側に表示しようとしています。 外部ディスプレーで、ウインドウを最大にした時に、画面の縦横のドット数を知りたいのですが、どうすればいいのでしょうか? GetSystemMetrics関数で、SM_CXSCREEN では、ノートのディスプレーの縦横ドット数しか、得られなかったのですが。どなたかご存じの方、ご教授下さい。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 下のコードに関して補足ですが、以下のような情報もありますので、LoadLibraryを使う場合は起動時終了時に1回だけ行うようにしたほうがよさそうです。 Win32 アプリケーションでシステム DLL (例 USER32.DLL、ADVAPI32.DLL、GDI32.DLL )をロード、フリーを繰り返すような処理を行うと Windows NT ではリソースのリークが発生します。 http://support.microsoft.com/default.aspx?scid=kb%3Bja%3BJP171145 あと、よくみるとprintfのとこ間違ってますね。。幅、幅になってしまってます。。
その他の回答 (2)
- xcrOSgS2wY
- ベストアンサー率50% (1006/1985)
LoadLibraryでのリソースリークの件は、かわりにGetModuleHandleを使用すれば回避できるかと思います。 それから、Windows 2000より古いWindows NTやWindows 95への対応が必要でない場合は、GetProcAddressを使用せず直接EnumDisplayDevicesやEnumDisplaySettingsを呼び出して差し支えないかと思います。
お礼
ありがとうございました。 教えて頂いたことを、調べて色々とわかり助かりました。 また、よろしくお願いします。
- buihyaku
- ベストアンサー率29% (97/326)
EnumDisplayDevicesでデバイスを列挙して、EnumDisplaySettingsで情報取得すればよいようです。 以下かなりいいかげんなコードですが、いちおう動くということで、、 -------------------------- #include "stdafx.h" #include <windows.h> #include <stdio.h> int main(int argc, char* argv[]) { typedef BOOL (WINAPI *pEnumDisplayDevices)(PVOID,DWORD,PVOID,DWORD); typedef BOOL (WINAPI *pEnumDisplaySettings)(LPCTSTR,DWORD,LPDEVMODE); DISPLAY_DEVICE dd; ZeroMemory( &dd, sizeof(DISPLAY_DEVICE) ); dd.cb = sizeof(dd); HMODULE hm = LoadLibrary( "USER32" ); pEnumDisplayDevices pfnEnumDispDevices = (pEnumDisplayDevices)GetProcAddress( hm, "EnumDisplayDevicesA" ); pEnumDisplaySettings pfnEnumDisplaySettings = (pEnumDisplaySettings)GetProcAddress( hm, "EnumDisplaySettingsA" ); DWORD devnum = 0; while ( pfnEnumDispDevices( NULL, devnum, &dd, 0 ) ) { DEVMODE dvmode; ZeroMemory( &dvmode, sizeof(DEVMODE) ); pfnEnumDisplaySettings( (const char*)dd.DeviceName , ENUM_CURRENT_SETTINGS, &dvmode); printf( "%d, %d\n", dvmode.dmPelsWidth , dvmode.dmPelsWidth ); devnum++; } FreeLibrary( hm ); /*キーを押すまで止る*/ printf( "Finished\n" ); getchar(); return 0; }
お礼
ありがとうございました。 色々調べたつもりだったのですが、分からなくて困っていました。 また、お願いいたします。