• 締切済み

ダイアログを閉じるとメモリー消費が増える

メインウインドーに例えばA、Bという2個のモーダルダイアログを開くようにしていますが、Aのみで開いたり閉じたりするとメモリー消費が200kバイトづつ毎回増えてしまいます。 しかし、最初にBを一回開いて閉じておけば、その後は何回Aを開いてもメモリーは増えません。 また、メモリーの増えるタイミングはAのダイアログを開いた時ではなく閉じた時点で増えます。 解決策を教えてください。 //子ウィンドー作成 hwDialog_o = CreateWindowEx(0, "CDialog", "", WS_OVERLAPPED| WS_SYSMENU| WS_CAPTION| WS_BORDER| WS_VISIBLE| WS_CLIPCHILDREN| WS_EX_TOPMOST,//WS_CLIPCHILDRENでチラツキ防止 i, j, 660, 180, NULL, NULL, h_Inst, NULL); ShowWindow(hwDialog_o, nWinMode); UpdateWindow(hwDialog_o); // メインウインドウを無効化してモーダルに EnableWindow(hwnd,FALSE); ・ ・   色々と処理 ・ // メインウインドウを有効にしてモーダル解除 EnableWindow(hwnd,TRUE); BringWindowToTop(hwnd); return;

みんなの回答

回答No.1

ふむふむ。 で、閉じたダイアログウィンドウはどこで破棄しているの? DestroyWindowはどこでやってるの? まさか「関数を抜けたら勝手に破棄される」とか思ってないよね?

7777777v
質問者

お礼

原因を探します、ありがとうございました。

7777777v
質問者

補足

回答ありがとうございます。 >DestroyWindowはどこでやってるの? 色々の処理は・・・ while(msg.message!=WM_QUIT){ if (PeekMessage(&msg,NULL,0U,0U,PM_REMOVE)){ TranslateMessage(&msg); DispatchMessage(&msg); } この中で処理しています。 } ダイアログの閉じるボタンが押されると、ウィンドープロシージャーでWM_QUITが認識されます。 その時点でホイールがとけてここに来ます。 // メインウインドウを有効にしてモーダル解除 EnableWindow(hwnd,TRUE); BringWindowToTop(hwnd); return; ここでダイアログが実際に閉じます。 もちろん、動的メモリーは解放しています。

関連するQ&A