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