アプリケーションの初期化と終了

この節の関数は,アプリケーションの起動や終了を行ったり, GUI プログラムのメインイベントループの挙動を制御したりするために 使われます.



::wxEntry

プラットフォーム毎に異なる方法を使って wxWidgets を初期化します. wxWidgets の標準のエントリコードを使っていない場合 (main や WinMain を 使っていない場合) にこの関数を使ってください. たとえば,Microsoft Foundation Classes を使ったアプリケーションから wxWidgets を初期化する場合にこの関数を使います.



void wxEntry(HANDLE hInstance, HANDLE hPrevInstance, const wxString& commandLine, int cmdShow, bool enterLoop = true)

Windows 下 (非 DLL) での wxWidgets の初期化です. enterLoop が false の場合,この関数は wxApp::OnInit を呼び出してすぐ 処理を戻します.それ以外の場合,wxWidgets のメッセージループに入ります.



void wxEntry(HANDLE hInstance, HANDLE hPrevInstance, WORD wDataSegment, WORD wHeapSize, const wxString& commandLine)

Windows 下 (DLL として構築されたアプリケーションの場合) での wxWidgets の初期化です.



int wxEntry(int argc, const wxString& * argv)

Unix での wxWidgets の初期化です.

Remarks

wxWidgets をクリーンアップ処理するには wxApp::OnExit を呼び出した後に wxApp::CleanUp を呼び出します.たとえば, MFC と wxWidgets を使っている アプリケーションを終了する際には以下のように書きます:

int CTheApp::ExitInstance()
{
  // OnExit isn't called by CleanUp so must be called explicitly.
  wxTheApp->OnExit();
  wxApp::CleanUp();

  return CWinApp::ExitInstance();
}

Include files

<wx/app.h>



::wxGetApp



wxAppDerivedClass& wxGetApp(void)

この関数は wxWidgets 内の関数ではなく, IMPLEMENT_APP マクロを使って書かれています. 従って,この関数を使う場合には,マクロを使っているのと同じモジュールの どこかで DECLARE_APP を使い, IMPLEMENT_APP を利用できるようにしておかねば なりません.

グローバル変数の wxTheApp ポインタを使わずにこの関数を使うことの利点は, wxTheApp が wxApp * 型を使っているために,自分のアプリケーション だけで定義されており, wxApp 内で定義されていないような関数にアクセス できないのに対し,wxGetApp() が正しい型のオブジェクトを返すことに あります.



::wxHandleFatalExceptions



bool wxHandleFatalExceptions(bool doIt = true)

doIt が true であれば,致命的な例外 (Windows では一般保護違反, Unix ではセグメンテーション違反) を捕捉して, wxApp::OnFatalException に渡すように します.デフォルト,すなわちこの関数を呼び出す前は,致命的な例外は 通常の方法で扱われ,たいていはアプリケーションが終了します. doIt を false にして wxHandleFatalExceptions() を呼び出すと, 例外の処理方法をデフォルトの動作に戻します.



::wxInitAllImageHandlers



void wxInitAllImageHandlers(void)

利用できるイメージハンドラを全て初期化します.利用できるハンドラの リストについてはwxImage を参照してください.

See also

wxImage, wxImageHandler

Include files

<wx/image.h>



::wxInitialize



bool wxInitialize(void)

wxBase だけを使い,かつ wxApp オブジェクトを まったく生成しない場合にのみ,この関数を使います.そのような場合には, main() 関数内で,他の wxWidgets 関数を呼び出す前に呼び出さねば なりません.

関数が false を返した場合,初期化が行われなかったことを 表します.その場合,wxWidgets ライブラリは利用できず, wxUninitialize の呼び出しもできません.

この関数は何度も呼び出しできますが, wxUninitialize を呼び出せるのは この関数の呼び出しに成功するごとに一度だけです.

Include files

<wx/app.h>



::wxSafeYield



bool wxSafeYield(wxWindow* win = NULL, bool onlyIfNeeded = false)

この関数は wxYield に似ていますが,実際に wxYield を呼び出す前に プログラム上のウィンドウに対するユーザ入力を無効にし,その後で再度 有効にします. win が NULL でない場合,ウィンドウは有効な ままになり,ユーザとの限定的な対話操作を実装できるようになっています.

::wxYield の呼び出し結果を返します.

Include files

<wx/utils.h>



::wxUninitialize



void wxUninitialize(void)

コンソール (wxBase) プログラムでしか使いません. wxInitialize の呼び出しに成功する毎に 一度しか呼び出せません.

Include files

<wx/app.h>



::wxYield



bool wxYield(void)

wxApp::Yield を呼び出します.

この関数は以前のバージョンとの互換性のために残されています. 新しいコードではwxApp::Yield を使うようにしてください.

Include files

<wx/app.h> or <wx/utils.h>



::wxWakeUpIdle



void wxWakeUpIdle(void)

システムを (内部的かつプラットフォーム依存のやり方で) アイドル状態 から復帰させます.すなわち,システムが現在アイドル状態で,次に他の イベントを送信するまでアイドルイベントを一切送出しない状態 であっても システムに強制的にアイドルイベントを送出させます. この機能は二つのスレッド間でイベントを送信する際にも便利で, ::wxPostEvent および wxEvtHandler::AddPendingEvent といった関数でも使われています.

Include files

<wx/event.h>

ymasuda 平成17年11月19日