アークピットのホームページに戻る

WinAPIトピックのトップページに戻る

APIトピックの各章に移動する

ダウンロードのページに移動する
ダウンロードができ
ない場合の対処法
 

ページ移動

2-2-7. ウィンドウが表示されない場合の原因

 正常なコードのはずなのに、ウィンドウが表示されなくて困ったことがありませんか。ウィンドウが表示されないと、デバッグも困難で非常に難儀をします。結局は間違っていたのですが、以外と気づき難いものです。ウィンドウが表示されない場合は、一般的には下記の原因が考えられます。
  • CreateWindowやCreateDialogの後にShowWindowしていません。ただし、WS_VISIBLEのスタイルを指定している場合は、ShowWindowは必要ありません。
  • 他のウィンドウと重なっており、しかも対象のウィンドウが下層にある場合は見えません。子ウィンドウで良く起こります。
  • ダイアログボックスのテンプレート(リソース定義)が間違っている場合は、表示されません。ダイアログエディタを使用する場合は、めったに起こりませんが、テキストエディタで変更した場合などに考えられます。
  • WM_PAINTでコードが間違っていると、表示されないことがあります。
  • 表示は行なっているが、背景と同色で表示していないように見えることがあります。
  • ウィンドウのサイズが0で表示するエリアがない場合も表示されません。
 DialogBox関数のモーダルダイアログボックスは、WS_VISIBLEもShowWindowも必要ありません。そのため、CreateDialogのモードレスダイアログボックスで表示されないドラブルが発生することが良くあります。CreateDialogは、CreateWindowと同じ様にWS_VISIBLEを指定するか、ShowWindowをコールしないとウィンドウは表示されません。

 2つのウィンドウが重なることは、タブコントロールを使用する時には常時発生します。表示の優先順位を変更するには、SetWindowPos関数を使用します。

 子ウィンドウの場合は、位置とサイズの間違いで、表示されていない様に見えることが良くあります。WM_SIZE メッセージで操作する場合は、幅や高さが0であったり、他の子ウィンドウと領域が重なったりすることがあります。

ページ移動