子ウィンドウって…

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
だんごさん
記事: 273
登録日時: 13年前

子ウィンドウって…

#1

投稿記事 by だんごさん » 12年前

Windows系のプログラムを最近興味持ってやってみたんですが、ちょっと気になったことがあってトピックを立てさせてもらいました。
Windowsのプログラムで親ウィンドウは大体常に表示されますが、子ウィンドウなど何かのイベントで表示させたい場合、ShowWindow?みたいなので表示しますが、それをプログラム上から閉じた場合、再度ウィンドウを表示するのはどうやってるんでしょうか?
初めは完全に閉じずに、まるで閉じたかのようにウィンドウを消し、またイベントが起きた時に表示してるのかなと思ったのですが、これであってるのですか?
普通に考えてこうだろ…とか、何言ってるんだ?…とか思うかもしれませんがお願いします。
 Dango San

赤鬼
記事: 58
登録日時: 13年前

Re: 子ウィンドウって…

#2

投稿記事 by 赤鬼 » 12年前

だんごさん さんが書きました:Windows系のプログラムを最近興味持ってやってみたんですが、ちょっと気になったことがあってトピックを立てさせてもらいました。
Windowsのプログラムで親ウィンドウは大体常に表示されますが、子ウィンドウなど何かのイベントで表示させたい場合、ShowWindow?みたいなので表示しますが、それをプログラム上から閉じた場合、再度ウィンドウを表示するのはどうやってるんでしょうか?
初めは完全に閉じずに、まるで閉じたかのようにウィンドウを消し、またイベントが起きた時に表示してるのかなと思ったのですが、これであってるのですか?
普通に考えてこうだろ…とか、何言ってるんだ?…とか思うかもしれませんがお願いします。
単純にもう一度作って表示すればいいのでは?

コード:

        case WM_KEYDOWN:

		hwndChild = CreateWindow(  "Child",    /*  ウインドウ作成          */  
                            "Child Window",
                            WS_CHILD | WS_OVERLAPPEDWINDOW,
                            CW_USEDEFAULT,
                            CW_USEDEFAULT,
                            100,
                            150,
                            hwnd,
                            (HMENU)NULL,
                            GetHInstance(),
                            0);
                ShowWindow(hwndChild, SW_SHOW);
                UpdateWindow(hwndChild);
		break;
のように。
一つしかウィンドウを作らないのでしたら、それなりの制御が必要だと思いますが。

オカピーα
記事: 120
登録日時: 13年前

Re: 子ウィンドウって…

#3

投稿記事 by オカピーα » 12年前

CreateWindow関数で一発だと思います
C,C++,C#,これらを極めることを「3C政策」と言う

だんごさん
記事: 273
登録日時: 13年前

Re: 子ウィンドウって…

#4

投稿記事 by だんごさん » 12年前

ご返信ありがとうございます。
やはり隠して表示ではなく、完全に削除&作成なんですね。
参考になりました。
 Dango San

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: 子ウィンドウって…

#5

投稿記事 by ISLe » 12年前

頻繁に表示するウィンドウならShowWindowのSW_HIDEで非表示にして、SW_SHOW系で再表示することもしばしばあります。

閉じるときにDestroyWindowしたらCreateWindowするしかないですが、DestroyWindowしなければいけないというルールはないです。

閉鎖

“C言語何でも質問掲示板” へ戻る