- Timestamp:
- Aug 24, 2008, 5:28:59 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/ab5.0/ablib/src/Classes/ActiveBasic/Windows/Windows.ab
r603 r615 112 112 @brief Windowsのエラー値を基に例外を投げる 113 113 @param[in] dwErrorCode Win32エラーコード 114 @param[in] msg 補足説明 114 115 @throw WindowsException 常に投げられる。 115 116 @date 2008/07/13 116 117 @auther Egtra 117 118 */ 118 Sub ThrowWithErrorCode(dwErrorCode As DWord )119 Throw New WindowsException(HRESULT_FROM_WIN32(dwErrorCode) )119 Sub ThrowWithErrorCode(dwErrorCode As DWord, msg = Nothing As String) 120 Throw New WindowsException(HRESULT_FROM_WIN32(dwErrorCode), msg) 120 121 End Sub 121 122 122 /*! 123 @brief 内部でGetLastErrorを呼んで、その値を基に例外を投げる。 124 @throw WindowsException 常に投げられる。 123 @brief WindowsExceptionを投げるラッパ。直前に呼び出したAPI関数などが失敗したときに用いる。 124 @param[in] msg 補足説明 125 @throw WindowsException 常に投げられる。 126 @date 2008/08/20 127 @auther Egtra 128 WindowsExceptionを構築する際、GetLastError()の値を渡す。 129 この関数では、直前のAPI関数が成功したかどうかを調べられないことに注意。 130 */ 131 Sub ThrowWithLastError(msg = Nothing As String) 132 ThrowWithErrorCode(GetLastError(), msg) 133 End Sub 134 /*! 135 @brief (主にuser32の全部、gdi32の一部が対象)WindowsExceptionを投げるラッパ。直前に呼び出したAPI関数などが失敗したときに用いる。 136 @param[in] msg 補足説明 137 @throw WindowsException 常に投げられる。 125 138 @date 2008/08/26 126 139 @auther Egtra 140 user32やgdi32の一部など、9xではGetLastErrorでエラーメッセージが取得できないものがある。 141 そのため、9xでは一律にmsgのみでWindowsExceptionを構築して投げるようにしている。 142 143 ところで、CEではNT同様GetLastErrorが使用できるため、 144 CEへの移植を仮定すると、関数名にNTと付けるのがそぐわないと感じる。代案募集中。 127 145 */ 128 Sub ThrowWithLastError() 129 ThrowWithErrorCode(GetLastError()) 146 Sub ThrowWithLastErrorNT(msg As String) 147 If Not Version.Is9x() Then 148 ThrowWithErrorCode(GetLastError(), msg) 149 Else 150 Throw New WindowsException(msg) 151 End If 130 152 End Sub 131 153 /*! 132 154 @brief HRESULT値を基に例外を投げる。 133 @ date 2008/07/13134 @param[in] hr HRESULT値155 @param[in] hr HRESULT値 156 @param[in] msg 補足説明 135 157 @throw WindowsException FAILED(hr)が真の場合 136 @auther Egtra 158 @date 2008/07/13 159 @auther Egtra 137 160 hrが成功値 (FAILED(hr) = False) の場合、この関数は何も行わない。 138 161 */ 139 Sub ThrowIfFailed(hr As HRESULT )162 Sub ThrowIfFailed(hr As HRESULT, msg = Nothing As String) 140 163 If FAILED(hr) Then 141 Throw New WindowsException(hr )164 Throw New WindowsException(hr, msg) 142 165 End If 143 166 End Sub
Note:
See TracChangeset
for help on using the changeset viewer.