// reuse the code in MSWGetStyle() but correct the results slightly for
// the dialog
- dlgTemplate->style = MSWGetStyle(style, &dlgTemplate->dwExtendedStyle);
+ //
+ // NB: we need a temporary variable as we can't pass pointer to
+ // dwExtendedStyle directly, it's not aligned correctly for 64 bit
+ // architectures
+ WXDWORD dwExtendedStyle;
+ dlgTemplate->style = MSWGetStyle(style, &dwExtendedStyle);
+ dlgTemplate->dwExtendedStyle = dwExtendedStyle;
// all dialogs are popups
dlgTemplate->style |= WS_POPUP;
#if defined(FLASHW_STOP) && defined(VK_XBUTTON1) && wxUSE_DYNLIB_CLASS
// available in the headers, check if it is supported by the system
typedef BOOL (WINAPI *FlashWindowEx_t)(FLASHWINFO *pfwi);
- FlashWindowEx_t s_pfnFlashWindowEx = NULL;
+ static FlashWindowEx_t s_pfnFlashWindowEx = NULL;
if ( !s_pfnFlashWindowEx )
{
wxDynamicLibrary dllUser32(_T("user32.dll"));
{
#if wxUSE_DYNLIB_CLASS
typedef DWORD (WINAPI *PSETLAYEREDWINDOWATTR)(HWND, DWORD, BYTE, DWORD);
- static PSETLAYEREDWINDOWATTR pSetLayeredWindowAttributes = NULL;
+ static PSETLAYEREDWINDOWATTR
+ pSetLayeredWindowAttributes = (PSETLAYEREDWINDOWATTR)-1;
- if ( pSetLayeredWindowAttributes == NULL )
+ if ( pSetLayeredWindowAttributes == (PSETLAYEREDWINDOWATTR)-1 )
{
wxDynamicLibrary dllUser32(_T("user32.dll"));
+
+ // use RawGetSymbol() and not GetSymbol() to avoid error messages under
+ // Windows 95: there is nothing the user can do about this anyhow
pSetLayeredWindowAttributes = (PSETLAYEREDWINDOWATTR)
- dllUser32.GetSymbol(wxT("SetLayeredWindowAttributes"));
+ dllUser32.RawGetSymbol(wxT("SetLayeredWindowAttributes"));
+
+ // it's ok to destroy dllUser32 here, we link statically to user32.dll
+ // anyhow so it won't be unloaded
}
- if ( pSetLayeredWindowAttributes == NULL )
+
+ if ( !pSetLayeredWindowAttributes )
return false;
#endif // wxUSE_DYNLIB_CLASS
if ( m_winLastFocused )
{
// let it know that it doesn't have focus any more
- m_winLastFocused->HandleKillFocus((WXHWND)NULL);
+ // But this will already be done via WM_KILLFOCUS, so we'll get two kill
+ // focus events if we call it explicitly.
+ // m_winLastFocused->HandleKillFocus((WXHWND)NULL);
// and don't remember it if it's a child from some other frame
if ( wxGetTopLevelParent(m_winLastFocused) != this )