Patch level : 10.0
Files correlati : xvaga.dll Ricompilazione Demo : [ ] Commento : Aggiunto supporto per bottone di chiusura utile nelle finestre con progress indicator git-svn-id: svn://10.65.10.50/trunk@17343 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
68569f358f
commit
38d9c163e1
@ -199,16 +199,31 @@ void* OsWin32_GetPrinterInfo(int& size, const char* printer)
|
||||
return pdm;
|
||||
}
|
||||
|
||||
void OsWin32_SetCaptionStyle(WXHWND handle, bool set)
|
||||
void OsWin32_SetCaptionStyle(WXHWND handle, long style)
|
||||
{
|
||||
HWND hwnd = (HWND)handle;
|
||||
DWORD s = ::GetWindowLong(hwnd, GWL_STYLE);
|
||||
if (set)
|
||||
HWND hWnd = (HWND)handle;
|
||||
LONG s = ::GetWindowLong(hWnd, GWL_STYLE);
|
||||
|
||||
if (style & wxSYSTEM_MENU)
|
||||
s |= WS_CAPTION;
|
||||
else
|
||||
s &= ~WS_CAPTION;
|
||||
|
||||
if (style & wxCLOSE_BOX)
|
||||
s |= WS_SYSMENU;
|
||||
else
|
||||
s &= ~WS_SYSMENU;
|
||||
|
||||
s |= WS_CLIPSIBLINGS; // Forzatura necessaria da wx261
|
||||
::SetWindowLong(hwnd, GWL_STYLE, s);
|
||||
::SetWindowLong(hWnd, GWL_STYLE, s);
|
||||
|
||||
if (style & wxCLOSE_BOX)
|
||||
{
|
||||
HMENU hMenu = ::GetSystemMenu(hWnd, FALSE);
|
||||
::EnableMenuItem(hMenu, SC_CLOSE, MF_BYCOMMAND | MF_ENABLED);
|
||||
HICON hIcon = ::ExtractIcon(NULL, "res/campo.ico", 0);
|
||||
::SendMessage(hWnd, WM_SETICON, ICON_SMALL, (LPARAM)hIcon);
|
||||
}
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
|
@ -12,7 +12,7 @@ unsigned int OsWin32_LoadIcon(const char* file);
|
||||
|
||||
int OsWin32_EnumerateFamilies(WXHDC hDC, char** families, int max_count);
|
||||
int OsWin32_EnumerateSizes(WXHDC hDC, const char* name, long* sizes, short* scalable, int max_count);
|
||||
void OsWin32_SetCaptionStyle(WXHWND handle, bool set);
|
||||
void OsWin32_SetCaptionStyle(WXHWND handle, long style);
|
||||
void* OsWin32_GetPrinterInfo(int& size, const char* printer);
|
||||
|
||||
void OsWin32_PlaceProcessInWindow(unsigned int instance, const char* name, unsigned int parent);
|
||||
|
@ -4158,7 +4158,7 @@ RCT* xvt_vobj_get_outer_rect(WINDOW win, RCT *rctp)
|
||||
return rctp;
|
||||
}
|
||||
|
||||
XVT_PALETTE xvt_vobj_get_palet(WINDOW win)
|
||||
XVT_PALETTE xvt_vobj_get_palet(WINDOW WXUNUSED(win))
|
||||
{ return NULL; }
|
||||
|
||||
WINDOW xvt_vobj_get_parent(WINDOW win)
|
||||
@ -4208,9 +4208,9 @@ BOOLEAN xvt_vobj_is_focusable(WINDOW win)
|
||||
|
||||
void xvt_vobj_maximize(WINDOW win)
|
||||
{
|
||||
wxFrame* pMain = wxDynamicCast((wxObject*)win, wxFrame);
|
||||
if (pMain != NULL)
|
||||
pMain->Maximize();
|
||||
XVT_ASSERT(win != NULL_WIN && _task_win != NULL);
|
||||
if (win == TASK_WIN)
|
||||
_task_win->Maximize();
|
||||
else
|
||||
{
|
||||
CAST_WIN(win, w);
|
||||
@ -4312,7 +4312,7 @@ WINDOW xvt_win_create(WIN_TYPE wtype, const RCT* rct_p, const char* title, int m
|
||||
const wxRect rct = NormalizeRCT(rct_p);
|
||||
const wxString caption = title;
|
||||
|
||||
long style = wxCLIP_CHILDREN | wxCLIP_SIBLINGS | wxWANTS_CHARS;
|
||||
long style = wxCLIP_SIBLINGS | wxCLIP_CHILDREN | wxWANTS_CHARS;
|
||||
if (win_flags & WSF_VSCROLL)
|
||||
style |= wxVSCROLL;
|
||||
if (win_flags & WSF_HSCROLL)
|
||||
@ -4324,6 +4324,8 @@ WINDOW xvt_win_create(WIN_TYPE wtype, const RCT* rct_p, const char* title, int m
|
||||
case W_DOC:
|
||||
if (!caption.IsEmpty())
|
||||
style |= wxSYSTEM_MENU;
|
||||
if (win_flags & WSF_CLOSE)
|
||||
style |= wxSYSTEM_MENU | wxCLOSE_BOX;
|
||||
break;
|
||||
case W_PLAIN:
|
||||
// style |= wxBORDER; // Non attivare MAI il bordo!
|
||||
@ -4342,9 +4344,9 @@ WINDOW xvt_win_create(WIN_TYPE wtype, const RCT* rct_p, const char* title, int m
|
||||
w->SetBackgroundStyle(wxBG_STYLE_CUSTOM); // Lo sfondo viene disegnato nella OnPaint
|
||||
|
||||
#ifdef WIN32
|
||||
OsWin32_SetCaptionStyle(w->GetHWND(), wtype == W_DOC);
|
||||
OsWin32_SetCaptionStyle(w->GetHWND(), style);
|
||||
#else
|
||||
OsLinux_SetCaptionStyle((wxWindow*)w, style);
|
||||
OsLinux_SetCaptionStyle(w, style);
|
||||
#endif
|
||||
|
||||
if (menu_rid > 0 && menu_rid != 8000) // 8000 = NULL_MENU_RID
|
||||
|
@ -468,13 +468,33 @@ bool TDCMapper::HasValidDC(WINDOW owner) const
|
||||
|
||||
IMPLEMENT_DYNAMIC_CLASS(TwxWindowBase, wxWindow)
|
||||
|
||||
#ifdef WIN32
|
||||
WXLRESULT TwxWindowBase::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
|
||||
{
|
||||
WXLRESULT rc = 0;
|
||||
bool processed = false;
|
||||
|
||||
switch (nMsg)
|
||||
{
|
||||
case WM_CLOSE:
|
||||
processed = !Close();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if ( !processed )
|
||||
rc = wxWindow::MSWWindowProc(nMsg, wParam, lParam);
|
||||
|
||||
return rc;
|
||||
}
|
||||
#endif
|
||||
|
||||
bool TwxWindowBase::CreateBase(wxWindow *parent, wxWindowID id, const wxString &title,
|
||||
const wxPoint &pos, const wxSize &size, long style)
|
||||
{
|
||||
// Evita inutili sfarfallamenti in quanto wxWidgets crea le finestre visibili per default
|
||||
wxWindowBase::Show(false);
|
||||
bool ok = Create(parent, id, pos, size, style, title);
|
||||
return ok;
|
||||
wxWindowBase::Show(false); // Evita inutili sfarfallamenti
|
||||
return Create(parent, id, pos, size, style, title);
|
||||
}
|
||||
|
||||
TwxWindowBase::TwxWindowBase(wxWindow *parent, wxWindowID id, const wxString &title,
|
||||
|
@ -118,6 +118,10 @@ private:
|
||||
virtual wxString GetTitle() const { return m_strTitle; }
|
||||
#endif
|
||||
|
||||
#ifdef WIN32
|
||||
virtual WXLRESULT MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam);
|
||||
#endif
|
||||
|
||||
public:
|
||||
bool CreateBase(wxWindow *parent, wxWindowID id, const wxString &title,
|
||||
const wxPoint &pos, const wxSize &size, long style);
|
||||
@ -125,7 +129,6 @@ public:
|
||||
TwxWindowBase() { }
|
||||
TwxWindowBase(wxWindow *parent, wxWindowID id, const wxString &title,
|
||||
const wxPoint & pos, const wxSize & size, long style);
|
||||
virtual ~TwxWindowBase() { }
|
||||
DECLARE_DYNAMIC_CLASS(TwxWindowBase)
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user