本文整理汇总了C++中Window::GetOnDestroyed方法的典型用法代码示例。如果您正苦于以下问题:C++ Window::GetOnDestroyed方法的具体用法?C++ Window::GetOnDestroyed怎么用?C++ Window::GetOnDestroyed使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Window
的用法示例。
在下文中一共展示了Window::GetOnDestroyed方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: WindowProc
/// Window message procedure callback.
///
/// @param[in] hWnd Window handle.
/// @param[in] msg Message ID.
/// @param[in] wParam Additional message information (dependent on the message sent).
/// @param[in] lParam Additional message information (dependent on the message sent).
///
/// @return Result of the message processing (dependent on the message sent).
LRESULT CALLBACK WindowManager::WindowProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
HELIUM_ASSERT( hWnd );
switch( msg )
{
case WM_CREATE:
{
// Window pointer is passed in the lpCreateParams member of the CREATESTRUCT structure provided in
// lParam, so set it as the user data pointer in the window itself so we can easily retrieve it from any
// future messages.
CREATESTRUCT* pCreateStruct = reinterpret_cast< CREATESTRUCT* >( lParam );
HELIUM_ASSERT( pCreateStruct );
Window* pWindow = static_cast< Window* >( pCreateStruct->lpCreateParams );
HELIUM_ASSERT( pWindow );
SetWindowLongPtr( hWnd, GWLP_USERDATA, reinterpret_cast< LONG_PTR >( pWindow ) );
return 0;
}
case WM_CLOSE:
{
Window* pWindow = reinterpret_cast< Window* >( GetWindowLongPtr( hWnd, GWLP_USERDATA ) );
HELIUM_ASSERT( pWindow );
pWindow->Destroy();
return 0;
}
case WM_DESTROY:
{
// Window is being destroyed, so clear reference to Window object and destroy it.
Window* pWindow = reinterpret_cast< Window* >( GetWindowLongPtr( hWnd, GWLP_USERDATA ) );
HELIUM_ASSERT( pWindow );
SetWindowLongPtr( hWnd, GWLP_USERDATA, 0 );
const Delegate<Window*>& rOnDestroyed = pWindow->GetOnDestroyed();
if( rOnDestroyed.Valid() )
{
rOnDestroyed.Invoke( pWindow );
}
delete pWindow;
return 0;
}
}
return DefWindowProc( hWnd, msg, wParam, lParam );
}