• 締切済み

モニタの物理解像度を得る(Win32API)

Visual C++ Express 2008 + Win32APIで、現在のモニタにとって最も自然な解像度を得るにはどうすれば良いのでしょうか。 たとえば 1600x1200のモニタを使っていたら、現在選択している解像度に関係なく、1600, 1200 という値を得たいのです。一見、EnumDisplaySettings を使って選択可能な解像度を列挙し、そのうち最も面積の大きなものを取得すればよさそうですが、ディスプレイ解像度よりも大きな解像度を表示できる機能が付いている場合があり、うまくいきません。 実際私が使っているネットブックは、モニタ解像度は1024x600ですが、縮小表示することによって1024x768を選ぶことができます。 ゲームのフルスクリーンモード時に、画像をドットバイドットで綺麗に表示させたいため、最適な解像度を自動で選べるようにしたいのです。

みんなの回答

  • Visar
  • ベストアンサー率19% (17/87)
回答No.2

現在のデスクトップのハンドルを HWND hWnd = ::GetDesktopWindow(); で取得して、 RECT rcWnd; ::GetClientRect( hWnd, &rcWnd ); で、そのデスクトップのクライアント領域の サイズを求める方式ではダメですか。

gookaziki
質問者

お礼

みなさまご回答どうもありがとうございます。 どうやら、APIで一発取得!なんて気軽には行かないようですね。 ご指摘のとおり、液晶モニタのみを考慮にいれていて、それ以外のディスプレイに付いては考えていません。 「ゲーム起動時に設定されていたモニタの解像度」=「ユーザーに取って最も自然な解像度」と考える程度にして、あまり深く突っ込まないほうがいいかもしれません。 手間に見合うだけの結果が得られるのか尋ねられれば、素直にハイと言えないので。 どうもありがとうございました

  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.1

液晶モニタの場合は「ドットバイドット」というのがありますが、CRTだった場合はどうするのでしょう? # まぁCRTは衰退している状況ですから考慮しないというのもあるかと思いますが… プラグアンドプレイモニタであれば、VESA DDCでモニタから情報を取得することが可能かと。 WindowsでやるとなるとDDKとか必要なんですかねぇ…。 # 試したコトはありませんが。 # http://blogs.yahoo.co.jp/linear_pcm0153/33922027.html # によるとアプリで取得できているっぽいので何らかの方法があるのでしょう。(レジストリ読んでいるのかも知れませんが) 「EDID API」で検索してみると http://www.nicomsoft.com/wini2cddc/ なんてのも見つけました。 正直、そこまでの手間をかけてドットバイドットを自動で…もどうかと思いますが… ユーザーによる選択の方が確実かとも思えますけど。 # ドットバイドットにならないモノを選択したとしてもそれはユーザー側の指定ですし、表示が多少狂う…って程度でしょう。 # PC側の能力が低くて、多少荒くなっても低解像度でなるべく軽く動かしたい。という要望もあるやもしれません。

