#include "wx/apptrait.h"
#include "wx/module.h"
-#if wxUSE_CONFIG
+// wxMemoryConfig uses wxFileConfig
+#if wxUSE_CONFIG && wxUSE_FILECONFIG
#include "wx/config.h"
#include "wx/memconf.h"
#endif
wxFontMapperBase::wxFontMapperBase()
{
-#if wxUSE_CONFIG
+#if wxUSE_CONFIG && wxUSE_FILECONFIG
m_config = NULL;
m_configIsDummy = FALSE;
#endif // wxUSE_CONFIG
wxFontMapperBase::~wxFontMapperBase()
{
-#if wxUSE_CONFIG
+#if wxUSE_CONFIG && wxUSE_FILECONFIG
if ( m_configIsDummy )
delete m_config;
#endif // wxUSE_CONFIG
return old;
}
-#if wxUSE_CONFIG
+#if wxUSE_CONFIG && wxUSE_FILECONFIG
// ----------------------------------------------------------------------------
// config usage customisation
// we're going to modify it, make a copy
wxString cs = charset;
-#if wxUSE_CONFIG
+#if wxUSE_CONFIG && wxUSE_FILECONFIG
// first try the user-defined settings
wxFontMapperPathChanger path(this, FONTMAPPER_CHARSET_PATH);
if ( path.IsOk() )
return uiCount;
}
+#ifdef __WXWINCE__
+inline int isascii(wxChar c) { return (c >= 0) && (c <=127); }
+#endif
+
bool wxString::IsAscii() const
{
const wxChar *s = (const wxChar*) *this;
#include "wx/process.h"
#include "wx/txtstrm.h"
+#if defined(__WXWINCE__) && wxUSE_DATETIME
+#include "wx/datetime.h"
+#endif
+
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include "wx/msw/wince/time.h"
#endif
-#ifndef __MWERKS__
+#if !defined(__MWERKS__) && !defined(__WXWINCE__)
#include <sys/types.h>
#include <sys/stat.h>
#endif
-#ifdef __SALFORDC__
- #include <clib.h>
-#endif
-
#ifdef __WXMSW__
#include "wx/msw/private.h"
#endif
// Return the current date/time
wxString wxNow()
{
+#ifdef __WXWINCE__
+#if wxUSE_DATETIME
+ wxDateTime now = wxDateTime::Now();
+ return now.Format();
+#else
+ return wxEmptyString;
+#endif
+#else
time_t now = time((time_t *) NULL);
char *date = ctime(&now);
date[24] = '\0';
return wxString::FromAscii(date);
+#endif
}
const wxChar *wxGetInstallPrefix()
m_excludeList = list;
}
+#ifdef __WXWINCE__
+inline int isascii(wxChar c) { return (c >= 0) && (c <=127); }
+#endif
+
void wxTextValidator::OnChar(wxKeyEvent& event)
{
/*
#ifndef wxAtof
double WXDLLEXPORT wxAtof(const wxChar *psz)
{
- return atof(wxConvLocal.cWX2MB(psz));
+#ifdef __WXWINCE__
+ double d;
+ wxString str(psz);
+ if (str.ToDouble(& d))
+ return d;
+ else
+ return 0.0;
+#else
+ return atof(wxConvLocal.cWX2MB(psz));
+#endif
}
#endif
return TRUE;
}
+#ifdef __WXWINCE__
+ // TODO: is this right? How come it compiles on other
+ // platforms?
+ name = (char*) wxStrdup((wxChar*) inname);
+#else
name = wxStrdup(inname);
+#endif
// theRGBRecords[] has no names with spaces, and no grey, but a
// lot of gray...
{
#if defined(__WINDOWS__) || defined(__DOS__) || defined(__WXPM__)
-#ifdef __WIN32__
+#ifdef __WXWINCE__
+ // No logical drives; return "\"
+ paths.Add(wxT("\\"));
+ names.Add(wxT("\\"));
+ return 1;
+#elif defined(__WIN32__)
wxChar driveBuffer[256];
size_t n = (size_t) GetLogicalDriveStrings(255, driveBuffer);
size_t i = 0;
int setdrive(int drive)
{
-#if defined(__GNUWIN32__) && \
+#ifdef __WXWINCE__
+ return 0;
+#elif defined(__GNUWIN32__) && \
(defined(__MINGW32_MAJOR_VERSION) && __MINGW32_MAJOR_VERSION >= 1)
return _chdrive(drive);
#else
newdrive[1] = wxT(':');
newdrive[2] = wxT('\0');
#if defined(__WXMSW__)
-#ifdef __WIN16__
- if (wxSetWorkingDirectory(newdrive))
-#else
if (::SetCurrentDirectory(newdrive))
-#endif
#else
// VA doesn't know what LPSTR is and has its own set
if (DosSetCurrentDir((PSZ)newdrive))
bool wxIsDriveAvailable(const wxString& dirName)
{
+#ifdef __WXWINCE__
+ return FALSE;
+#else
#ifdef __WIN32__
UINT errorMode = SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOOPENFILEERRORBOX);
#endif
#endif
return success;
+#endif
}
#endif // __WINDOWS__ || __WXPM__
return TRUE;
default:
- if ( (keycode < 128) && isdigit(keycode) )
+ if ( (keycode < 128) && wxIsdigit(keycode) )
return TRUE;
}
}
if ( !HasRange() )
{
int keycode = event.GetKeyCode();
- if ( isdigit(keycode) || keycode == '+' || keycode == '-'
+ if ( wxIsdigit(keycode) || keycode == '+' || keycode == '-'
|| keycode == WXK_NUMPAD0
|| keycode == WXK_NUMPAD1
|| keycode == WXK_NUMPAD2
void wxGridCellFloatEditor::StartingKey(wxKeyEvent& event)
{
int keycode = event.GetKeyCode();
- if ( isdigit(keycode) || keycode == '+' || keycode == '-' || keycode == '.'
+ if ( wxIsdigit(keycode) || keycode == '+' || keycode == '-' || keycode == '.'
|| keycode == WXK_NUMPAD0
|| keycode == WXK_NUMPAD1
|| keycode == WXK_NUMPAD2
default:
// additionally accept 'e' as in '1e+6'
if ( (keycode < 128) &&
- (isdigit(keycode) || tolower(keycode) == 'e') )
+ (wxIsdigit(keycode) || tolower(keycode) == 'e') )
return TRUE;
}
}
// allows to exclude the usage of wxDateTime
static wxString TimeStamp(const wxChar *format, time_t t)
{
+#ifdef __WXWINCE__
+ // FIXME
+ return wxEmptyString;
+#else
wxChar buf[4096];
if ( !wxStrftime(buf, WXSIZEOF(buf), format, localtime(&t)) )
{
wxFAIL_MSG(_T("strftime() failed"));
}
return wxString(buf);
+#endif
}
wxASSERT( gs_pFrame == NULL ); // should be reset!
gs_pFrame = pFrame;
+#ifdef __WXWINCE__
+ wxLog::OnLog(wxLOG_Status, msg, 0);
+#else
wxLog::OnLog(wxLOG_Status, msg, time(NULL));
+#endif
gs_pFrame = (wxFrame *) NULL;
}
}
{
long rc = wxPanel::MSWWindowProc(nMsg, wParam, lParam);
+#ifndef __WXWINCE__
// we need to process arrows ourselves for scrolling
if ( nMsg == WM_GETDLGCODE )
{
rc |= DLGC_WANTARROWS;
}
+#endif
return rc;
}
#if _WIN32_IE >= 0x0300 && \
(!defined(__MINGW32__) || wxCHECK_W32API_VERSION( 2, 0 )) && \
- !defined(__CYGWIN__)
+ !defined(__CYGWIN__) && !defined(__WXWINCE__)
#include <shlwapi.h>
#endif
// ---------------------------------------------------------------------------
extern wxList WXDLLEXPORT wxPendingDelete;
-#ifndef __WXMICROWIN__
+
+#if !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
extern void wxSetKeyboardHook(bool doIt);
#endif
RegisterWindowClasses();
-#ifndef __WXMICROWIN__
+#if defined(__WXMICROWIN__) && !defined(__WXWINCE__)
// Create the brush for disabling bitmap buttons
LOGBRUSH lb;
if (wxDummyChar) wxDummyChar++;
#endif
-#ifndef __WXMICROWIN__
+#if !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
wxSetKeyboardHook(TRUE);
#endif
void wxApp::CleanUp()
{
-#ifndef __WXMICROWIN__
+#if !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
wxSetKeyboardHook(FALSE);
#endif
/* static */
int wxApp::GetComCtl32Version()
{
-#ifdef __WXMICROWIN__
+#if defined(__WXMICROWIN__) || defined(__WXWINCE__)
return 0;
#else
// cache the result
#include "wx/msw/private.h"
#include "wx/log.h"
-#if !defined(__WXMICROWIN__)
+#if wxUSE_WXDIB
#include "wx/msw/dib.h"
#endif
wxDC *m_selectedInto;
#endif // __WXDEBUG__
+#if wxUSE_WXDIB
// when GetRawData() is called for a DDB we need to convert it to a DIB
// first to be able to provide direct access to it and we cache that DIB
// here and convert it back to DDB when UngetRawData() is called
wxDIB *m_dib;
+#endif
// true if we have alpha transparency info and can be drawn using
// AlphaBlend()
// decide whether we should create a DIB or a DDB for the given parameters
static bool wxShouldCreateDIB(int w, int h, int d, WXHDC hdc)
{
+#if wxUSE_WXDIB
// here is the logic:
//
// (a) if hdc is specified, the caller explicitly wants DDB
(d >= 24 ||
(d == -1 &&
wxDIB::GetLineSize(w, wxDisplayDepth())*h > 16*1024*1024));
+#else
+ return FALSE;
+#endif
}
// ----------------------------------------------------------------------------
m_bitmapMask = NULL;
m_hBitmap = (WXHBITMAP) NULL;
+#if wxUSE_WXDIB
m_dib = NULL;
+#endif
m_isDIB =
m_hasAlpha = FALSE;
wxASSERT_MSG( !m_selectedInto,
wxT("deleting bitmap still selected into wxMemoryDC") );
+#if wxUSE_WXDIB
wxASSERT_MSG( !m_dib, _T("forgot to call wxBitmap::UngetRawData()!") );
+#endif
if ( m_hBitmap)
{
bool wxBitmap::CopyFromIconOrCursor(const wxGDIImage& icon)
{
-#ifndef __WXMICROWIN__
+#if !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
// it may be either HICON or HCURSOR
HICON hicon = (HICON)icon.GetHandle();
#endif // Win16/Win32
}
+#if wxUSE_WXDIB
bool wxBitmap::CopyFromDIB(const wxDIB& dib)
{
wxCHECK_MSG( dib.IsOk(), FALSE, _T("invalid DIB in CopyFromDIB") );
return TRUE;
}
+#endif
wxBitmap::~wxBitmap()
{
wxImage wxBitmap::ConvertToImage() const
{
+ // FIXME: this is untested code for WinCE, and
+ // the mask is not yet handled.
+ // For tips, see:
+ // http://www.codeproject.com/bitmap/dibsection.asp?print=true
+
+#ifdef __WXWINCE__
+ // the colour used as transparent one in wxImage and the one it is replaced
+ // with when it really occurs in the bitmap
+ static const int MASK_RED = 1;
+ static const int MASK_GREEN = 2;
+ static const int MASK_BLUE = 3;
+ static const int MASK_BLUE_REPLACEMENT = 2;
+
+ wxImage image;
+
+ wxCHECK_MSG( Ok(), wxNullImage, wxT("invalid bitmap") );
+
+ // create an wxImage object
+ int width = GetWidth();
+ int height = GetHeight();
+ image.Create( width, height );
+ unsigned char *data = image.GetData();
+ if( !data )
+ {
+ wxFAIL_MSG( wxT("could not allocate data for image") );
+ return wxNullImage;
+ }
+
+ // calc the number of bytes per scanline and padding in the DIB
+ int bytePerLine = width*3;
+ int sizeDWORD = sizeof( DWORD );
+ int lineBoundary = bytePerLine % sizeDWORD;
+ int padding = 0;
+ if( lineBoundary > 0 )
+ {
+ padding = sizeDWORD - lineBoundary;
+ bytePerLine += padding;
+ }
+
+ // create a DIB header
+ int headersize = sizeof(BITMAPINFOHEADER);
+ BITMAPINFO *lpDIBh = (BITMAPINFO *) malloc( headersize );
+ if( !lpDIBh )
+ {
+ wxFAIL_MSG( wxT("could not allocate data for DIB header") );
+ free( data );
+ return wxNullImage;
+ }
+ // Fill in the DIB header
+ lpDIBh->bmiHeader.biSize = headersize;
+ lpDIBh->bmiHeader.biWidth = width;
+ lpDIBh->bmiHeader.biHeight = -height;
+ lpDIBh->bmiHeader.biSizeImage = bytePerLine * height;
+ lpDIBh->bmiHeader.biPlanes = 1;
+ lpDIBh->bmiHeader.biBitCount = 24;
+ lpDIBh->bmiHeader.biCompression = BI_RGB;
+ lpDIBh->bmiHeader.biClrUsed = 0;
+ // These seem not really needed for our purpose here.
+ lpDIBh->bmiHeader.biClrImportant = 0;
+ lpDIBh->bmiHeader.biXPelsPerMeter = 0;
+ lpDIBh->bmiHeader.biYPelsPerMeter = 0;
+
+ // memory for DIB data is allocated by CreateDIBSection
+ void *lpBits = NULL;
+
+ // copy data from the device-dependent bitmap to the DIB
+ HDC hdc = ::GetDC(NULL);
+ HBITMAP hBitmap = (HBITMAP) GetHBITMAP();
+
+ HBITMAP hBitmapSection = ::CreateDIBSection( hdc, lpDIBh, DIB_RGB_COLORS, & lpBits, NULL, 0 );
+ if (!hBitmapSection)
+ {
+ wxFAIL_MSG( wxT("could not create a DIB section") );
+ return wxNullImage;
+ }
+
+ // Copy the image from the DDB to the DIBSection
+ // Need to copy the supplied bitmap onto the newly created DIBsection
+ HDC hMemDC = CreateCompatibleDC(hdc);
+ HDC hCopyDC = CreateCompatibleDC(hdc);
+
+ if (! hMemDC || ! hCopyDC)
+ {
+ wxFAIL_MSG( wxT("unable to create compatible DCs") );
+ return wxNullImage;
+ }
+
+#if 0
+ if (m_hPal)
+ {
+ SelectPalette(hMemDC, m_hPal, FALSE); RealizePalette(hMemDC);
+ SelectPalette(hCopyDC, m_hPal, FALSE); RealizePalette(hCopyDC);
+ }
+#endif
+
+ HBITMAP hOldMemBitmap = (HBITMAP) SelectObject(hMemDC, hBitmap);
+ HBITMAP hOldCopyBitmap = (HBITMAP) SelectObject(hCopyDC, hBitmapSection);
+
+ BitBlt(hCopyDC, 0, 0, GetWidth(), GetHeight(), hMemDC, 0, 0, SRCCOPY);
+
+ SelectObject(hMemDC, hOldMemBitmap);
+ SelectObject(hCopyDC, hOldCopyBitmap);
+ DeleteDC(hMemDC);
+ DeleteDC(hCopyDC);
+
+#if 0
+ if (m_hPal)
+ {
+ HGDIOBJ hObj = ::GetStockObject(DEFAULT_PALETTE);
+ SelectObject(hMemDC, hObj);
+ SelectObject(hCopyDC, hObj);
+ }
+#endif
+
+ ReleaseDC(NULL, hdc);
+
+ // copy DIB data into the wxImage object
+ int i, j;
+ unsigned char *ptdata = data;
+ unsigned char *ptbits = (unsigned char*) lpBits;
+ for( i=0; i<height; i++ )
+ {
+ for( j=0; j<width; j++ )
+ {
+ *(ptdata++) = *(ptbits+2);
+ *(ptdata++) = *(ptbits+1);
+ *(ptdata++) = *(ptbits );
+ ptbits += 3;
+ }
+ ptbits += padding;
+ }
+
+ // TODO
+#if 0
+ // similarly, set data according to the possible mask bitmap
+ if( GetMask() && GetMask()->GetMaskBitmap() )
+ {
+ hbitmap = (HBITMAP) GetMask()->GetMaskBitmap();
+ // memory DC created, color set, data copied, and memory DC deleted
+ HDC memdc = ::CreateCompatibleDC( hdc );
+ ::SetTextColor( memdc, RGB( 0, 0, 0 ) );
+ ::SetBkColor( memdc, RGB( 255, 255, 255 ) );
+ ::GetDIBits( memdc, hbitmap, 0, height, lpBits, lpDIBh, DIB_RGB_COLORS );
+ ::DeleteDC( memdc );
+ ptdata = data;
+ ptbits = lpBits;
+ for( i=0; i<height; i++ )
+ {
+ for( j=0; j<width; j++ )
+ {
+ // is this pixel transparent?
+ if ( *ptbits != 0 )
+ {
+ if ( (ptdata[0] == MASK_RED) &&
+ (ptdata[1] == MASK_GREEN) &&
+ (ptdata[2] == MASK_BLUE) )
+ {
+ // we have to fudge the colour a bit to prevent this
+ // pixel from appearing transparent
+ ptdata[2] = MASK_BLUE_REPLACEMENT;
+ }
+ ptdata += 3;
+ }
+ else // masked pixel
+ {
+ *(ptdata++) = MASK_RED;
+ *(ptdata++) = MASK_GREEN;
+ *(ptdata++) = MASK_BLUE;
+ }
+ ptbits += 3;
+ }
+ ptbits += padding;
+ }
+
+ image.SetMaskColour( MASK_RED, MASK_GREEN, MASK_BLUE );
+ image.SetMask( TRUE );
+ }
+ else
+#endif
+ {
+ image.SetMask( FALSE );
+ }
+
+ // free allocated resources
+ ::ReleaseDC(NULL, hdc);
+ free(lpDIBh);
+
+ // Delete the DIB section
+ ::DeleteObject(hBitmapSection);
+
+ return image;
+#else
// the colour used as transparent one in wxImage and the one it is replaced
// with when it really occurs in the bitmap
static const int MASK_RED = 1;
free(lpBits);
return image;
+#endif
}
#endif // wxUSE_IMAGE
#ifdef wxHAVE_RAW_BITMAP
void *wxBitmap::GetRawData(wxPixelDataBase& data, int bpp)
{
+#if wxUSE_WXDIB
if ( !Ok() )
{
// no bitmap, no data (raw or otherwise)
}
return bits;
+#else
+ return NULL;
+#endif
}
void wxBitmap::UngetRawData(wxPixelDataBase& dataBase)
{
+#if wxUSE_WXDIB
if ( !Ok() )
return;
delete dib;
}
}
+#endif
}
#endif // #ifdef wxHAVE_RAW_BITMAP
bool wxBitmapButton::MSWOnDraw(WXDRAWITEMSTRUCT *item)
{
-#if defined(__WIN95__)
+#ifndef __WXWINCE__
long style = GetWindowLong((HWND) GetHWND(), GWL_STYLE);
if (style & BS_BITMAP)
{
// draw the border
oldp = (HPEN) SelectObject( (HDC) dc, sel? penDkShadow : penHiLight);
- MoveToEx((HDC) dc, left, top, NULL); LineTo((HDC) dc, right-1, top);
- MoveToEx((HDC) dc, left, top+1, NULL); LineTo((HDC) dc, left, bottom-1);
+
+ wxDrawLine((HDC) dc, left, top, right-1, top);
+ wxDrawLine((HDC) dc, left, top+1, left, bottom-1);
SelectObject( (HDC) dc, sel? penShadow : penLight);
- MoveToEx((HDC) dc, left+1, top+1, NULL); LineTo((HDC) dc, right-2, top+1);
- MoveToEx((HDC) dc, left+1, top+2, NULL); LineTo((HDC) dc, left+1, bottom-2);
+ wxDrawLine((HDC) dc, left+1, top+1, right-2, top+1);
+ wxDrawLine((HDC) dc, left+1, top+2, left+1, bottom-2);
SelectObject( (HDC) dc, sel? penLight : penShadow);
- MoveToEx((HDC) dc, left+1, bottom-2, NULL); LineTo((HDC) dc, right-1, bottom-2);
- MoveToEx((HDC) dc, right-2, bottom-3, NULL); LineTo((HDC) dc, right-2, top);
+ wxDrawLine((HDC) dc, left+1, bottom-2, right-1, bottom-2);
+ wxDrawLine((HDC) dc, right-2, bottom-3, right-2, top);
SelectObject( (HDC) dc, sel? penHiLight : penDkShadow);
- MoveToEx((HDC) dc, left, bottom-1, NULL); LineTo((HDC) dc, right+2, bottom-1);
- MoveToEx((HDC) dc, right-1, bottom-2, NULL); LineTo((HDC) dc, right-1, top-1);
+ wxDrawLine((HDC) dc, left, bottom-1, right+2, bottom-1);
+ wxDrawLine((HDC) dc, right-1, bottom-2, right-1, top-1);
// delete allocated resources
SelectObject((HDC) dc,oldp);
static int TransllateHatchStyle(int style)
{
+#if !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
switch ( style )
{
-#ifndef __WXMICROWIN__
case wxBDIAGONAL_HATCH: return HS_BDIAGONAL;
case wxCROSSDIAG_HATCH: return HS_DIAGCROSS;
case wxFDIAGONAL_HATCH: return HS_FDIAGONAL;
case wxCROSS_HATCH: return HS_CROSS;
case wxHORIZONTAL_HATCH:return HS_HORIZONTAL;
case wxVERTICAL_HATCH: return HS_VERTICAL;
-#endif // __WXMICROWIN__
default: return -1;
}
+#else // __WXMICROWIN__
+ return -1;
+#endif
}
HBRUSH wxBrushRefData::GetHBRUSH()
{
if ( !m_hBrush )
{
+#ifndef __WXWINCE__
int hatchStyle = TransllateHatchStyle(m_style);
if ( hatchStyle == -1 )
+#endif
{
switch ( m_style )
{
break;
}
}
+#ifndef __WXWINCE__
else // create a hatched brush
{
m_hBrush = ::CreateHatchBrush(hatchStyle, m_colour.GetPixel());
}
+#endif
if ( !m_hBrush )
{
static void DrawRect(HDC hdc, const RECT& r)
{
- MoveToEx(hdc, r.left, r.top, NULL);
- LineTo(hdc, r.right, r.top);
- LineTo(hdc, r.right, r.bottom);
- LineTo(hdc, r.left, r.bottom);
- LineTo(hdc, r.left, r.top);
+ wxDrawLine(hdc, r.left, r.top, r.right, r.top);
+ wxDrawLine(hdc, r.right, r.top, r.right, r.bottom);
+ wxDrawLine(hdc, r.right, r.bottom, r.left, r.bottom);
+ wxDrawLine(hdc, r.left, r.bottom, r.left, r.top);
}
void wxButton::MakeOwnerDrawn()
InflateRect(&r, -1, -1);
}
- MoveToEx(hdc, r.left, r.bottom, NULL);
- LineTo(hdc, r.right, r.bottom);
- LineTo(hdc, r.right, r.top - 1);
+ wxDrawLine(hdc, r.left, r.bottom, r.right, r.bottom);
+ wxDrawLine(hdc, r.right, r.bottom, r.right, r.top - 1);
(void)SelectObject(hdc, hpenWhite);
- MoveToEx(hdc, r.left, r.bottom - 1, NULL);
- LineTo(hdc, r.left, r.top);
- LineTo(hdc, r.right, r.top);
+ wxDrawLine(hdc, r.left, r.bottom - 1, r.left, r.top);
+ wxDrawLine(hdc, r.left, r.top, r.right, r.top);
(void)SelectObject(hdc, hpenLightGr);
- MoveToEx(hdc, r.left + 1, r.bottom - 2, NULL);
- LineTo(hdc, r.left + 1, r.top + 1);
- LineTo(hdc, r.right - 1, r.top + 1);
+ wxDrawLine(hdc, r.left + 1, r.bottom - 2, r.left + 1, r.top + 1);
+ wxDrawLine(hdc, r.left + 1, r.top + 1, r.right - 1, r.top + 1);
(void)SelectObject(hdc, hpenGrey);
- MoveToEx(hdc, r.left + 1, r.bottom - 1, NULL);
- LineTo(hdc, r.right - 1, r.bottom - 1);
- LineTo(hdc, r.right - 1, r.top);
+ wxDrawLine(hdc, r.left + 1, r.bottom - 1, r.right - 1, r.bottom - 1);
+ wxDrawLine(hdc, r.right - 1, r.bottom - 1, r.right - 1, r.top);
}
(void)SelectObject(hdc, hpenOld);
#include <windows.h>
#include <windowsx.h>
+#include "wx/msw/private.h"
+
#if defined(__GNUWIN32_OLD__)
#include "wx/msw/gnuwin32/extra.h"
#endif
rect.right = nCheckWidth;
rect.bottom = nCheckHeight;
+#ifdef __WXWINCE__
+ DrawFrameControl(hdcMem, &rect, DFC_BUTTON, DFCS_BUTTONCHECK);
+#else
DrawFrameControl(hdcMem, &rect, DFC_MENU, DFCS_MENUCHECK);
+#endif
// finally copy it to screen DC and clean up
BitBlt(hdc, x, y, nCheckWidth - 1, nCheckHeight,
#include "wx/msw/private.h"
-#ifndef __WXMICROWIN__
+#if wxUSE_WXDIB
#include "wx/msw/dib.h"
#endif
case CF_BITMAP:
return ::IsClipboardFormatAvailable(CF_DIB) != 0;
-#if wxUSE_ENH_METAFILE && !defined(__WIN16__)
+#if wxUSE_ENH_METAFILE && !defined(__WIN16__) && !defined(__WXWINCE__)
case CF_METAFILEPICT:
return ::IsClipboardFormatAvailable(CF_ENHMETAFILE) != 0;
#endif // wxUSE_ENH_METAFILE
break;
}
+#if wxUSE_WXDIB
case wxDF_DIB:
{
wxBitmap *bitmap = (wxBitmap *)data;
}
break;
}
+#endif
// VZ: I'm told that this code works, but it doesn't seem to work for me
- // and, anyhow, I'd be highly surprized if it did. So I leave it here
+ // and, anyhow, I'd be highly surprised if it did. So I leave it here
// but IMNSHO it is completely broken.
-#if wxUSE_METAFILE && !defined(wxMETAFILE_IS_ENH)
+#if wxUSE_METAFILE && !defined(wxMETAFILE_IS_ENH) && !defined(__WXWINCE__)
case wxDF_METAFILE:
{
wxMetafile *wxMF = (wxMetafile *)data;
}
#endif // wxUSE_METAFILE
-#if wxUSE_ENH_METAFILE && !defined(__WIN16__)
+#if wxUSE_ENH_METAFILE && !defined(__WIN16__) && !defined(__WXWINCE__)
case wxDF_ENHMETAFILE:
{
wxEnhMetaFile *emf = (wxEnhMetaFile *)data;
switch ( dataFormat )
{
+#ifndef __WXWINCE__
case wxDF_BITMAP:
{
BITMAP bm;
retval = wxBM;
break;
}
-
+#endif
case wxDF_METAFILE:
case CF_SYLK:
case CF_DIF:
if (!s)
break;
- LPSTR lpGlobalMemory = (LPSTR)::GlobalLock(hGlobalMemory);
+ LPSTR lpGlobalMemory = (LPSTR) GlobalLock(hGlobalMemory);
memcpy(s, lpGlobalMemory, hsize);
- ::GlobalUnlock(hGlobalMemory);
+ GlobalUnlock(hGlobalMemory);
retval = s;
break;
if ( !buf )
break;
- LPSTR lpGlobalMemory = (LPSTR)::GlobalLock(hGlobalMemory);
+ LPSTR lpGlobalMemory = (LPSTR) GlobalLock(hGlobalMemory);
memcpy(buf, lpGlobalMemory, size);
- ::GlobalUnlock(hGlobalMemory);
+ GlobalUnlock(hGlobalMemory);
retval = buf;
break;
case CF_BITMAP:
formatEtc.tymed = TYMED_GDI;
break;
-
+#ifndef __WXWINCE__
case CF_METAFILEPICT:
formatEtc.tymed = TYMED_MFPICT;
break;
case CF_ENHMETAFILE:
formatEtc.tymed = TYMED_ENHMF;
break;
-
+#endif
default:
formatEtc.tymed = TYMED_HGLOBAL;
}
#include <windows.h>
-#if !defined(__WIN32__) || defined(__SALFORDC__)
- #include <commdlg.h>
-#endif
-
#include "wx/msw/private.h"
#include "wx/colordlg.h"
#include "wx/cmndata.h"
+#if !defined(__WIN32__) || defined(__WXWINCE__)
+ #include <commdlg.h>
+#endif
+
#include <math.h>
#include <stdlib.h>
#include <string.h>
CBS_AUTOHSCROLL | CBS_NOINTEGRALHEIGHT /* | WS_CLIPSIBLINGS */;
if ( style & wxCB_READONLY )
msStyle |= CBS_DROPDOWNLIST;
+#ifndef __WXWINCE__
else if ( style & wxCB_SIMPLE )
msStyle |= CBS_SIMPLE; // A list (shown always) and edit control
+#endif
else
msStyle |= CBS_DROPDOWN;
HBRUSH hBrush = ::CreateSolidBrush(wxColourToRGB(GetBackgroundColour()));
HDC hdc = GetHdcOf((*event.GetDC()));
+
+#ifndef __WXWINCE__
int mode = ::SetMapMode(hdc, MM_TEXT);
+#endif
::FillRect(hdc, &rect, hBrush);
::DeleteObject(hBrush);
+
+#ifndef __WXWINCE__
::SetMapMode(hdc, mode);
+#endif
}
WXHBRUSH wxControl::OnCtlColor(WXHDC pDC, WXHWND WXUNUSED(pWnd), WXUINT WXUNUSED(nCtlColor),
StretchBltModeChanger(HDC hdc, int mode)
: m_hdc(hdc)
{
+#ifndef __WXWINCE__
m_modeOld = ::SetStretchBltMode(m_hdc, mode);
if ( !m_modeOld )
wxLogLastError(_T("SetStretchBltMode"));
+#endif
}
~StretchBltModeChanger()
{
+#ifndef __WXWINCE__
if ( !::SetStretchBltMode(m_hdc, m_modeOld) )
wxLogLastError(_T("SetStretchBltMode"));
+#endif
}
private:
// note that we combine the new clipping region with the existing one: this
// is compatible with what the other ports do and is the documented
// behaviour now (starting with 2.3.3)
-#ifdef __WIN16__
+#if defined(__WIN16__) || defined(__WXWINCE__)
RECT rectClip;
if ( !::GetClipBox(GetHdc(), &rectClip) )
return;
rect.bottom = m_selectedBitmap.GetHeight();
}
+#ifndef __WXWINCE__
(void) ::SetMapMode(GetHdc(), MM_TEXT);
+#endif
DWORD colour = ::GetBkColor(GetHdc());
HBRUSH brush = ::CreateSolidBrush(colour);
int width = DeviceToLogicalXRel(VIEWPORT_EXTENT)*m_signX,
height = DeviceToLogicalYRel(VIEWPORT_EXTENT)*m_signY;
+#ifndef __WXWINCE__
::SetMapMode(GetHdc(), MM_ANISOTROPIC);
+
::SetViewportExtEx(GetHdc(), VIEWPORT_EXTENT, VIEWPORT_EXTENT, NULL);
::SetWindowExtEx(GetHdc(), width, height, NULL);
::SetViewportOrgEx(GetHdc(), (int)m_deviceOriginX, (int)m_deviceOriginY, NULL);
::SetWindowOrgEx(GetHdc(), (int)m_logicalOriginX, (int)m_logicalOriginY, NULL);
+#endif
}
bool wxDC::DoFloodFill(wxCoord x, wxCoord y, const wxColour& col, int style)
{
+#ifdef __WXWINCE__
+ return FALSE;
+#else
+
#ifdef __WXMICROWIN__
if (!GetHDC()) return FALSE;
#endif
CalcBoundingBox(x, y);
return success;
+#endif
}
bool wxDC::DoGetPixel(wxCoord x, wxCoord y, wxColour *col) const
wxCoord x2 = x+VIEWPORT_EXTENT;
wxCoord y2 = y+VIEWPORT_EXTENT;
- (void)MoveToEx(GetHdc(), XLOG2DEV(x1), YLOG2DEV(y), NULL);
- (void)LineTo(GetHdc(), XLOG2DEV(x2), YLOG2DEV(y));
-
- (void)MoveToEx(GetHdc(), XLOG2DEV(x), YLOG2DEV(y1), NULL);
- (void)LineTo(GetHdc(), XLOG2DEV(x), YLOG2DEV(y2));
+ wxDrawLine(GetHdc(), XLOG2DEV(x1), YLOG2DEV(y), XLOG2DEV(x2), YLOG2DEV(y));
+ wxDrawLine(GetHdc(), XLOG2DEV(x), YLOG2DEV(y1), XLOG2DEV(x), YLOG2DEV(y2));
CalcBoundingBox(x1, y1);
CalcBoundingBox(x2, y2);
if (!GetHDC()) return;
#endif
- (void)MoveToEx(GetHdc(), XLOG2DEV(x1), YLOG2DEV(y1), NULL);
- (void)LineTo(GetHdc(), XLOG2DEV(x2), YLOG2DEV(y2));
+ wxDrawLine(GetHdc(), XLOG2DEV(x1), YLOG2DEV(y1), XLOG2DEV(x2), YLOG2DEV(y2));
CalcBoundingBox(x1, y1);
CalcBoundingBox(x2, y2);
wxCoord x2, wxCoord y2,
wxCoord xc, wxCoord yc)
{
+#ifdef __WXWINCE__
+ // FIXME: emulate Arc
+#else
+
#ifdef __WXMICROWIN__
if (!GetHDC()) return;
#endif
CalcBoundingBox(xc - r, yc - r);
CalcBoundingBox(xc + r, yc + r);
+#endif
}
void wxDC::DoDrawCheckMark(wxCoord x1, wxCoord y1,
rect.right = x2;
rect.bottom = y2;
+#ifdef __WXWINCE__
+ DrawFrameControl(GetHdc(), &rect, DFC_BUTTON, DFCS_BUTTONCHECK);
+#else
DrawFrameControl(GetHdc(), &rect, DFC_MENU, DFCS_MENUCHECK);
+#endif
#else // Win16
// In WIN16, draw a cross
HPEN blackPen = ::CreatePen(PS_SOLID, 1, RGB(0, 0, 0));
CalcBoundingBox(cpoints[i].x, cpoints[i].y);
}
+#ifndef __WXWINCE__
int prev = SetPolyFillMode(GetHdc(),fillStyle==wxODDEVEN_RULE?ALTERNATE:WINDING);
+#endif
(void)Polygon(GetHdc(), cpoints, n);
+#ifndef __WXWINCE__
SetPolyFillMode(GetHdc(),prev);
+#endif
delete[] cpoints;
}
else
for (i = 0; i < n; i++)
CalcBoundingBox(points[i].x, points[i].y);
+#ifndef __WXWINCE__
int prev = SetPolyFillMode(GetHdc(),fillStyle==wxODDEVEN_RULE?ALTERNATE:WINDING);
+#endif
(void)Polygon(GetHdc(), (POINT*) points, n);
+#ifndef __WXWINCE__
SetPolyFillMode(GetHdc(),prev);
+#endif
}
}
// Chris Breeze 20/5/98: first implementation of DrawEllipticArc on Windows
void wxDC::DoDrawEllipticArc(wxCoord x,wxCoord y,wxCoord w,wxCoord h,double sa,double ea)
{
+#ifdef __WXWINCE__
+ // FIXME
+#else
+
#ifdef __WXMICROWIN__
if (!GetHDC()) return;
#endif
CalcBoundingBox(x, y);
CalcBoundingBox(x2, y2);
+#endif
}
void wxDC::DoDrawIcon(const wxIcon& icon, wxCoord x, wxCoord y)
SetBkMode(GetHdc(), m_backgroundMode == wxTRANSPARENT ? TRANSPARENT
: OPAQUE);
+#ifdef __WXWINCE__
+ if ( ::ExtTextOut(GetHdc(), XLOG2DEV(x), YLOG2DEV(y), 0, NULL,
+ text.c_str(), text.length(), NULL) == 0 )
+ {
+ wxLogLastError(wxT("TextOut"));
+ }
+#else
if ( ::TextOut(GetHdc(), XLOG2DEV(x), YLOG2DEV(y),
text.c_str(), text.length()) == 0 )
{
wxLogLastError(wxT("TextOut"));
}
+#endif
// restore the old parameters (text foreground colour may be left because
// it never is set to anything else, but background should remain
// VZ: it seems very wasteful to always use MM_ANISOTROPIC when in 99% of
// cases we could do with MM_TEXT and in the remaining 0.9% with
// MM_ISOTROPIC (TODO!)
+#ifndef __WXWINCE__
::SetMapMode(GetHdc(), MM_ANISOTROPIC);
int width = DeviceToLogicalXRel(VIEWPORT_EXTENT)*m_signX,
::SetViewportOrgEx(GetHdc(), m_deviceOriginX, m_deviceOriginY, NULL);
::SetWindowOrgEx(GetHdc(), m_logicalOriginX, m_logicalOriginY, NULL);
+#endif
}
void wxDC::SetUserScale(double x, double y)
if (!GetHDC()) return;
#endif
+#ifndef __WXWINCE__
if ( x == m_userScaleX && y == m_userScaleY )
return;
m_userScaleY = y;
SetMapMode(m_mappingMode);
+#endif
}
void wxDC::SetAxisOrientation(bool xLeftRight, bool yBottomUp)
if (!GetHDC()) return;
#endif
+#ifndef __WXWINCE__
int signX = xLeftRight ? 1 : -1,
signY = yBottomUp ? -1 : 1;
SetMapMode(m_mappingMode);
}
+#endif
}
void wxDC::SetSystemScale(double x, double y)
if (!GetHDC()) return;
#endif
+#ifndef __WXWINCE__
if ( x == m_scaleX && y == m_scaleY )
return;
m_scaleY = y;
SetMapMode(m_mappingMode);
+#endif
}
void wxDC::SetLogicalOrigin(wxCoord x, wxCoord y)
if (!GetHDC()) return;
#endif
+#ifndef __WXWINCE__
if ( x == m_logicalOriginX && y == m_logicalOriginY )
return;
m_logicalOriginY = y;
::SetWindowOrgEx(GetHdc(), (int)m_logicalOriginX, (int)m_logicalOriginY, NULL);
+#endif
}
void wxDC::SetDeviceOrigin(wxCoord x, wxCoord y)
if (!GetHDC()) return;
#endif
+#ifndef __WXWINCE__
if ( x == m_deviceOriginX && y == m_deviceOriginY )
return;
m_deviceOriginY = y;
::SetViewportOrgEx(GetHdc(), (int)m_deviceOriginX, (int)m_deviceOriginY, NULL);
+#endif
}
// ---------------------------------------------------------------------------
{
// if we already have a DIB, draw it using StretchDIBits(), otherwise
// use StretchBlt() if available and finally fall back to BitBlt()
+
+ // FIXME: use appropriate WinCE functions
+#ifndef __WXWINCE__
const int caps = ::GetDeviceCaps(GetHdc(), RASTERCAPS);
if ( bmpSrc.Ok() && (caps & RC_STRETCHDIB) )
{
success = TRUE;
}
}
+#endif
+ // __WXWINCE__
}
::SetTextColor(GetHdc(), old_textground);
#if wxUSE_PRINTING_ARCHITECTURE
#include "wx/msw/private.h"
+
+#if wxUSE_WXDIB
#include "wx/msw/dib.h"
+#endif
+
#include "wx/dcprint.h"
#include "math.h"
const wxBitmap& bmp,
wxCoord x, wxCoord y)
{
+#if wxUSE_WXDIB
wxDIB dib(bmp);
if ( !dib.IsOk() )
return FALSE;
}
return TRUE;
+#else
+ return FALSE;
+#endif
}
void wxPrinterDC::DoDrawBitmap(const wxBitmap& bmp,
#include "wx/log.h"
#endif //WX_PRECOMP
+#if wxUSE_WXDIB
+
#include "wx/bitmap.h"
#include "wx/intl.h"
#include "wx/file.h"
#endif // wxUSE_IMAGE
+#endif
+ // wxUSE_WXDIB
+
#include "wx/dir.h"
#include "wx/filefn.h" // for wxPathExists()
+#ifdef __WXMSW__
+ #include "wx/msw/private.h"
+#endif
+
// ----------------------------------------------------------------------------
// define the types and functions used for file searching
// ----------------------------------------------------------------------------
return (attr & (_A_SYSTEM | _A_HIDDEN)) != 0;
}
#else // Win32
- #include <windows.h>
-
typedef WIN32_FIND_DATA FIND_STRUCT;
typedef HANDLE FIND_DATA;
typedef DWORD FIND_ATTR;
#include "wx/msw/private.h"
+#ifdef __WXWINCE__
+#include <winreg.h>
+#include <objbase.h>
+#include <shlguid.h>
+#endif
#include <shlobj.h> // Win95 shell
// ----------------------------------------------------------------------------
bi.hwndOwner = parent ? GetHwndOf(parent) : NULL;
bi.pidlRoot = NULL;
bi.pszDisplayName = NULL;
+#ifdef __WXWINCE__
+ bi.lpszTitle = m_message.mb_str();
+#else
bi.lpszTitle = m_message.c_str();
+#endif
bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_STATUSTEXT;
bi.lpfn = BrowseCallbackProc;
bi.lParam = (LPARAM)m_path.c_str(); // param for the callback
// initial selection here
//
// wParam = TRUE => lParam is a string and not a PIDL
+#ifndef __WXWINCE__
SendMessage(hwnd, BFFM_SETSELECTION, TRUE, pData);
+#endif
break;
case BFFM_SELCHANGED:
m_hImageList = 0;
UINT flags = 0 ;
+#ifdef __WXWINCE__
+ flags = ILC_COLOR;
+#else
if (image.GetDepth() <= 4)
flags = ILC_COLOR4;
else if (image.GetDepth() <= 8)
flags = ILC_COLOR24;
else
flags = ILC_COLOR32;
+#endif
bool mask = (image.GetMask() != 0);
m_hImageList = 0;
UINT flags = 0 ;
+#ifdef __WXWINCE__
+ flags = ILC_COLOR;
+#else
if (image.GetDepth() <= 4)
flags = ILC_COLOR4;
else if (image.GetDepth() <= 8)
flags = ILC_COLOR24;
else
flags = ILC_COLOR32;
+#endif
bool mask = TRUE;
if ( mask )
flags |= ILC_MASK;
#include "wx/msw/private.h"
-#if !defined(__WIN32__) || defined(__SALFORDC__)
+#if !defined(__WIN32__) || defined(__WXWINCE__)
#include <commdlg.h>
#endif
#include "wx/msw/private.h"
-#if !defined(__WIN32__) || defined(__SALFORDC__)
+#if !defined(__WIN32__) || defined(__WXWINCE__)
#include <commdlg.h>
#endif
#endif
#include "wx/fontdlg.h"
+#include "wx/msw/private.h"
-#if !defined(__WIN32__) || defined(__SALFORDC__)
-#include <windows.h>
+#if !defined(__WIN32__) || defined(__WXWINCE__)
#include <commdlg.h>
#endif
-#include "wx/msw/private.h"
#include "wx/cmndata.h"
#include "wx/log.h"
#include "wx/font.h"
#endif
+#include "wx/msw/private.h"
+
#include "wx/fontutil.h"
#include "wx/fontenum.h"
#include "wx/fontmap.h"
-#include "wx/msw/private.h"
-
// ----------------------------------------------------------------------------
// private classes
// ----------------------------------------------------------------------------
#ifndef __WXMICROWIN__
HDC hDC = ::GetDC(NULL);
-#ifdef __WIN32__
+#ifdef __WXWINCE__
+ ::EnumFontFamilies(hDC, m_facename, (wxFONTENUMPROC)wxFontEnumeratorProc,
+ (LPARAM)this) ;
+#elif defined(__WIN32__)
LOGFONT lf;
lf.lfCharSet = m_charset;
wxStrncpy(lf.lfFaceName, m_facename, WXSIZEOF(lf.lfFaceName));
#include "wx/msw/private.h"
+#ifdef __WXWINCE__
+#include <commctrl.h>
+#endif
+
#if wxUSE_STATUSBAR
#include "wx/statusbr.h"
#include "wx/generic/statusbr.h"
#if wxUSE_TOOLTIPS
m_hwndToolTip = 0;
#endif
+#ifdef __WXWINCE__
+ m_commandBar = 0;
+#endif
// Data to save/restore when calling ShowFullScreen
m_fsStatusBarFields = 0;
wxFrame::~wxFrame()
{
m_isBeingDeleted = TRUE;
-
DeleteAllBars();
+#ifdef __WXWINCE__
+ if (m_commandBar)
+ {
+ ::DestroyWindow((HWND) m_commandBar);
+ m_commandBar = NULL;
+ }
+#endif
+
}
// ----------------------------------------------------------------------------
void wxFrame::InternalSetMenuBar()
{
-#ifndef __WXMICROWIN__
+#ifdef __WXMICROWIN__
+ // Nothing
+#elif defined(__WXWINCE__)
+ if (!m_commandBar)
+ {
+ // TODO: what identifer shall we use?
+ // TODO: eventually have a wxCommandBar class
+ m_commandBar = (WXHWND) CommandBar_Create(wxGetInstance(), GetHwnd(), 999);
+ }
+ if (m_commandBar)
+ {
+ CommandBar_InsertMenubarEx((HWND) m_commandBar, wxGetInstance(),
+ (LPTSTR) (HMENU) m_hMenu, 0);
+ }
+#else
if ( !::SetMenu(GetHwnd(), (HMENU)m_hMenu) )
{
wxLogLastError(wxT("SetMenu"));
}
#endif // wxUSE_TOOLBAR
-#ifndef __WXMICROWIN__
+ // TODO: make it work for WinCE
+#if !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
if (style & wxFULLSCREEN_NOMENUBAR)
SetMenu((HWND)GetHWND(), (HMENU) NULL);
#endif
}
#endif // wxUSE_STATUSBAR
-#ifndef __WXMICROWIN__
+ // TODO: make it work for WinCE
+#if !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
if ((m_fsStyle & wxFULLSCREEN_NOMENUBAR) && (m_hMenu != 0))
SetMenu((HWND)GetHWND(), (HMENU)m_hMenu);
#endif
RECT rect;
if ( GetUpdateRect(GetHwnd(), &rect, FALSE) )
{
-#ifndef __WXMICROWIN__
+#if !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
if ( m_iconized )
{
const wxIcon& icon = GetIcon();
bool wxFrame::HandleSize(int x, int y, WXUINT id)
{
bool processed = FALSE;
-#ifndef __WXMICROWIN__
+#if !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
switch ( id )
{
processed = HandlePaint();
break;
-#ifndef __WXMICROWIN__
+#if !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
case WM_MENUSELECT:
{
WXWORD item, flags;
#include "wx/bitmap.h"
#include "wx/msw/gdiimage.h"
+
+#if wxUSE_WXDIB
#include "wx/msw/dib.h"
+#endif
+
+#ifdef __WXWINCE__
+#include <winreg.h>
+#include <shellapi.h>
+#endif
#include "wx/listimpl.cpp"
WX_DEFINE_LIST(wxGDIImageHandlerList);
int WXUNUSED(desiredWidth),
int WXUNUSED(desiredHeight))
{
+#if wxUSE_WXDIB
wxCHECK_MSG( bitmap, false, _T("NULL bitmap in LoadFile") );
wxDIB dib(name);
return dib.IsOk() && bitmap->CopyFromDIB(dib);
+#else
+ return FALSE;
+#endif
}
bool wxBMPFileHandler::SaveFile(wxBitmap *bitmap,
int WXUNUSED(type),
const wxPalette * WXUNUSED(pal))
{
+#if wxUSE_WXDIB
wxCHECK_MSG( bitmap, false, _T("NULL bitmap in SaveFile") );
wxDIB dib(*bitmap);
return dib.Save(name);
+#else
+ return FALSE;
+#endif
}
// ----------------------------------------------------------------------------
}
else
#endif
- // were we asked for a large icon?
+ // were we asked for a large icon?
if ( desiredWidth == ::GetSystemMetrics(SM_CXICON) &&
desiredHeight == ::GetSystemMetrics(SM_CYICON) )
{
}
//else: not standard size, load below
+#ifndef __WXWINCE__
if ( !hicon )
{
// take any size icon from the file by index
hicon = ::ExtractIcon(wxGetInstance(), nameReal, iconIndex);
}
+#endif
if ( !hicon )
{
}
// next check if it's not a standard icon
+#ifndef __WXWINCE__
if ( !hicon && !hasSize )
{
static const struct
}
}
}
+#endif
wxSize size = wxGetHiconSize(hicon);
icon->SetSize(size.x, size.y);
wxSize wxGetHiconSize(HICON hicon)
{
wxSize size(32, 32); // default
-
+#ifndef __WXWINCE__
if ( hicon && wxGetOsVersion() != wxWIN32S )
{
ICONINFO info;
::DeleteObject(info.hbmColor);
}
}
-
+#endif
return size;
}
#include "wx/gdiobj.h"
#include "wx/msw/private.h"
-#include "assert.h"
IMPLEMENT_DYNAMIC_CLASS(wxGDIObject, wxObject)
// set appropriate color depth
int dd = wxDisplayDepth();
+#ifdef __WXWINCE__
+ flags |= ILC_COLOR;
+#else
if (dd <= 4) flags |= ILC_COLOR; // 16 color
else if (dd <= 8) flags |= ILC_COLOR8; // 256 color
else if (dd <= 16) flags |= ILC_COLOR16; // 64k hi-color
else if (dd <= 24) flags |= ILC_COLOR24; // 16m truecolor
else if (dd <= 32) flags |= ILC_COLOR32; // 16m truecolor
+#endif
if ( mask )
flags |= ILC_MASK;
if (m_windowStyle & wxLB_SORT)
wstyle |= LBS_SORT;
-#if wxUSE_OWNER_DRAWN
+#if wxUSE_OWNER_DRAWN && !defined(__WXWINCE__)
if ( m_windowStyle & wxLB_OWNERDRAW ) {
// we don't support LBS_OWNERDRAWVARIABLE yet
wstyle |= LBS_OWNERDRAWFIXED;
MEASUREITEMSTRUCT *pStruct = (MEASUREITEMSTRUCT *)item;
+#ifdef __WXWINCE__
+ HDC hdc = GetDC(NULL);
+#else
HDC hdc = CreateIC(wxT("DISPLAY"), NULL, NULL, 0);
+#endif
wxDC dc;
dc.SetHDC((WXHDC)hdc);
#if !defined(_WINDLL)
+#ifdef __WXWINCE__
+int WINAPI WinMain(HINSTANCE hInstance,
+ HINSTANCE hPrevInstance,
+ LPWSTR lpCmdLine,
+ int nCmdShow)
+{
+ return wxEntry(hInstance, hPrevInstance, (char*) lpCmdLine, nCmdShow);
+}
+#else
int PASCAL WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
{
return wxEntry(hInstance, hPrevInstance, lpCmdLine, nCmdShow);
}
+#endif
#else // _WINDLL
// make the given menu item default
static void SetDefaultMenuItem(HMENU hmenu, UINT id)
{
+#ifndef __WXWINCE__
MENUITEMINFO mii;
wxZeroMemory(mii);
mii.cbSize = sizeof(MENUITEMINFO);
{
wxLogLastError(wxT("SetMenuItemInfo"));
}
+#endif
+}
+
+#ifdef __WXWINCE__
+UINT GetMenuState(HMENU hMenu, UINT id, UINT flags)
+{
+ MENUITEMINFO info;
+ wxZeroMemory(info);
+ info.cbSize = sizeof(info);
+ info.fMask = MIIM_STATE;
+ if ( !GetMenuItemInfo(hMenu, id, flags & MF_BYCOMMAND ? FALSE : TRUE, & info) )
+ wxLogLastError(wxT("GetMenuItemInfo"));
+ return info.fState;
}
+#endif
// ============================================================================
// implementation
else
{
// modify the title
+#ifdef __WXWINCE__
+ MENUITEMINFO info;
+ wxZeroMemory(info);
+ info.cbSize = sizeof(info);
+ info.fMask = MIIM_TYPE;
+ info.fType = MFT_STRING;
+ info.cch = m_title.Length();
+ info.dwTypeData = (LPTSTR) m_title.c_str();
+ if ( !SetMenuItemInfo(hMenu, 0, TRUE, & info) )
+ {
+ wxLogLastError(wxT("SetMenuItemInfo"));
+ }
+#else
if ( !ModifyMenu(hMenu, 0u,
MF_BYPOSITION | MF_STRING,
(unsigned)idMenuTitle, m_title) )
{
wxLogLastError(wxT("ModifyMenu"));
}
+#endif
}
}
// useless anyhow (as it could be retrieved using GetId()) and
// uncompatible with wxGTK, so now we use the command int instead
// to pass the checked status
- SendEvent(id, ::GetMenuState(GetHmenu(), id, MF_BYCOMMAND) & MF_CHECKED);
+ UINT menuState = ::GetMenuState(GetHmenu(), id, MF_BYCOMMAND) ;
+ SendEvent(id, menuState & MF_CHECKED);
}
return TRUE;
id = pos;
}
+#ifdef __WXWINCE__
+ MENUITEMINFO info;
+ wxZeroMemory(info);
+ info.cbSize = sizeof(info);
+ info.fMask = MIIM_TYPE;
+ info.fType = MFT_STRING;
+ info.cch = label.Length();
+ info.dwTypeData = (LPTSTR) label.c_str();
+ if ( !SetMenuItemInfo(GetHmenu(), id, TRUE, & info) )
+ {
+ wxLogLastError(wxT("SetMenuItemInfo"));
+ }
+
+#else
if ( ::ModifyMenu(GetHmenu(), pos, MF_BYPOSITION | MF_STRING | flagsOld,
- id, label) == (int)0xFFFFFFFF )
+ id, label) == (int)0xFFFFFFFF )
{
wxLogLastError(wxT("ModifyMenu"));
}
+#endif
Refresh();
}
#include "wx/msw/private.h"
+#ifdef __WXWINCE__
+// Implemented in menu.cpp
+UINT GetMenuState(HMENU hMenu, UINT id, UINT flags) ;
+#endif
+
// ---------------------------------------------------------------------------
// macro
// ---------------------------------------------------------------------------
data = (wxChar*) text.c_str();
}
+#ifdef __WXWINCE__
+ // FIXME: complete this, applying the old
+ // flags
+ MENUITEMINFO info;
+ wxZeroMemory(info);
+ info.cbSize = sizeof(info);
+ info.fMask = MIIM_TYPE;
+ info.fType = MFT_STRING;
+ info.cch = text.Length();
+ info.dwTypeData = (LPTSTR) data ;
+ if ( !SetMenuItemInfo(hMenu, id, FALSE, & info) )
+ {
+ wxLogLastError(wxT("SetMenuItemInfo"));
+ }
+#else
if ( ::ModifyMenu(hMenu, id,
MF_BYCOMMAND | flagsOld,
id, data) == (int)0xFFFFFFFF )
{
wxLogLastError(wxT("ModifyMenu"));
}
+#endif
}
}
if (hWnd)
msStyle |= MB_APPLMODAL;
+#ifndef __WXWINCE__
else
msStyle |= MB_TASKMODAL;
+#endif
// do show the dialog
int msAns = MessageBox(hWnd, m_message.c_str(), m_caption.c_str(), msStyle);
{
int style1 = (style & 0xFF);
- if ((style1 == SS_LEFT) || (style1 == SS_RIGHT) || (style1 == SS_SIMPLE))
+ if ((style1 == SS_LEFT) || (style1 == SS_RIGHT)
+#ifndef __WXWINCE__
+ || (style1 == SS_SIMPLE)
+#endif
+ )
win = new wxStaticText;
#if wxUSE_STATBMP
#if defined(__WIN32__) && defined(BS_BITMAP)
#define _FORCENAMELESSUNION
#include "wx/log.h"
+#include "wx/msw/private.h"
#include "wx/msw/ole/oleutils.h"
#include "wx/msw/ole/automtn.h"
-#include "wx/msw/private.h"
#include <math.h>
+
+#ifdef __WXWINCE__
+#include "wx/msw/wince/time.h"
+#else
#include <time.h>
+#endif
#include <wtypes.h>
#include <unknwn.h>
+
#include <ole2.h>
#define _huge
+
+#ifndef __WXWINCE__
#include <ole2ver.h>
+#endif
+
#include <oleauto.h>
// Verifies will fail if the needed buffer size is too large
#include "wx/msw/private.h" // includes <windows.h>
+#ifdef __WXWINCE__
+#include <winreg.h>
+#endif
+
// for some compilers, the entire ole2.h must be included, not only oleauto.h
-#if wxUSE_NORLANDER_HEADERS || defined(__WATCOMC__)
+#if wxUSE_NORLANDER_HEADERS || defined(__WATCOMC__) || defined(__WXWINCE__)
#include <ole2.h>
#endif
pmedium->tymed = TYMED_ENHMF;
break;
+#ifndef __WXWINCE__
case wxDF_METAFILE:
pmedium->hGlobal = GlobalAlloc(GMEM_MOVEABLE | GMEM_SHARE,
sizeof(METAFILEPICT));
}
pmedium->tymed = TYMED_MFPICT;
break;
-
+#endif
default:
// alloc memory
size_t size = m_pDataObject->GetDataSize(format);
break;
#endif
case CF_BITMAP:
+#ifndef __WXWINCE__
case CF_HDROP:
// these formats don't use size at all, anyhow (but
// pass data by handle, which is always a single DWORD)
size = 0;
break;
+#endif
case CF_DIB:
// the handler will calculate size itself (it's too
size = 0;
break;
+#ifndef __WXWINCE__
case CF_METAFILEPICT:
size = sizeof(METAFILEPICT);
break;
-
+#endif
default:
{
// we suppose that the size precedes the data
bool wxFileDataObject::SetData(size_t WXUNUSED(size), const void *pData)
{
+#ifndef __WXWINCE__
m_filenames.Empty();
// the documentation states that the first member of DROPFILES structure is
}
return TRUE;
+#else
+ return FALSE;
+#endif
}
void wxFileDataObject::AddFile(const wxString& file)
size_t wxFileDataObject::GetDataSize() const
{
+#ifndef __WXWINCE__
// size returned will be the size of the DROPFILES structure,
// plus the list of filesnames (null byte separated), plus
// a double null at the end
}
return sz;
+#else
+ return 0;
+#endif
}
bool wxFileDataObject::GetDataHere(void *pData) const
{
+#ifndef __WXWINCE__
// pData points to an externally allocated memory block
// created using the size returned by GetDataSize()
*pbuf = wxT('\0');
return TRUE;
+#else
+ return FALSE;
+#endif
}
// ----------------------------------------------------------------------------
#include "wx/log.h"
#include "wx/dnd.h"
-#include <windows.h>
+#include "wx/msw/private.h"
// for some compilers, the entire ole2.h must be included, not only oleauto.h
-#if wxUSE_NORLANDER_HEADERS || defined(__WATCOMC__)
+#if wxUSE_NORLANDER_HEADERS || defined(__WATCOMC__) || defined(__WXWINCE__)
#include <ole2.h>
#endif
#if wxUSE_OLE && wxUSE_DRAG_AND_DROP
+#include "wx/msw/private.h"
#include "wx/log.h"
+#ifdef __WXWINCE__
+ #include <winreg.h>
+ #include <ole2.h>
+#endif
+
#ifdef __WIN32__
#if !defined(__GNUWIN32__) || wxUSE_NORLANDER_HEADERS
#if wxCHECK_W32API_VERSION( 1, 0 )
#include "wx/dnd.h"
-#ifndef __WIN32__
- #include <ole2.h>
- #include <olestd.h>
-#endif
-
#include "wx/msw/ole/oleutils.h"
// ----------------------------------------------------------------------------
#ifndef __CYGWIN10__
-#include <windows.h>
+#include "wx/msw/private.h"
+
+#ifdef __WXWINCE__
+ #include <winreg.h>
+ #include <ole2.h>
+
+ #define GUID_DEFINED
+ #define UUID_DEFINED
+#endif
// OLE
+#ifndef __WXWINCE__
#include "wx/msw/ole/uuid.h"
+#endif
+
#include "wx/msw/ole/oleutils.h"
#if defined(__VISUALC__) && (__VISUALC__ > 1000)
}
}
+#ifndef __WXWINCE__
// unknown IID, just transform to string
Uuid uuid(riid);
return wxString((const wxChar *)uuid);
+#else
+ return wxEmptyString;
+#endif
}
void wxLogQueryInterface(const wxChar *szInterface, REFIID riid)
#endif
#include "wx/msw/private.h"
-#include "assert.h"
IMPLEMENT_DYNAMIC_CLASS(wxPen, wxGDIObject)
// Join style, Cap style, Pen Stippling only on Win32.
// Currently no time to find equivalent on Win3.1, sorry
// [if such equiv exist!!]
-#if defined(__WIN32__) && !defined(__WXMICROWIN__)
+#if defined(__WIN32__) && !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
if (M_PENDATA->m_join==wxJOIN_ROUND &&
M_PENDATA->m_cap==wxCAP_ROUND &&
M_PENDATA->m_style!=wxUSER_DASH &&
int cstyle;
switch (wx_style)
{
-#if !defined(__WXMICROWIN__)
+#if !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
case wxDOT:
cstyle = PS_DOT;
break;
#endif
case wxUSER_DASH:
-#if !defined(__WXMICROWIN__)
+#if !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
#ifdef __WIN32__
// Win32s doesn't have PS_USERSTYLE
if (wxGetOsVersion()==wxWINDOWS_NT || wxGetOsVersion()==wxWIN95)
// WS_CHILD but then showing a popup would deactivate the parent which
// is ugly and working around this, although possible, is even more
// ugly
+ // GetDesktopWindow() is not always supported on WinCE, and if
+ // it is, it often returns NULL.
+#ifdef __WXWINCE__
+ return 0;
+#else
return (WXHWND)::GetDesktopWindow();
+#endif
}
bool wxPopupWindow::Show(bool show)
bool processed = TRUE;
+ // HELPINFO doesn't seem to be supported on WinCE.
+#ifndef __WXWINCE__
HELPINFO* info = (HELPINFO*) lParam;
// Don't yet process menu help events, just windows
if (info->iContextType == HELPINFO_WINDOW)
+#endif
{
wxWindow* subjectOfHelp = radiobox;
bool eventProcessed = FALSE;
while (subjectOfHelp && !eventProcessed)
{
- wxHelpEvent helpEvent(wxEVT_HELP, subjectOfHelp->GetId(), wxPoint(info->MousePos.x, info->MousePos.y) ) ; // info->iCtrlId);
+ wxHelpEvent helpEvent(wxEVT_HELP, subjectOfHelp->GetId(),
+#ifdef __WXWINCE__
+ wxPoint(0, 0)
+#else
+ wxPoint(info->MousePos.x, info->MousePos.y)
+#endif
+ ) ; // info->iCtrlId);
helpEvent.SetEventObject(radiobox);
eventProcessed = radiobox->GetEventHandler()->ProcessEvent(helpEvent);
}
processed = eventProcessed;
}
+#ifndef __WXWINCE__
else if (info->iContextType == HELPINFO_MENUITEM)
{
wxHelpEvent helpEvent(wxEVT_HELP, info->iCtrlId) ;
helpEvent.SetEventObject(radiobox);
processed = radiobox->GetEventHandler()->ProcessEvent(helpEvent);
}
- else processed = FALSE;
-
+ else
+ processed = FALSE;
+#endif
if (processed)
return 0;
wxRegionRefData(const wxRegionRefData& data)
{
-#if defined(__WIN32__) && !defined(__WXMICROWIN__)
+#if defined(__WIN32__) && !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
DWORD noBytes = ::GetRegionData(data.m_region, 0, NULL);
RGNDATA *rgnData = (RGNDATA*) new char[noBytes];
::GetRegionData(data.m_region, noBytes, rgnData);
wxRegion::wxRegion(size_t n, const wxPoint *points, int fillStyle)
{
-#ifdef __WXMICROWIN__
+#if defined(__WXMICROWIN__) || defined(__WXWINCE__)
m_refData = NULL;
M_REGION = NULL;
#else
#include <windows.h>
+#ifdef __WXWINCE__
+#include "wx/msw/private.h"
+#include <winbase.h>
+#include <winreg.h>
+#endif
+
// other std headers
#include <stdlib.h> // for _MAX_PATH
{ HKEY_CURRENT_USER, wxT("HKEY_CURRENT_USER"), wxT("HKCU") },
{ HKEY_LOCAL_MACHINE, wxT("HKEY_LOCAL_MACHINE"), wxT("HKLM") },
{ HKEY_USERS, wxT("HKEY_USERS"), wxT("HKU") }, // short name?
+#ifndef __WXWINCE__
{ HKEY_PERFORMANCE_DATA, wxT("HKEY_PERFORMANCE_DATA"), wxT("HKPD") },
-#if WINVER >= 0x0400
+#endif
+#if WINVER >= 0x0400 && !defined(__WXWINCE__)
{ HKEY_CURRENT_CONFIG, wxT("HKEY_CURRENT_CONFIG"), wxT("HKCC") },
-#ifndef __GNUWIN32__
+#if !defined(__GNUWIN32__) && !defined(__WXWINCE__)
{ HKEY_DYN_DATA, wxT("HKEY_DYN_DATA"), wxT("HKDD") }, // short name?
#endif //GNUWIN32
#endif //WINVER >= 4.0
return TRUE;
HKEY tmpKey;
- m_dwLastError = RegOpenKey((HKEY) m_hRootKey, m_strKey, &tmpKey);
+ m_dwLastError = RegOpenKeyEx((HKEY) m_hRootKey, m_strKey,
+ 0, 0, &tmpKey);
if ( m_dwLastError != ERROR_SUCCESS ) {
wxLogSysError(m_dwLastError, _("Can't open registry key '%s'"),
GetName().c_str());
return TRUE;
HKEY tmpKey;
+#ifdef __WXWINCE__
+ DWORD disposition;
+ m_dwLastError = RegCreateKeyEx((HKEY) m_hRootKey, m_strKey,
+ NULL, // reserved
+ NULL, // class string
+ 0,
+ 0,
+ NULL,
+ &tmpKey,
+ &disposition);
+#else
m_dwLastError = RegCreateKey((HKEY) m_hRootKey, m_strKey, &tmpKey);
+#endif
if ( m_dwLastError != ERROR_SUCCESS ) {
wxLogSysError(m_dwLastError, _("Can't create registry key '%s'"),
GetName().c_str());
strValue.UngetWriteBuf();
// expand the var expansions in the string unless disabled
+#ifndef __WXWINCE__
if ( (dwType == REG_EXPAND_SZ) && !raw )
{
DWORD dwExpSize = ::ExpandEnvironmentStrings(strValue, NULL, 0);
wxLogLastError(_T("ExpandEnvironmentStrings"));
}
}
+#endif
+ // __WXWINCE__
}
if ( m_dwLastError == ERROR_SUCCESS ) {
return FALSE;
wxChar szKeyName[_MAX_PATH + 1];
+
+#ifdef __WXWINCE__
+ DWORD sizeName = WXSIZEOF(szKeyName);
+ m_dwLastError = RegEnumKeyEx((HKEY) m_hKey, lIndex++, szKeyName, & sizeName,
+ 0, NULL, NULL, NULL);
+#else
m_dwLastError = RegEnumKey((HKEY) m_hKey, lIndex++, szKeyName, WXSIZEOF(szKeyName));
+#endif
if ( m_dwLastError != ERROR_SUCCESS ) {
if ( m_dwLastError == ERROR_NO_MORE_ITEMS ) {
return TRUE;
HKEY hkeyDummy;
- if ( RegOpenKey( (HKEY) hRootKey, szKey, &hkeyDummy) == ERROR_SUCCESS ) {
+ if ( RegOpenKeyEx( (HKEY) hRootKey, szKey, 0, 0, &hkeyDummy) == ERROR_SUCCESS ) {
RegCloseKey(hkeyDummy);
return TRUE;
}
int position,
maxPos, trackPos = pos;
-#ifdef __WIN32__
// when we're dragging the scrollbar we can't use pos parameter because it
// is limited to 16 bits
- if ( wParam == SB_THUMBPOSITION || wParam == SB_THUMBTRACK )
+ // JACS: now always using GetScrollInfo, since there's no reason
+ // not to
+// if ( wParam == SB_THUMBPOSITION || wParam == SB_THUMBTRACK )
{
SCROLLINFO scrollInfo;
wxZeroMemory(scrollInfo);
position = scrollInfo.nPos;
maxPos = scrollInfo.nMax;
}
+#if 0
else
-#endif // Win32
{
position = ::GetScrollPos((HWND) control, SB_CTL);
int minPos;
::GetScrollRange((HWND) control, SB_CTL, &minPos, &maxPos);
}
+#endif
#if defined(__WIN95__)
// A page size greater than one has the effect of reducing the effective
int wxScrollBar::GetThumbPosition(void) const
{
- return ::GetScrollPos((HWND)m_hWnd, SB_CTL);
+ SCROLLINFO scrollInfo;
+ wxZeroMemory(scrollInfo);
+ scrollInfo.cbSize = sizeof(SCROLLINFO);
+ scrollInfo.fMask = SIF_POS;
+
+ if ( !::GetScrollInfo(GetHwnd(), SB_CTL, &scrollInfo) )
+ {
+ wxLogLastError(_T("GetScrollInfo"));
+ }
+ return scrollInfo.nPos;
+// return ::GetScrollPos((HWND)m_hWnd, SB_CTL);
}
void wxScrollBar::SetScrollbar(int position, int thumbSize, int range, int pageSize,
static const int gs_metricsMap[] =
{
-1, // wxSystemMetric enums start at 1, so give a dummy value for pos 0.
-#ifdef __WIN32__
+#if defined(__WIN32__) && !defined(__WXWINCE__)
SM_CMOUSEBUTTONS,
#else
-1,
SM_CXEDGE,
SM_CYEDGE,
#else
- -1, -1, -1, -1
+ -1, -1, -1, -1,
#endif
SM_CXHSCROLL,
SM_CYHSCROLL,
+#ifdef SM_CXHTHUMB
SM_CXHTHUMB,
+#else
+ -1,
+#endif
SM_CXICON,
SM_CYICON,
SM_CXICONSPACING,
SM_CYICONSPACING,
+#ifdef SM_CXHTHUMB
SM_CXMIN,
SM_CYMIN,
+#else
+ -1, -1,
+#endif
SM_CXSCREEN,
SM_CYSCREEN,
SM_CXSMICON,
SM_CYSMICON,
#else
- -1, -1, -1, -1
+ -1, -1, -1, -1,
#endif
SM_CYHSCROLL,
SM_CXVSCROLL,
SM_CXVSCROLL,
SM_CYVSCROLL,
+#ifdef SM_CYVTHUMB
SM_CYVTHUMB,
+#else
+ -1,
+#endif
SM_CYCAPTION,
SM_CYMENU,
#if defined(__WIN32__) && defined(SM_NETWORK)
#else
-1,
#endif
+#ifdef SM_PENWINDOWS
SM_PENWINDOWS,
+#else
+ -1,
+#endif
#if defined(__WIN32__) && defined(SM_SHOWSOUNDS)
SM_SHOWSOUNDS,
#else
-1,
#endif
+#ifdef SM_SWAPBUTTON
SM_SWAPBUTTON,
+#else
+ -1
+#endif
};
// Get a system metric, e.g. scrollbar size
WXHBRUSH wxSlider95::OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor,
WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
{
+#ifndef __WXWINCE__
if ( nCtlColor == CTLCOLOR_SCROLLBAR )
return 0;
-
+#else
+ if ( nCtlColor != CTLCOLOR_STATIC )
+ return 0;
+#endif
// Otherwise, it's a static
return wxControl::OnCtlColor(pDC, pWnd, nCtlColor, message, wParam, lParam);
}
WXWPARAM wParam,
WXLPARAM lParam)
{
+#ifndef __WXWINCE__
// Ensure that static items get messages. Some controls don't like this
// message to be intercepted (e.g. RichEdit), hence the tests.
if ( nMsg == WM_NCHITTEST )
return (long)HTCLIENT;
+#endif
return wxWindow::MSWWindowProc(nMsg, wParam, lParam);
}
// after removing WS_EX_TRANSPARENT bit) and so let's use it until
// we fix the real underlying problem
if ( !MSWCreateControl(wxT("BUTTON"), BS_GROUPBOX, pos, size, label,
- WS_EX_TRANSPARENT) )
+#ifdef __WXWINCE__
+ 0
+#else
+ WS_EX_TRANSPARENT
+#endif
+ ) )
return FALSE;
// to be transparent we should have the same colour as the parent as well
{
switch ( nMsg )
{
+#ifndef __WXWINCE__
case WM_NCHITTEST:
// FIXME: this hack is specific to dialog ed, shouldn't it be
// somehow disabled during normal operation?
return (long)HTCLIENT;
}
break;
-
+#endif
case WM_ERASEBKGND:
// prevent wxControl from processing this message because it will
// erase the background incorrectly and there is no way for us to
}
else
{
+#ifndef __WXWINCE__
// may be some versions of comctl32.dll do need it - anyhow, it won't
// do any harm
wstyle |= SBARS_SIZEGRIP;
+#endif
}
m_hWnd = (WXHWND)CreateStatusWindow(wstyle,
WXDWORD msStyle = wxControl::MSWGetStyle(style, exstyle);
// add our default styles
- return msStyle | SS_GRAYRECT | SS_SUNKEN | SS_NOTIFY | WS_CLIPSIBLINGS;
+ msStyle |= SS_SUNKEN | SS_NOTIFY | WS_CLIPSIBLINGS;
+#ifndef __WXWINCE__
+ msStyle |= SS_GRAYRECT ;
+#endif
+
+ return msStyle ;
}
#endif // wxUSE_STATLINE
#include "malloc.h"
#endif
-#include <windows.h>
+#include "wx/msw/private.h"
#if defined(__WIN95__) && !(defined(__GNUWIN32_OLD__) && !defined(__CYGWIN10__))
#include <commctrl.h>
#include "wx/tabctrl.h"
#include "wx/app.h"
-#include "wx/msw/private.h"
#include "wx/msw/imaglist.h"
IMPLEMENT_DYNAMIC_CLASS(wxTabCtrl, wxControl)
if (m_windowStyle & wxBORDER)
tabStyle |= WS_BORDER;
+#ifndef __WXWINCE__
tabStyle |= TCS_TOOLTIPS;
+#endif
// Create the toolbar control.
HWND hWndTabCtrl = CreateWindowEx(0L, // No extended styles.
eventType = wxEVT_COMMAND_TAB_SEL_CHANGING;
break;
+#ifndef __WXWINCE__
case TTN_NEEDTEXT:
{
// TODO
// if (tool->m_shortHelpString != "")
// ttText->lpszText = (char *) (const char *)tool->m_shortHelpString;
}
-
+#endif
default :
return wxControl::MSWOnNotify(idCtrl, lParam, result);
}
#if defined(__WIN95__)
-#include <windows.h>
-
+#include "wx/msw/private.h"
#include "wx/msw/winundef.h"
#include <string.h>
#include "wx/taskbar.h"
-#include "wx/msw/private.h"
#ifdef __GNUWIN32_OLD__
#include "wx/msw/gnuwin32/extra.h"
#endif
-#ifdef __SALFORDC__
+#ifdef __WXWINCE__
+ #include <winreg.h>
#include <shellapi.h>
#endif
if ( !tooltip.empty() )
{
notifyData.uFlags |= NIF_TIP;
- lstrcpyn(notifyData.szTip, tooltip.c_str(), WXSIZEOF(notifyData.szTip));
+// lstrcpyn(notifyData.szTip, tooltip.c_str(), WXSIZEOF(notifyData.szTip));
+ wxStrncpy(notifyData.szTip, tooltip.c_str(), WXSIZEOF(notifyData.szTip));
}
bool ok = Shell_NotifyIcon(m_iconAdded ? NIM_MODIFY
#include <string.h>
#include <stdlib.h>
+
+#ifndef __WXWINCE__
#include <sys/types.h>
+#endif
#if wxUSE_RICHEDIT
(defined(__GNUG__) && defined(__MSVCRT__)) || \
defined(__WATCOMC__) || defined(__MWERKS__)
+#ifndef __WXWINCE__
#undef wxUSE_BEGIN_THREAD
#define wxUSE_BEGIN_THREAD
#endif
+#endif
+
#ifdef wxUSE_BEGIN_THREAD
// this is where _beginthreadex() is declared
#include <process.h>
wxSemaphoreInternal::wxSemaphoreInternal(int initialcount, int maxcount)
{
+#ifndef __WXWINCE__
if ( maxcount == 0 )
{
// make it practically infinite
maxcount,
NULL // no name
);
-
+#endif
if ( !m_semaphore )
{
wxLogLastError(_T("CreateSemaphore()"));
wxSemaError wxSemaphoreInternal::Post()
{
+#ifndef __WXWINCE__
if ( !::ReleaseSemaphore(m_semaphore, 1, NULL /* ptr to previous count */) )
+#endif
{
wxLogLastError(_T("ReleaseSemaphore"));
bool wxThread::SetConcurrency(size_t level)
{
+#ifndef __WXWINCE__
wxASSERT_MSG( IsMain(), _T("should only be called from the main thread") );
// ok only for the default one
return FALSE;
}
-
+#endif
return TRUE;
}
wxTimerMap );
wxTimerMap wxTimerList;
-UINT WINAPI _EXPORT wxTimerProc(HWND hwnd, WORD, int idTimer, DWORD);
+
+void WINAPI _EXPORT wxTimerProc(HWND hwnd, WORD, int idTimer, DWORD);
// ----------------------------------------------------------------------------
// macros
wxCHECK_MSG( m_milli > 0, false, wxT("invalid value for timer timeour") );
+#ifdef __WXWINCE__
+ m_id = ::SetTimer(NULL, (UINT)(m_id ? m_id : 1),
+ (UINT)m_milli, (void (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,unsigned long)) wxTimerProc);
+#else
TIMERPROC wxTimerProcInst = (TIMERPROC)
MakeProcInstance((FARPROC)wxTimerProc, wxGetInstance());
m_id = ::SetTimer(NULL, (UINT)(m_id ? m_id : 1),
(UINT)m_milli, wxTimerProcInst);
+#endif
if ( m_id > 0 )
{
timer.Notify();
}
-UINT WINAPI _EXPORT wxTimerProc(HWND WXUNUSED(hwnd), WORD, int idTimer, DWORD)
+void WINAPI _EXPORT wxTimerProc(HWND WXUNUSED(hwnd), WORD, int idTimer, DWORD)
{
wxTimerMap::iterator node = wxTimerList.find((long)idTimer);
- wxCHECK_MSG( node != wxTimerList.end(), 0,
- wxT("bogus timer id in wxTimerProc") );
+ wxASSERT_MSG( node != wxTimerList.end(), wxT("bogus timer id in wxTimerProc") );
wxProcessTimer(*(node->second));
- return 0;
+ // return 0;
}
#endif // wxUSE_TIMER
#include "wx/module.h"
#include "wx/msw/private.h"
+#include "wx/msw/winundef.h"
+
+#ifdef CreateDialog
+#undef CreateDialog
+#endif
#include "wx/display.h"
// border and caption styles
if ( style & wxRESIZE_BORDER )
+ {
+#ifndef __WXWINCE__
msflags |= WS_THICKFRAME;
+#endif
+ }
else if ( !(style & wxBORDER_NONE) )
msflags |= WS_BORDER;
else
msflags |= WS_MAXIMIZEBOX;
if ( style & wxSYSTEM_MENU )
msflags |= WS_SYSMENU;
+#ifndef __WXWINCE__
if ( style & wxMINIMIZE )
msflags |= WS_MINIMIZE;
if ( style & wxMAXIMIZE )
msflags |= WS_MAXIMIZE;
+#endif
// Keep this here because it saves recoding this function in wxTinyFrame
#if wxUSE_ITSY_BITSY && !defined(__WIN32__)
// The second one is solved here by using WS_EX_APPWINDOW flag, the
// first one is dealt with in our MSWGetParent() method
// implementation
+#ifndef __WXWINCE__
if ( !(style & wxFRAME_NO_TASKBAR) && GetParent() )
{
// need to force the frame to appear in the taskbar
*exflags |= WS_EX_APPWINDOW;
}
+#endif
//else: nothing to do [here]
}
#endif // !Win16
bool wxTopLevelWindowMSW::IsMaximized() const
{
+#ifdef __WXWINCE__
+ return FALSE;
+#else
return ::IsZoomed(GetHwnd()) != 0;
+#endif
}
void wxTopLevelWindowMSW::Iconize(bool iconize)
bool wxTopLevelWindowMSW::IsIconized() const
{
+#ifdef __WXWINCE__
+ return FALSE;
+#else
// also update the current state
((wxTopLevelWindowMSW *)this)->m_iconized = ::IsIconic(GetHwnd()) != 0;
return m_iconized;
+#endif
}
void wxTopLevelWindowMSW::Restore()
LONG offFlags = 0;
if (style & wxFULLSCREEN_NOBORDER)
- offFlags |= WS_BORDER | WS_THICKFRAME;
+ {
+ offFlags |= WS_BORDER;
+#ifndef __WXWINCE__
+ offFlags |= WS_THICKFRAME;
+#endif
+ }
if (style & wxFULLSCREEN_NOCAPTION)
offFlags |= WS_CAPTION | WS_SYSMENU;
else // fall back to the main desktop
#else // wxUSE_DISPLAY
{
+ // FIXME: implement for WinCE
+#ifndef __WXWINCE__
// resize to the size of the desktop
wxCopyRECTToRect(wxGetWindowRect(::GetDesktopWindow()), rect);
+#endif
}
#endif // wxUSE_DISPLAY
bool wxTopLevelWindowMSW::EnableCloseButton(bool enable)
{
-#ifndef __WXMICROWIN__
+#if !defined(__WXMICROWIN__)
// get system (a.k.a. window) menu
- HMENU hmenu = ::GetSystemMenu(GetHwnd(), FALSE /* get it */);
+ HMENU hmenu = GetSystemMenu(GetHwnd(), FALSE /* get it */);
if ( !hmenu )
{
// no system menu at all -- ok if we want to remove the close button
bool wxTopLevelWindowMSW::SetShape(const wxRegion& region)
{
+#ifdef __WXWINCE__
+ return FALSE;
+#else
wxCHECK_MSG( HasFlag(wxFRAME_SHAPED), FALSE,
_T("Shaped windows must be created with the wxFRAME_SHAPED style."));
return FALSE;
}
return TRUE;
+#endif
}
// ----------------------------------------------------------------------------
#include "wx/timer.h"
-#if !defined(__GNUWIN32__) && !defined(__SALFORDC__) && !defined(__WXMICROWIN__)
+#if !defined(__GNUWIN32__) && !defined(__SALFORDC__) && !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
#include <direct.h>
#ifndef __MWERKS__
#include <lm.h>
#endif // USE_NET_API
-#if defined(__WIN32__) && !defined(__WXMICROWIN__)
+#if defined(__WIN32__) && !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
#ifndef __UNIX__
#include <io.h>
#endif
// Get hostname only (without domain name)
bool wxGetHostName(wxChar *buf, int maxSize)
{
-#if defined(__WIN32__) && !defined(__WXMICROWIN__)
+#if defined(__WXWINCE__)
+ return FALSE;
+#elif defined(__WIN32__) && !defined(__WXMICROWIN__)
DWORD nSize = maxSize;
if ( !::GetComputerName(buf, &nSize) )
{
// Get user ID e.g. jacs
bool wxGetUserId(wxChar *buf, int maxSize)
{
-#if defined(__WIN32__) && !defined(__win32s__) && !defined(__WXMICROWIN__)
+#if defined(__WXWINCE__)
+ return FALSE;
+#elif defined(__WIN32__) && !defined(__win32s__) && !defined(__WXMICROWIN__)
DWORD nSize = maxSize;
if ( ::GetUserName(buf, &nSize) == 0 )
{
// Get user name e.g. Julian Smart
bool wxGetUserName(wxChar *buf, int maxSize)
{
-#ifdef USE_NET_API
+#if defined(__WXWINCE__)
+ return FALSE;
+#elif defined(USE_NET_API)
CHAR szUserName[256];
if ( !wxGetUserId(szUserName, WXSIZEOF(szUserName)) )
return FALSE;
{
wxString& strDir = *pstr;
- #if defined(__UNIX__)
+#if defined(__UNIX__)
const wxChar *szHome = wxGetenv("HOME");
if ( szHome == NULL ) {
// we're homeless...
cygwin_conv_to_full_win32_path(strDir, windowsPath);
strDir = windowsPath;
#endif
- #else // Windows
+#elif defined(__WXWINCE__)
+ // Nothing
+#else
#ifdef __WIN32__
strDir.clear();
// extract the dir name
wxSplitPath(strPath, &strDir, NULL, NULL);
- #endif // UNIX/Win
+#endif // UNIX/Win
return strDir.c_str();
}
bool wxGetDiskSpace(const wxString& path, wxLongLong *pTotal, wxLongLong *pFree)
{
+#ifdef __WXWINCE__
+ return FALSE;
+#else
if ( path.empty() )
return FALSE;
}
return TRUE;
+#endif
+ // __WXWINCE__
}
// ----------------------------------------------------------------------------
bool wxGetEnv(const wxString& var, wxString *value)
{
-#ifdef __WIN16__
+#ifdef __WXWINCE__
+ return FALSE;
+#elif defined(__WIN16__)
const wxChar* ret = wxGetenv(var);
if ( !ret )
return FALSE;
{
// some compilers have putenv() or _putenv() or _wputenv() but it's better
// to always use Win32 function directly instead of dealing with them
-#if defined(__WIN32__)
+#if defined(__WIN32__) && !defined(__WXWINCE__)
if ( !::SetEnvironmentVariable(var, value) )
{
wxLogLastError(_T("SetEnvironmentVariable"));
// Execute a program in an Interactive Shell
bool wxShell(const wxString& command)
{
+#ifdef __WXWINCE__
+ return FALSE;
+#else
wxChar *shell = wxGetenv(wxT("COMSPEC"));
if ( !shell )
shell = (wxChar*) wxT("\\COMMAND.COM");
}
return wxExecute(cmd, wxEXEC_SYNC) == 0;
+#endif
}
// Shutdown or reboot the PC
bool wxShutdown(wxShutdownFlags wFlags)
{
-#ifdef __WIN32__
+#ifdef __WXWINCE__
+ return FALSE;
+#elif defined(__WIN32__)
bool bOK = TRUE;
if ( wxGetOsVersion(NULL, NULL) == wxWINDOWS_NT ) // if is NT or 2K
#include <ctype.h>
-#if !defined(__GNUWIN32__) && !defined(__SALFORDC__) && !defined(__WXMICROWIN__)
+#if !defined(__GNUWIN32__) && !defined(__SALFORDC__) && !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
#include <direct.h>
#ifndef __MWERKS__
#include <dos.h>
#include <sys/stat.h>
#endif
-#if defined(__WIN32__) && !defined(__WXMICROWIN__)
+#if defined(__WIN32__) && !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
#ifndef __UNIX__
#include <io.h>
#endif
bool state; // set to FALSE when the process finishes
};
-#if defined(__WIN32__) && wxUSE_STREAMS
+#if defined(__WIN32__) && wxUSE_STREAMS && !defined(__WXWINCE__)
// ----------------------------------------------------------------------------
// wxPipeStreams
// implementation of IO redirection support classes
// ============================================================================
-#if wxUSE_STREAMS
+#if wxUSE_STREAMS && !defined(__WXWINCE__)
// ----------------------------------------------------------------------------
// wxPipeInputStreams
// the IO redirection is only supported with wxUSE_STREAMS
BOOL redirect = FALSE;
-#if wxUSE_STREAMS
+#if wxUSE_STREAMS && !defined(__WXWINCE__)
wxPipe pipeIn, pipeOut, pipeErr;
// we'll save here the copy of pipeIn[Write]
wxZeroMemory(si);
si.cb = sizeof(si);
-#if wxUSE_STREAMS
+#if wxUSE_STREAMS && !defined(__WXWINCE__)
if ( redirect )
{
si.dwFlags = STARTF_USESTDHANDLES;
#endif // wxUSE_STREAMS
PROCESS_INFORMATION pi;
- DWORD dwFlags = CREATE_DEFAULT_ERROR_MODE | CREATE_SUSPENDED;
+ DWORD dwFlags = CREATE_SUSPENDED;
+#ifndef __WXWINCE__
+ dwFlags |= CREATE_DEFAULT_ERROR_MODE ;
+#endif
bool ok = ::CreateProcess
(
&pi // process info
) != 0;
-#if wxUSE_STREAMS
+#if wxUSE_STREAMS && !defined(__WXWINCE__)
// we can close the pipe ends used by child anyhow
if ( redirect )
{
if ( !ok )
{
-#if wxUSE_STREAMS
+#if wxUSE_STREAMS && !defined(__WXWINCE__)
// close the other handles too
if ( redirect )
{
return flags & wxEXEC_SYNC ? -1 : 0;
}
-#if wxUSE_STREAMS
+#if wxUSE_STREAMS && !defined(__WXWINCE__)
// the input buffer bufOut is connected to stdout, this is why it is
// called bufOut and not bufIn
wxStreamTempInputBuffer bufOut,
// create a hidden window to receive notification about process
// termination
+#ifdef __WXWINCE__
+ HWND hwnd = ::CreateWindow(gs_classForHiddenWindow, NULL,
+ WS_OVERLAPPED,
+ 0, 0, 0, 0, NULL,
+ (HMENU)NULL, wxGetInstance(), 0);
+#else
HWND hwnd = ::CreateWindow(gs_classForHiddenWindow, NULL,
WS_OVERLAPPEDWINDOW,
0, 0, 0, 0, NULL,
(HMENU)NULL, wxGetInstance(), 0);
+#endif
wxASSERT_MSG( hwnd, wxT("can't create a hidden window for wxExecute") );
// Alloc data
::CloseHandle(hThread);
-#if wxUSE_IPC
+#if wxUSE_IPC && !defined(__WXWINCE__)
// second part of DDE hack: now establish the DDE conversation with the
// just launched process
if ( !ddeServer.empty() )
// wait until the child process terminates
while ( data->state )
{
-#if wxUSE_STREAMS
+#if wxUSE_STREAMS && !defined(__WXWINCE__)
bufOut.Update();
bufErr.Update();
#endif // wxUSE_STREAMS
*y /= (iHeightMM * 100);
}
+void wxDrawLine(HDC hdc, int x1, int y1, int x2, int y2)
+{
+#ifdef __WXWINCE__
+ POINT points[2];
+ points[0].x = x1;
+ points[0].y = y1;
+ points[1].x = x2;
+ points[1].y = y2;
+ Polyline(hdc, points, 2);
+#else
+ MoveToEx(hdc, x1, y1, NULL); LineTo((HDC) hdc, x2, y2);
+#endif
+}
+
m_waveLength = (int) fileWave.Length();
- m_waveData = (wxByte*)::GlobalLock(::GlobalAlloc(GMEM_MOVEABLE | GMEM_SHARE, m_waveLength));
+ m_waveData = (wxByte*)GlobalLock(GlobalAlloc(GMEM_MOVEABLE | GMEM_SHARE, m_waveLength));
if (!m_waveData)
return FALSE;
Free();
m_isResource = FALSE;
m_waveLength=size;
- m_waveData = (wxByte*)::GlobalLock(::GlobalAlloc(GMEM_MOVEABLE | GMEM_SHARE, m_waveLength));
+ m_waveData = (wxByte*)GlobalLock(GlobalAlloc(GMEM_MOVEABLE | GMEM_SHARE, m_waveLength));
if (!m_waveData)
return FALSE;
{
if (m_waveData)
{
-#ifdef __WIN32__
- HGLOBAL waveData = ::GlobalHandle(m_waveData);
+#ifdef __WXWINCE__
+ HGLOBAL waveData = (HGLOBAL) m_waveData;
+#elif defined(__WIN32__)
+ HGLOBAL waveData = GlobalHandle(m_waveData);
#else
HGLOBAL waveData = GlobalPtrHandle(m_waveData);
#endif
if (waveData)
{
- if (m_isResource)
+#ifndef __WXWINCE__
+ if (m_isResource)
::FreeResource(waveData);
else
+#endif
{
- ::GlobalUnlock(waveData);
- ::GlobalFree(waveData);
+ GlobalUnlock(waveData);
+ GlobalFree(waveData);
}
m_waveData = NULL;
// Hint: use GetSystemTime()
-struct tm * localtime(const time_t *)
+struct tm * __cdecl localtime(const time_t *)
{
// TODO
return NULL;
#endif
}
-time_t time(time_t *)
+time_t __cdecl time(time_t *)
{
// TODO
return 0;
}
-size_t wcsftime(wchar_t *, size_t, const wchar_t *,
+size_t __cdecl wcsftime(wchar_t *, size_t, const wchar_t *,
const struct tm *)
{
// TODO
return 0;
}
-time_t mktime(struct tm *)
+time_t __cdecl mktime(struct tm *)
{
// TODO
return 0;
}
-struct tm * gmtime(const time_t *)
+struct tm * __cdecl gmtime(const time_t *)
{
// TODO
return NULL;
return ::GetScrollPosWX(hWnd, wOrient);
#else
SCROLLINFO scrollInfo;
+ scrollInfo.cbSize = sizeof(SCROLLINFO);
scrollInfo.fMask = SIF_POS;
if ( !::GetScrollInfo(hWnd,
wOrient,