#ifndef _WX_MSW_PRIVATE_TIMER_H_
#define _WX_MSW_PRIVATE_TIMER_H_
+#if wxUSE_TIMER
+
#include "wx/private/timer.h"
class WXDLLIMPEXP_BASE wxMSWTimerImpl : public wxTimerImpl
unsigned long m_id;
};
+#endif // wxUSE_TIMER
+
#endif // _WX_TIMERH_
wxRegion(const wxRect& rect);
wxRegion(WXHRGN hRegion); // Hangs on to this region
wxRegion(size_t n, const wxPoint *points, int fillStyle = wxODDEVEN_RULE );
+#if wxUSE_IMAGE
wxRegion( const wxBitmap& bmp)
{
Union(bmp);
{
Union(bmp, transColour, tolerance);
}
+#endif // wxUSE_IMAGE
virtual ~wxRegion();
// Enables an application to influence the wxWidgets implementation
// ----------------------------------------------------------------------------
-class WXDLLIMPEXP_BASE wxSystemOptions : public wxObject
+class
+#if wxUSE_SYSTEM_OPTIONS
+WXDLLIMPEXP_BASE
+#endif
+wxSystemOptions : public wxObject
{
public:
wxSystemOptions() { }
// wxMessageOutputMessageBox doesn't work under Motif
#ifdef __WXMOTIF__
return new wxMessageOutputLog;
- #else
+ #elif wxUSE_MSGDLG
return new wxMessageOutputMessageBox;
+ #else
+ return new wxMessageOutputStderr;
#endif
#endif // __UNIX__/!__UNIX__
}
// within the same group. Used by wxSetFocusToChild on wxMSW
// --------------------------------------------------------------------
-#ifdef __WXMSW__
+#if defined(__WXMSW__) && wxUSE_RADIOBTN
wxRadioButton* wxGetPreviousButtonInGroup(wxRadioButton *btn)
{
if ( winFocus )
{
-#ifdef __WXMSW__
+#if defined(__WXMSW__) && wxUSE_RADIOBTN
// If we are in a radio button group, start from the first item in the
// group
if ( event.IsFromTab() && wxIsKindOf(winFocus, wxRadioButton ) )
winFocus = wxGetFirstButtonInGroup((wxRadioButton*)winFocus);
-#endif
+#endif // __WXMSW__
// ok, we found the focus - now is it our child?
start_node = children.Find( winFocus );
}
wxWindow *child = node->GetData();
-#ifdef __WXMSW__
+#if defined(__WXMSW__) && wxUSE_RADIOBTN
if ( event.IsFromTab() )
{
if ( wxIsKindOf(child, wxRadioButton) )
if ( child->CanAcceptFocusFromKeyboard() && !child->IsTopLevel() )
{
-#ifdef __WXMSW__
+#if defined(__WXMSW__) && wxUSE_RADIOBTN
// If a radiobutton is the first focusable child, search for the
// selected radiobutton in the same group
wxRadioButton* btn = wxDynamicCast(child, wxRadioButton);
if (selected)
child = selected;
}
-#endif
+#endif // __WXMSW__
wxLogTrace(TRACE_FOCUS,
_T("SetFocusToChild() => first child (0x%p)."),
#include "wx/module.h"
#if wxUSE_GUI
+ #include "wx/window.h"
#include "wx/control.h"
#include "wx/dc.h"
#include "wx/textctrl.h"
#endif
}
+#if wxUSE_TIMER
+
wxTimerImpl *wxGUIAppTraits::CreateTimerImpl(wxTimer *timer)
{
return new wxMSWTimerImpl(timer);
}
+#endif // wxUSE_TIMER
+
wxEventLoopBase* wxGUIAppTraits::CreateEventLoop()
{
return new wxEventLoop;
return true;
}
+#if wxUSE_TIMER
+
wxTimerImpl *wxConsoleAppTraits::CreateTimerImpl(wxTimer *timer)
{
return new wxMSWTimerImpl(timer);
}
+#endif // wxUSE_TIMER
+
+#if wxUSE_CONSOLE_EVENTLOOP
+
wxEventLoopBase *wxConsoleAppTraits::CreateEventLoop()
{
return new wxEventLoop();
}
+#endif // wxUSE_CONSOLE_EVENTLOOP
+
WXDWORD wxConsoleAppTraits::WaitForThread(WXHANDLE hThread)
{
return DoSimpleWaitForThread(hThread);
DECLARE_NO_COPY_CLASS(StretchBltModeChanger)
};
+#if wxUSE_DYNLIB_CLASS
+
// helper class to cache dynamically loaded libraries and not attempt reloading
// them if it fails
class wxOnceOnlyDLLLoader
static wxOnceOnlyDLLLoader wxGDI32DLL(_T("gdi32"));
static wxOnceOnlyDLLLoader wxMSIMG32DLL(_T("msimg32"));
+#endif // wxUSE_DYNLIB_CLASS
+
// ===========================================================================
// implementation
// ===========================================================================
wxDCBase::DoGradientFillLinear(rect, initialColour, destColour, nDirection);
}
+#if wxUSE_DYNLIB_CLASS
+
static DWORD wxGetDCLayout(HDC hdc)
{
typedef DWORD (WINAPI *GetLayout_t)(HDC);
pfnSetLayout(GetHdc(), layout);
}
+
+#else // !wxUSE_DYNLIB_CLASS
+
+// we can't provide RTL support without dynamic loading, so stub it out
+wxLayoutDirection wxDC::GetLayoutDirection() const
+{
+ return wxLayout_Default;
+}
+
+void wxDC::SetLayoutDirection(wxLayoutDirection WXUNUSED(dir))
+{
+}
+
+#endif // wxUSE_DYNLIB_CLASS/!wxUSE_DYNLIB_CLASS
{
wxCHECK_MSG( m_handle, false, _T("wxDIB::Save(): invalid object") );
+#if wxUSE_FILE
wxFile file(filename, wxFile::write);
bool ok = file.IsOpened();
if ( ok )
file.Write(ds.dsBm.bmBits, sizeImage) == sizeImage;
}
}
+#else // !wxUSE_FILE
+ bool ok = false;
+#endif // wxUSE_FILE/!wxUSE_FILE
if ( !ok )
{
if ( err != ERROR_FILE_NOT_FOUND && err != ERROR_NO_MORE_FILES )
{
- wxLogSysError(err, _("Can not enumerate files in directory '%s'"),
+ wxLogSysError(err, wxString(_("Can not enumerate files in directory '%s'")),
m_dirname.c_str());
}
#endif // __WIN32__
}
#endif // wxUSE_TOOLBAR
+#if wxUSE_MENUS
if (m_fsStyle & wxFULLSCREEN_NOMENUBAR)
{
WXHMENU menu = m_hMenu;
::SetMenu(GetHwnd(), (HMENU)menu);
}
}
+#endif // wxUSE_MENUS
#if wxUSE_STATUSBAR
wxStatusBar *theStatusBar = GetStatusBar();
return false;
}
+#if wxUSE_MENUS
+
bool wxFrame::HandleMenuSelect(WXWORD nItem, WXWORD flags, WXHMENU hMenu)
{
int item;
return GetEventHandler()->ProcessEvent(event);
}
+bool wxFrame::HandleInitMenuPopup(WXHMENU hMenu)
+{
+ wxMenu* menu = NULL;
+ if (GetMenuBar())
+ {
+ int nCount = GetMenuBar()->GetMenuCount();
+ for (int n = 0; n < nCount; n++)
+ {
+ if (GetMenuBar()->GetMenu(n)->GetHMenu() == hMenu)
+ {
+ menu = GetMenuBar()->GetMenu(n);
+ break;
+ }
+ }
+ }
+
+ wxMenuEvent event(wxEVT_MENU_OPEN, 0, menu);
+ event.SetEventObject(this);
+
+ return GetEventHandler()->ProcessEvent(event);
+}
+
+#endif // wxUSE_MENUS
+
// ---------------------------------------------------------------------------
// the window proc for wxFrame
// ---------------------------------------------------------------------------
processed = HandlePaint();
break;
+#if !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
+#if wxUSE_MENUS
case WM_INITMENUPOPUP:
processed = HandleInitMenuPopup((WXHMENU) wParam);
break;
-#if !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
case WM_MENUSELECT:
{
WXWORD item, flags;
case WM_EXITMENULOOP:
processed = HandleMenuLoop(wxEVT_MENU_CLOSE, (WXWORD)wParam);
break;
+#endif // wxUSE_MENUS
case WM_QUERYDRAGICON:
{
return rc;
}
-// handle WM_INITMENUPOPUP message
-bool wxFrame::HandleInitMenuPopup(WXHMENU hMenu)
-{
- wxMenu* menu = NULL;
- if (GetMenuBar())
- {
- int nCount = GetMenuBar()->GetMenuCount();
- for (int n = 0; n < nCount; n++)
- {
- if (GetMenuBar()->GetMenu(n)->GetHMenu() == hMenu)
- {
- menu = GetMenuBar()->GetMenu(n);
- break;
- }
- }
- }
-
- wxMenuEvent event(wxEVT_MENU_OPEN, 0, menu);
- event.SetEventObject(this);
-
- return GetEventHandler()->ProcessEvent(event);
-}
-
// ----------------------------------------------------------------------------
// wxFrame size management: we exclude the areas taken by menu/status/toolbars
// from the client area, so the client area is what's really available for the
// Get the bitmap
wxBitmap wxImageList::GetBitmap(int index) const
{
-#if wxUSE_WXDIB
+#if wxUSE_WXDIB && wxUSE_IMAGE
int bmp_width = 0, bmp_height = 0;
GetSize(index, bmp_width, bmp_height);
#pragma hdrstop
#endif
+#if wxUSE_MSGDLG
+
#include "wx/msgdlg.h"
#ifndef WX_PRECOMP
}
return ans;
}
+
+#endif // wxUSE_MSGDLG
// provide FlashWindowEx() declaration, so try to detect whether we have
// real headers for WINVER 0x0500 by checking for existence of a symbol not
// declated in MSVC6 header
-#if defined(FLASHW_STOP) && defined(VK_XBUTTON1)
+#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;
bool wxTopLevelWindowMSW::SetTransparent(wxByte alpha)
{
+#if wxUSE_DYNLIB_CLASS
typedef DWORD (WINAPI *PSETLAYEREDWINDOWATTR)(HWND, DWORD, BYTE, DWORD);
static PSETLAYEREDWINDOWATTR pSetLayeredWindowAttributes = NULL;
}
if ( pSetLayeredWindowAttributes == NULL )
return false;
+#endif // wxUSE_DYNLIB_CLASS
LONG exstyle = GetWindowLong(GetHwnd(), GWL_EXSTYLE);
return true;
}
+#if wxUSE_DYNLIB_CLASS
// Otherwise, set the layered style if needed and set the alpha value
if ((exstyle & WS_EX_LAYERED) == 0 )
SetWindowLong(GetHwnd(), GWL_EXSTYLE, exstyle | WS_EX_LAYERED);
- return pSetLayeredWindowAttributes(GetHwnd(), 0, (BYTE)alpha, LWA_ALPHA) != 0;
+ if ( pSetLayeredWindowAttributes(GetHwnd(), 0, (BYTE)alpha, LWA_ALPHA) )
+ return true;
+#endif // wxUSE_DYNLIB_CLASS
+
+ return false;
}
bool wxTopLevelWindowMSW::CanSetTransparent()
// get full hostname (with domain name if possible)
bool wxGetFullHostName(wxChar *buf, int maxSize)
{
-#if !defined( __WXMICROWIN__) && wxUSE_DYNAMIC_LOADER && wxUSE_SOCKETS
+#if !defined( __WXMICROWIN__) && wxUSE_DYNLIB_CLASS && wxUSE_SOCKETS
// TODO should use GetComputerNameEx() when available
// we don't want to always link with Winsock DLL as we might not use it at
{
#if defined(_WIN64)
return true; // 64-bit programs run only on Win64
-#else // Win32
+#elif wxUSE_DYNLIB_CLASS // Win32
// 32-bit programs run on both 32-bit and 64-bit Windows so check
typedef BOOL (WINAPI *IsWow64Process_t)(HANDLE, BOOL *);
//else: running under a system without Win64 support
return wow64 != FALSE;
+#else
+ return false;
#endif // Win64/Win32
}