none
MFCでズームを使う RRS feed

  • 質問

  • お世話になっております。

    MFCでズームを使う方法を探しています。

    たとえば、ダイアログやビューの中のアイテムすべてに対して200%ならば200%とすべてを拡大表示できる方法を探しています。コンテンツのみを拡大してウインドウはそのままにしておこうと思っています。

    おそらくMFCではサポートされていないためCDCなどを変更しながら倍率をかけていくのだと思いますが、

    それとも一つ一つのコントロールなどを気にしなくてもすべてに対して対応できるやり方があるのでしょうか?

    今のところ調べたところだとCScrollViewを変更させる方法が近いのかなと思うのですが

    なにか情報をいただければと思います。

    以上よろしくお願いします。


    • 編集済み Beavis28 2012年8月17日 22:02
    2012年8月17日 3:28

回答

  • >これをデバイスコンテキストなどで拡大する方法はあるのでしょうか?

    できません。
    コントロール(=ウインドウ)はそのHWNDに固有のHDCに対して描画します。
    これは、CS_PARENTDCでも原理的には同じです。
    従って、SetViewportExtEx()やSetWindowExtEx()適用したHDCを用意しても
    それに対して描画させることはできません。
    基本的には対象コントロールの全てに対してSetWindowPos()を使用することに
    なりますが、これだけだとフォントサイズを追従させることができませんので、
    さらに工夫が必要です。
    また、フレーム(NonClient)部分には手出しができませんので、この部分は
    原理的に拡大できません。ボタンのフォーカス枠なども同様と考えられます。
    従って、ご希望の機能を実装するのは大変な労力が必要になる上、
    仕様的に大きく妥協しなければならないと予想できます。

    別のアイデアもでるかもしれませんので、差し支えなければ、
    コントロールごと拡大していったい「何をしたい」のかを説明してみてはどうでしょう。

    • 回答の候補に設定 佐伯玲 2012年8月30日 7:57
    • 回答としてマーク 佐伯玲 2012年9月3日 2:19
    2012年8月21日 3:55

すべての返信

  • MFCはご希望を叶える簡単な手段は提供していません。
    すべて自力でコードする必要があります。

    さて、視覚に問題のあるユーザー向けの機能(アクセシビリティ)を目指している場合であれば、
    「拡大鏡」というアプリケーションがあります。
    Windows7の場合、Windowsボタンから「すべてのプログラム」の「アクセサリ」の
    「コンピューターの簡単操作」の中にあります。

    • 回答の候補に設定 佐伯玲 2012年8月30日 7:57
    2012年8月19日 2:08
  • ご返答ありがとうございます。

    ツールではなくアプリケーションの中で実現する方法を探しています。

    基本的に自分のやりたいことは下のリンクのようなことなのですが、これだとボタンなどのコントロールが拡大されませんでした。

    http://www.codeproject.com/Articles/7348/CZoomView

    これをデバイスコンテキストなどで拡大する方法はあるのでしょうか?

    それともMoveWindowでサイズ変更をかけなければいけないのでしょうか?

    2012年8月19日 3:06
  • >これをデバイスコンテキストなどで拡大する方法はあるのでしょうか?

    できません。
    コントロール(=ウインドウ)はそのHWNDに固有のHDCに対して描画します。
    これは、CS_PARENTDCでも原理的には同じです。
    従って、SetViewportExtEx()やSetWindowExtEx()適用したHDCを用意しても
    それに対して描画させることはできません。
    基本的には対象コントロールの全てに対してSetWindowPos()を使用することに
    なりますが、これだけだとフォントサイズを追従させることができませんので、
    さらに工夫が必要です。
    また、フレーム(NonClient)部分には手出しができませんので、この部分は
    原理的に拡大できません。ボタンのフォーカス枠なども同様と考えられます。
    従って、ご希望の機能を実装するのは大変な労力が必要になる上、
    仕様的に大きく妥協しなければならないと予想できます。

    別のアイデアもでるかもしれませんので、差し支えなければ、
    コントロールごと拡大していったい「何をしたい」のかを説明してみてはどうでしょう。

    • 回答の候補に設定 佐伯玲 2012年8月30日 7:57
    • 回答としてマーク 佐伯玲 2012年9月3日 2:19
    2012年8月21日 3:55
  • こんにちは、Beavis28 さん
    フォーラムオペレータの佐伯 玲 です。

    その後如何でしょうか?
    Beavis28 さんが当初希望していた方法での実現は難しそうです。

    仲澤@失業者 さんの仰る通り可能であれば「何をしたいか?」というような質問の背景を一度説明して頂ければ
    また新たな方法など模索する事が出来るかもしれません。

    このスレッドのテーマである「MFCでズームを使う」という質問に対しては
    仲澤@失業者 さんの投稿された内容が現在回答に近いので一旦回答としてマークさせて頂きました。

    追加の情報等ありましたら是非ご返信下さいませ。

    今後ともMSDNフォーラムを宜しくお願い致します。
    _________________________
    日本マイクロソフト株式会社 フォーラム オペレーター 佐伯 玲



    • 編集済み 佐伯玲 2012年9月3日 2:19 回答の候補から回答へ
    2012年8月30日 7:56