ついでに。allocating and deleting wxWindows objects.(前半にょ)
> In general, classes derived from wxWindow must dynamically allocated with new and deleted with delete. If you delete a window, all of its children and descendants will be automatically deleted, so you don't need to delete these descendants explicitly.
> When deleting a frame or dialog, use Destroy rather than delete so that the wxWindows delayed deletion can take effect. This waits until idle time (when all messages have been processed) to actually delete the window, to avoid problems associated with the GUI sending events to deleted windows.
> Don't create a window on the stack, because this will interfere with delayed deletion.
ウィンドウをスタックに作るなゴルァ。削除の遅延が出来なくなるじゃねーか。
69 名前:65 mailto:sage [03/05/21 22:21]
後半にょ。
> If you decide to allocate a C++ array of objects (such as wxBitmap) that may be cleaned up by wxWindows, make sure you delete the array explicitly before wxWindows has a chance to do so on exit, since calling delete on array members will cause memory problems. wxWindowsがあぼーんするかもしんないオブジェクト(wxBitmapとかな)のC++ の配列 (STLのarrayのことか?)をC++でアロケートするんなら、終了時にwxWindows がそうする 前に、絶対、その配列を明示的にあぼんすれ。配列のメンバについてdelete を呼ぶと メモリの問題が発生するからな。
> wxColour can be created statically: it is not automatically cleaned up and is unlikely to be shared between other objects; it is lightweight enough for copies to be made. wxColourは静的に作成できまつ。自動的に削除されず、オブジェクト間で共有されるこ ともあんまないでつ。十分軽いのでコピー作ってもおkでつ。
> Beware of deleting objects such as a wxPen or wxBitmap if they are still in use. Windows is particularly sensitive to this: so make sure you make calls like wxDC::SetPen(wxNullPen) or wxDC::SelectObject(wxNullBitmap) before deleting a drawing object that may be in use. Code that doesn't do this will probably work fine on some platforms, and then fail under Windows. wxPenやwxBitmapといったオブジェクトを削除する際は、それらがまだ使用中でないか 気を付けよ。Windowsはこの点にたいへんウルサイ。であるから、使用中かも知れない オブジェクトを削除する前には、必ず、確実にwxDC::SetPen(wxNullPen) もしくは wxDC::SelectObject(wxNullBitmap)を呼ぶようにせよ。これを怠ったコードはいくつか のプラットフォームではちゃんと動くだろうが、Windowsではダメなんである。