'Classes/ActiveBasic/Windows/UI/Application.ab Namespace ActiveBasic Namespace Windows Namespace UI /*! @date 2008/07/13 @brief アプリケーション全体に関わるようなこと……、主にメッセージループを管理するクラス。 @todo メッセージフィルタとマルチスレッド対応 @author Egtra */ Class Application Public /*! @brief メッセージループを回す @date 2008/07/13 @param[in] form メインウィンドウ @author Egtra */ Static Sub Run(form As Form) f.Show(SW_SHOW) If IsNothing(form) = False Then form.AddMessageEvent(WM_DESTROY, AddressOf(Application.OnMainFormClosed)) End If Dim m As MSG Do Dim ret = GetMessage(m, 0, 0, 0) If ret = 0 Or ret = -1 Then Exit Do End If TranslateMessage(m) DispatchMessage(m) Loop ' OnThraedExit(EventArgs.Empty) End Sub /*! @brief メインウィンドウなしでメッセージループを回す @date 2008/07/13 @author Egtra */ Static Sub Run() Run(Nothing) End Sub /*! @brief メッセージループを終わらせる。 @date 2008/07/13 @author Egtra */ Static Sub ExitThread() PostQuitMessage(0) End Sub '#include "ApplicationEvent.sbp" Private Static Sub OnMainFormClosed(sender As Object, e As Args) ExitThread() End Sub main As Form End Class End Namespace 'UI End Namespace 'Widnows End Namespace 'ActiveBasic