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