
@ITの
http://www.atmarkit.co.jp/fwcr/special/custom_br …
を参考にブラウザを作ろうと思っています.
上記記事中のソースコード
http://www.atmarkit.co.jp/fwcr/special/custom_br …
をコピペしてビルドしたところ,確かにブラウザになったのですが,ウインドウサイズの変更がうまくいきません.
ウインドウ縁をドラッグしたり,最大化ボタンをクリックしてサイズの変更をしても,描画領域は変更されないのです.
(例えば)
・アプリ起動時に300x300のウインドウが生成,yahoo.co.jpが表示される
・縁をドラッグして450x450にする
・ウインドウは大きくなるものの,300x300の範囲にしかyahooが表示されない(スクロールバーの位置も変わらない)
といった具合です.
どうすればウインドウサイズとともに描画領域も変化するようになるのでしょうか?
No.2ベストアンサー
- 回答日時:
★『WM_SIZE』メッセージ(ハンドラ)などを処理すること
・ウインドウのサイズを変更したときに、ブラウザ画面をウインドウサイズに合わせて
いないためです。スクロールバーの位置が変わらないのはその為です。
ぱっと見た限りでは『WM_SIZE』メッセージを処理していないようです。
・『WM_SIZE』メッセージでウインドウのサイズが変化したときに、ブラウザ画面をその
サイズに合うように再設定する必要があります。→『MoveWindow』や『SetWindowPos』
API関数でサイズを変更できます。
・もう一度、ソースを良く見直してから『WM_SIZE』メッセージ(ハンドラなど)の処理が
記述されていないときは、『WM_SIZE』メッセージでサイズの変更を処理して下さい。
最後に:
・なお、再描画はされていると思います。
ですのでウインドウ縁をドラッグしたり、最大化ボタンをクリックしてサイズの変更が
発生したときに、『WM_SIZE』メッセージ内で描画領域のサイズを自分で変更させる必要が
あるのです。
・『MoveWindow( hWnd, 横位置, 縦位置, 横サイズ, 縦サイズ, TRUE );』
・『SetWindowPos( hWnd, NULL, 0, 0, 横サイズ, 縦サイズ, (SWP_NOMOVE|SWP_NOZORDER|SWP_SHOWWINDOW) );』
・以上。おわり。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Minecraft 統合版(PC)の描画距...
-
Form1 Load で実行されない。
-
[VB.net] DataGridViewの列ヘッ...
-
TextBoxに文字を書いても表示さ...
-
InvalidateRectの使い方について
-
VB6,リストボックスの特定行の...
-
Win32 API 途中から描画がおか...
-
GDI+について
-
MFC FormViewの背景色
-
VBAにGDI+を参照させる方法
-
クラリス・インパクトに代わる...
-
DirectXでの変数の表示について
-
CStaticコントロールの静的イメ...
-
UpdateData( FALSE); による文...
-
word
-
MFCタブコントロールのグラデー...
-
グラフの交点の求め方(Excel)
-
エクセルで作った新しいウイン...
-
コントロールの書式設定で、“コ...
-
「アイテムは収集されました」...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Minecraft 統合版(PC)の描画距...
-
[VB.net] DataGridViewの列ヘッ...
-
word
-
TextBoxに文字を書いても表示さ...
-
panelのスクロール表示について
-
google Colabでmatplotlibの描...
-
MFCでOnPaintのタイミング
-
CStaticコントロールの静的イメ...
-
VBAにGDI+を参照させる方法
-
Form1 Load で実行されない。
-
InvalidateRectの使い方について
-
CScrollViewの使用方法について
-
GDI+について
-
VC++プログラムをつかったBMP画...
-
ウインドウサイズを変更しても...
-
VB6,リストボックスの特定行の...
-
タブをオーナードローすると、...
-
ビットマップを表示させる(MFC)
-
UpdateData( FALSE); による文...
-
C++にて、塗りつぶされた円を描...
おすすめ情報