関連するQ&A

  • PCモニタの解像度について教えてください

    PCモニターの解像度についてお教えください。 現在使用しているノートが14インチモニタ(解像度3000x2000dpi)です。 このノートを外付けディスプレイで使いたいと思い24インチモニタ(最大1920x1080)に繋いだところ、 ノートの画面とほぼ同じ表示範囲が拡大されたような感じで24インチに表示されています。 まず、この理屈がよくわかりません。 ノートの解像度からすれば相当四辺が切り落とされたようになる気がするのですが。 やはり切り落とされているのでしょうか。壁紙が同じ画角のため騙されているのでしょうか。 たしかに間延びしたというがウインドウや拡大されすぎて文字も大きすぎるので、この2台を並べて同じ距離感で使うのは無理という感じがします。 (1920x1080)というのはゴクゴク一般的な24インチモニタの解像度です。デスクトップPCをつないだら本当にこんなに大きな文字が表示の限界なのかな、という疑問もあります。職場で見る1920x1080はもっと細かく感じるのですが。 ここで質問ですが、WQHD(2560x1440)というモニタを購入すれば小さな表示が可能となり、ノートと並べて(拡張表示)使うことが出来るのでしょうか。

  • 液晶モニタの解像度

    液晶モニタの解像度 いま1280x1024の表示が可能な液晶モニタを持っています。オンラインゲームをするときはウインドウモードで1280x720の解像度で起動します。 そこで質問なのですがゲームをする以外のとき(インターネットなど)使っているときに1280x720の解像度に設定すると縦長になってしまいます。 説明がわかりにくいと思いますが、用はゲーム以外のときも1280x720の解像度で使いたいわけです(縦長にならないように、あと上と下に表示できなくなってもかまいません)

  • モニタの解像度より大きな解像度に設定したい。

    画面の解像度をモニタの解像度より大きく設定するにはどうすればいいんでしょうか? 例えば 1600x1200のモニタに2000x2000を設定するとマウスが画面の端にくるとスクロールする という感じになるのですが… 画面のプロパティで通常はモニタの解像度までしか出てこないのに、それ以上の解像度が選択可能になってました。 RadeonHD XP & Vista どちらのOSだったか忘れました。XPだったような気がする。 以前できたことがあるんですが今はできません。 ドライバインストール時の一時的なものだったのか?

  • Win10からモニターの最大解像度が選択できない

    ThinkPadのT470pを利用しております。最近、T470pの拡張モニターとしてThinkVisionのT34W-20を購入しました。が、T34W-20の最大解像度の3440x1440がWin10のモニター設定から表示せず、選択できない状態です。選択できる最大解像度は2560x1080となっております。原因は何でしょうか。 ※OKWAVEより補足:「Lenovo:アクセサリー・周辺機器」についての質問です。

  • 21インチLCDモニタで解像度を1024x768にできる?

    はじめまして。 現在21インチのCRTディスプレイを使用しておりますが調子が悪くなったのでこの際,液晶ディスプレイに買い換えようと思ったのですが,1つ分からない点があります。 現在21インチCRTで解像度を1024x768に設定して,とても使いやすく大きさにも慣れているのですが,LCDの場合19インチですと推奨解像度が1280x1024に,21インチですと1600x1200と書かれています。 LCDだと,推奨解像度以外に設定すると画面がにじんだようになってキレイに表示されないと記憶しているのですが,1024x768に設定してキレイに表示できるものなのでしょうか。 ちなみに学校にある17インチのLCDで1024x768に設定すると「このモニタは1280x1024が最適です」と表示されて,1024x768では文字がにじんだようになって,くっきりとした表示でなくなってしまいます。CRTの時は解像度を変えても,画像の品質は変わらなかったのですが,LCDってこういうものなのでしょうか。 長くなってすみません。ご存じでしたらお教え頂ければと思います。

  • モニタ解像度

    指定の解像度にしても、ぼやけて正常に表示されません。 デル製モニタ・デル E207WFP 20インチワイド TFT液晶モニタ (ブラック)を購入しました。最大解像度が1680x1050だったので、それにあわせてグラフィックプロパティで画面の解像度を1680x1050に設定しましたが、くっきり見える部分とにじむ部分が縦縞のように交互に入り乱れ、非常に見にくい状態になっています。 アスペクト比保持・全画面表示どちらに変更してもかわりません。 1680x1050以外の画面サイズにすると、すべてぼやけるため、これ以外の設定を使用できないのですが、どのようにしたら全面ぼやけることなく見られるようになるか、お教えください。

  • 19インチ液晶モニターの解像度?

    19インチ液晶モニターの解像度1024X768で 使っているのですが 1280X1024にあわせて下さいとモニターから支持があります、1280X1024にあわせると 何から何まで 小さくうつり ものすごく 画面が見にくくなります、このまま1024X768で使っていても支障はないのでしょうか?   また何か 調整方法などあるのでしょうか? 教えてください。

  • モニタの解像度について

    Power Mac G4 M8359J/A OS9.2.2でいまだにCRTモニタを使用していましたがさすがに壊れてしまい、先日、三菱のRDT231WM-Xを購入した所、CRTモニタを使用していた時にコントロールパネルのモニタで表示していた解像度と違う内容が表示されて最適な解像度が選べず、全体に上下につぶれた状態になっています。モニタを購入する際に現在の解像度を調べてから購入して下さいとお店の方に言われたので解像度をメモして行き、一致する物を購入したのですが、新しい液晶モニタを接続した所、コントロールパネルのモニタに表示される解像度の内容が変わってしまいました、古いMacなのでいろいろと問題があると思いますが困っているので、何か良い方法を知っている方がいましたら教えて下さい、宜しくお願いします。

    • 締切済み
    • Mac
  • 画面の解像度変更がうまくいきません・・・

    SHARP PC-MM1-H3W(MURAMASA)を使用しているのですが、画面の解像度変更がうまくいかず困っています。 1024x768で画面を表示するとモニターと画面表示があっているのですが、800x600に変更すると1024x768の画面がそのまま縮小された感じ(モニター全てに表示されていない)、1280x1024に変更すると1024x768が拡大され画面が見切れて表示されてしまいます。 画面の解像度を変更する場合には、画面のプロパティからの変更以外に作業が必要なのでしょうか? お知恵をお貸しください。 宜しくお願いします。

  • デスクトップの解像度

    Windows Vistaを使用しています。 デスクトップの解像度を 864x648 960x720 1152x864 1280x720 1280x768 1280x960 1400x1050 の解像度に設定しても黒い画面が表示されます。 正常に表示されるのは 800x600 1024x768 1280x1024 です。 以前は全ての解像度が正常に表示できていました。 どうしたら正常に表示できるようになるのでしょうか? PCは「NEC VX500BD」 モニターは「F17R31」 ビデオカードは「ATI Radeon X600」 を使用しています。

専門家に質問してみよう