C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: ウィンドウの閉じるボタンを無効


(過去ログ 57 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■32243 / inTopicNo.1)  ウィンドウの閉じるボタンを無効
  
□投稿者/ メトロノーム (1回)-(2009/02/03(Tue) 21:04:38)

分類:[C/C++] 

はじめまして!
初心者ですがよろしくお願いします!

win32プロジェクトでフォームを作っています。
ウィンドウタイトルバーの右端に「×」ボタンありますよね?
それを押してもウィンドウを削除しない方法ってありますか?

メインフォームの×ボタンは終了でいいのですが、メインから
遷移したサブフォームで×ボタンを押されてしまうと、もう一度メインから
サブフォームを開こうとしてもハンドルがないので開けなくなってしまいます。
WM_DESTROYイベントでShowWindow(hWnd, SW_HIDE)としても、後の
祭りのように無視されてしまいます。
つまり、ウィンドウは非表示にするけどハンドルは保持したまま。
というのが実現したい内容です。

もしかしたら根本から間違った作りをしてるかもしれませんので、
それはそれでご指摘いただけると助かります!

開発している環境はVC2008 / WinXPです。

以上になりますがよろしくお願いします!
引用返信 編集キー/
■32244 / inTopicNo.2)  Re[1]: ウィンドウの閉じるボタンを無効
□投稿者/ .SHO (647回)-(2009/02/03(Tue) 21:12:26)
No32243 (メトロノーム さん) に返信

> もしかしたら根本から間違った作りをしてるかもしれませんので、
> それはそれでご指摘いただけると助かります!

間違ってるとは言わないですが、ハンドルを保持したままにするのではなく
毎回ウィンドウを作成した方がいいと思います。

引用返信 編集キー/
■32250 / inTopicNo.3)  Re[2]: ウィンドウの閉じるボタンを無効
□投稿者/ Azulean (283回)-(2009/02/03(Tue) 22:36:39)
WM_DESTROYがどういうものかはご存知ですか?
MSDNに下記のように記載がありますよ。

http://msdn.microsoft.com/en-us/library/ms632620.aspx
> The WM_DESTROY message is sent when a window is being destroyed.
> It is sent to the window procedure of the window being destroyed after the window is removed from the screen.

どうしてもCloseではなく、Hideにしたいなら、この辺とか。

http://msdn.microsoft.com/en-us/library/ms646360.aspx
http://msdn.microsoft.com/en-us/library/ms632617.aspx

引用返信 編集キー/
■32258 / inTopicNo.4)  Re[1]: ウィンドウの閉じるボタンを無効
□投稿者/ aetos (93回)-(2009/02/04(Wed) 00:28:06)
aetos さんの Web サイト
No32243 (メトロノーム さん) に返信
> メインフォームの×ボタンは終了でいいのですが、メインから
> 遷移したサブフォームで×ボタンを押されてしまうと、もう一度メインから
> サブフォームを開こうとしてもハンドルがないので開けなくなってしまいます。
> WM_DESTROYイベントでShowWindow(hWnd, SW_HIDE)としても、後の
> 祭りのように無視されてしまいます。
> つまり、ウィンドウは非表示にするけどハンドルは保持したまま。
> というのが実現したい内容です。

WM_DESTROY は DestroyWindow を呼ぶと送られてくるメッセージです。
今回は×ボタンを押しても破棄しちゃだめなんだから、DestroyWindow しちゃダメです。

×ボタンを押すとWM_CLOSEが送られてきます。
この時にウィンドウを破棄したくなければ、DefWindowProc を呼ばずにウィンドウプロシージャを抜ければいいです。
その時にウィンドウを非表示にすればいいでしょう。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -