// event tables
// ---------------------------------------------------------------------------
-#if !USE_SHARED_LIBRARY
IMPLEMENT_DYNAMIC_CLASS(wxWindow, wxWindowBase)
-#endif
BEGIN_EVENT_TABLE(wxWindow, wxWindowBase)
EVT_ERASE_BACKGROUND(wxWindow::OnEraseBackground)
const wxString& rTitle
)
{
- ::WinSetWindowText(GetHwnd(), title.c_str());
+ ::WinSetWindowText(GetHwnd(), rTitle.c_str());
}
wxString wxWindow::GetTitle() const
void wxWindow::CaptureMouse()
{
- // TODO:
+ HWND hWnd = GetHwnd();
+
+ if (hWnd && !m_bWinCaptured)
+ {
+ ::WinSetCapture(HWND_DESKTOP, hWnd);
+ m_bWinCaptured = TRUE;
+ }
}
void wxWindow::ReleaseMouse()
{
- // TODO:
+ if ( m_bWinCaptured )
+ {
+ ::WinSetCapture(HWND_DESKTOP, NULLHANDLE);
+ m_bWinCaptured = FALSE;
+ }
}
-bool wxWindow::SetFont(const wxFont& f)
+bool wxWindow::SetFont(
+ const wxFont& rFont
+)
{
- // TODO:
+ if (!wxWindowBase::SetFont(rFont))
+ {
+ // nothing to do
+ return(FALSE);
+ }
+
+ HWND hWnd = GetHwnd();
+
+ if (hWnd != 0)
+ {
+ wxChar zFont[128];
+
+ sprintf(zFont, "%d.%s", rFont.GetPointSize(), rFont.GetFaceName().c_str());
+ return(::WinSetPresParam(hWnd, PP_FONTNAMESIZE, strlen(zFont), (PVOID)zFont));
+ }
return(TRUE);
}
-bool wxWindow::SetCursor(const wxCursor& cursor) // check if base implementation is OK
+bool wxWindow::SetCursor(
+ const wxCursor& rCursor
+) // check if base implementation is OK
{
- // TODO:
- return(TRUE);
+ if ( !wxWindowBase::SetCursor(rCursor))
+ {
+ // no change
+ return FALSE;
+ }
+
+ wxASSERT_MSG( m_cursor.Ok(),
+ wxT("cursor must be valid after call to the base version"));
+
+ HWND hWnd = GetHwnd();
+ POINTL vPoint;
+ RECTL vRect;
+ HPS hPS;
+ HRGN hRGN;
+
+ hPS = ::WinGetPS(hWnd);
+
+ ::WinQueryPointerPos(HWND_DESKTOP, &vPoint);
+ ::WinQueryWindowRect(hWnd, &vRect);
+
+ hRGN = ::GpiCreateRegion(hPS, 1L, &vRect);
+
+ if ((::GpiPtInRegion(hPS, hRGN, &vPoint) == PRGN_INSIDE) && !wxIsBusy())
+ {
+// ::SetCursor((HCURSOR)m_cursor.GetHCURSOR());
+ }
+ return TRUE;
}
void wxWindow::WarpPointer(int x_pos, int y_pos)
WXDWORD wxWindow::Determine3DEffects(WXDWORD defaultBorderStyle,
bool *want3D) const
{
- DWORD exStyle; // remove after implementation doe
+ DWORD exStyle = 0L; // remove after implementation doe
/* TODO: this ought to be fun
*
// If matches certain criteria, then assume no 3D effects
// TODO:
}
-// for a generic window there is no natural best size - just use the current one
-wxSize wxWindow::DoGetBestSize()
-{
- return GetSize();
-}
-
void wxWindow::DoSetClientSize(int width, int height)
{
// TODO:
wxWindow *wxWndHook = NULL;
// Main window proc
-MRESULT wxWndProc(HWND hWnd, UINT message, MPARAM wParam, MPARAM lParam)
+MRESULT wxWndProc(HWND hWnd, ULONG message, MPARAM wParam, MPARAM lParam)
{
// trace all messages - useful for the debugging
#ifdef __WXDEBUG__