プロが教える店舗&オフィスのセキュリティ対策術

@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が表示されない(スクロールバーの位置も変わらない)

といった具合です.
どうすればウインドウサイズとともに描画領域も変化するようになるのでしょうか?

A 回答 (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) );』
・以上。おわり。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
おっしゃる通り、問題はウインドウプロージャにありました。
おかげさまで解決できました。

お礼日時:2007/04/04 17:37

ソース途中で読むのがめんどくさくなったので


ソース以前の問題。
Windowサイズ変更した後、再描画の処理されている?
    • good
    • 0
この回答へのお礼

お礼を投稿したつもりが、できていなかったようです。
申し訳ありません。
問題はウインドウプロージャにありました。
回答してくださってありがとうございました。

お礼日時:2007/04/05 12:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!