LRESULT CTangramTabCtrlWnd::OnCreatePage(WPARAM wParam, LPARAM lParam)
{
	HWND hPageWnd = (HWND)wParam;
	//CTabPageWnd* pWnd = new CTabPageWnd();
	//pWnd->SubclassWindow(hPageWnd);
	CWnd* pWnd = FromHandlePermanent(hPageWnd);
	if (pWnd == NULL)
	{
		pWnd = new CTabPageWnd();
		pWnd->SubclassWindow(hPageWnd);
	}
	AddTab(pWnd, (LPCTSTR)lParam, (UINT)GetTabsNum()-1);
	//AddTab(pView,LPCTSTR(pObj->m_strCaption),0);
	//if(nIndex==m_pTangramXMLObj->m_nActivePage)
	//{
	//	SetFocusedItem(pItem);
	//}
	//AddPage(pWnd,(LPCTSTR)lParam);
	//SendMessage(WM_TGM_SETACTIVEPAGE);

	InvalidateRect(NULL);
	//if(pWnd)
	//{
	//	pWnd->UnsubclassWindow();
	//	delete pWnd;
	//}
	return 0;
}
LRESULT CResizableSheetEx::OnResizeSupport(WPARAM wParam, LPARAM lParam)
{
	switch (wParam)
	{
	case RSZSUP_SHEETPAGEEXHACK:
		{
			// a window object must be still associated to the page handle
			// but MFC subclassing has been turned off to allow the system
			// to subclass it first, so we can catch all the messages
			CWnd* pWnd = CWnd::FromHandlePermanent((HWND)lParam);
			if (pWnd == NULL)
				return 0;

			// suclass the window again and refresh page and sheet
			pWnd->SubclassWindow(pWnd->Detach());
			RefreshLayout();
			pWnd->SendMessage(WM_SIZE);
			Invalidate();
			UnlockWindowUpdate();

			if (pWnd->IsWindowVisible())
			{
				// send lost PSN_SETACTIVE notification message
				CPropertyPage* pPage = DYNAMIC_DOWNCAST(CPropertyPage, pWnd);
				if (pPage != NULL)
					SetActivePage(pPage);
			}
		}
		break;

	default:
		return FALSE;
	}
	return TRUE;
}
Exemple #3
0
void AFXAPI DDX_Control(CDataExchange* pDX, int nIDC, CWnd& rControl)
{
	if (rControl.m_hWnd == NULL)    // not subclassed yet
	{
		ASSERT(!pDX->m_bSaveAndValidate);

		HWND hWndCtrl = pDX->PrepareCtrl(nIDC);

		if (!rControl.SubclassWindow(hWndCtrl))
		{
			ASSERT(FALSE);      // possibly trying to subclass twice?
			AfxThrowNotSupportedException();
		}
#ifndef _AFX_NO_OCC_SUPPORT
		else
		{
			// If the control has reparented itself (e.g., invisible control),
			// make sure that the CWnd gets properly wired to its control site.
			if (pDX->m_pDlgWnd->m_hWnd != ::GetParent(rControl.m_hWnd))
				rControl.AttachControlSite(pDX->m_pDlgWnd);
		}
#endif //!_AFX_NO_OCC_SUPPORT

	}
}
Exemple #4
0
BOOL CMFCControlContainer::SubclassDlgControls()
{
	if (m_pWnd->GetSafeHwnd() != NULL)
	{
		// Subclass Feature Pack controls:
		CWnd* pWndChild = m_pWnd->GetWindow(GW_CHILD);
		while (pWndChild != NULL)
		{
			ASSERT_VALID(pWndChild);

			TCHAR lpszClassName [MAX_CLASS_NAME + 1];

			::GetClassName(pWndChild->GetSafeHwnd(), lpszClassName, MAX_CLASS_NAME);
			CWnd* pWndSubclassedCtrl = CreateDlgControl(lpszClassName);

			if (pWndSubclassedCtrl != NULL)
			{
				m_arSubclassedCtrls.Add((CObject*)pWndSubclassedCtrl);
				pWndSubclassedCtrl->SubclassWindow(pWndChild->GetSafeHwnd());
			}

			pWndChild = pWndChild->GetNextWindow();
		}

		return TRUE;
	}

	return FALSE;
}
Exemple #5
0
BOOL CMFCControlContainer::ReSubclassControl(HWND hWndCtrl, WORD nIDC, CWnd& control)
{
	if (hWndCtrl == NULL)
	{
		return FALSE;
	}

	int nIndex = -1;
	for (int i = 0; i < m_arSubclassedCtrls.GetCount(); i++)
	{
		CWnd* pWnd = (CWnd*)m_arSubclassedCtrls [i];
		if (pWnd->GetSafeHwnd() == hWndCtrl)
		{
			nIndex = i;
			break;
		}
	}

	if (nIndex != -1)
	{
		CWnd* pWnd = DYNAMIC_DOWNCAST(CWnd, m_arSubclassedCtrls [nIndex]);
		
		if (pWnd->GetSafeHwnd() != NULL)
		{
			ASSERT_VALID(pWnd);

			// get init state
			DWORD dwSize = 0;
			BYTE* pbInitData = NULL;
			GetControlData(nIDC, dwSize, pbInitData);

			// Free old subclassed control:
			m_arSubclassedCtrls [nIndex] = NULL;

			// unsubclass
			PreUnsubclassControl(pWnd);
			VERIFY(pWnd->UnsubclassWindow() == hWndCtrl);
			// destroy
			delete pWnd;

			// subclass
			if (!control.SubclassWindow(hWndCtrl))
			{
				ASSERT(FALSE);      // possibly trying to subclass twice?
				AfxThrowNotSupportedException();
			}

			// set init state
			if (dwSize > 0)
			{
				control.SendMessage(WM_MFC_INITCTRL, (WPARAM)dwSize, (LPARAM)pbInitData);
			}

			return TRUE;
		}
	}

	return FALSE;
}
Exemple #6
0
BOOL CServerSocet::LinkWindowSocket(HWND m_hWnd,CString* sMessage)
{
	CString S;
	if(!bCreateSocket) return FALSE;
	
	CWnd win;
	win.SubclassWindow(m_hWnd);
	m_hWnd = GetConsoleWindow();
	SocWin = new(CSocketWindow);
	S.Format(_T("Создание окна"));
	if(sMessage != NULL)
		*sMessage = *sMessage + S;
	if(!SocWin->Create(101))
	{
		if(sMessage != NULL)
		{
			*sMessage = *sMessage + _T("\tневыполненно\n");
			*sMessage = *sMessage + MyGetLastError();
		}
		return FALSE;
	}	
	SocWin->SetFunction(this);
	if(sMessage != NULL)
		*sMessage = *sMessage + _T("\tвыполненно\n");

	int Errors;
	
	S.Format(_T("Связываем сокет с окном "));
	if(sMessage != NULL)
		*sMessage = *sMessage + S;
	Errors=WSAAsyncSelect(sokServerSocket,SocWin->m_hWnd,WM_SERVER_ACCEPT,FD_ACCEPT|FD_READ);
	if (Errors == SOCKET_ERROR)
	{
		if(sMessage != NULL)
		{
			*sMessage = *sMessage + _T("\tневыполненно\n");
			*sMessage = *sMessage + MyGetLastError();
		}
		return FALSE;
	}
	if(sMessage != NULL)
		*sMessage = *sMessage + _T("\tвыполненно\n");	
	
	*sMessage = *sMessage + _T("Установка HOOK");	
	if(sMessage != NULL)
		*sMessage = *sMessage + _T("\tвыполненно\n");
	//SendMessage(SocWin->m_hWnd ,WM_SERVER_ACCEPT,0,0);	
	//SocWin->ShowWindow(1);
	return TRUE;
}
BOOL CShortcutManager::HookWindow(HWND hWnd)
{
	if (hWnd) 
	{
		ASSERT(m_hWndHooked == NULL);

		if (m_hWndHooked)
		{
			return FALSE;
		}

		ASSERT(::IsWindow(hWnd));

		if (!::IsWindow(hWnd))
		{
			return FALSE;
		}

		m_hWndHooked = hWnd;
		m_bPreMFCSubclass = (CWnd::FromHandlePermanent(hWnd) == NULL);
	} 
	else 
	{
		// Unhook the window
		if (m_hWndHooked) 
		{
			CWnd* pPerm = CWnd::FromHandlePermanent(m_hWndHooked);

			if (m_bPreMFCSubclass && pPerm)
			{
				pPerm->UnsubclassWindow();
			}

			if (m_bPreMFCSubclass && pPerm)
			{
				pPerm->SubclassWindow(m_hWndHooked);
			}
		}

		m_hWndHooked = NULL;
		m_bPreMFCSubclass = FALSE;
	}

	return TRUE;
}
void CKofDlgImpl::EnableVisualManagerStyle( BOOL bEnable, BOOL bNCArea /*= FALSE*/, const CList<UINT,UINT>* plstNonSubclassedItems /*= NULL*/ )
{
	bEnable;
	m_bVisualManagerNCArea = bNCArea;
	plstNonSubclassedItems;

	if (m_Dlg.GetSafeHwnd () == NULL)
	{
		return;
	}

	CWnd* pWndChild =  m_Dlg.GetWindow(GW_CHILD);

	while (pWndChild != NULL)
	{
		ASSERT_VALID (pWndChild);

		if (plstNonSubclassedItems != NULL && plstNonSubclassedItems->Find (pWndChild->GetDlgCtrlID ()) != NULL)
		{
			pWndChild = pWndChild->GetNextWindow ();
			continue;
		}

		if (bEnable &&
			CWnd::FromHandlePermanent (pWndChild->GetSafeHwnd ()) == NULL)
		{
#define MAX_CLASS_NAME		255
#define STATIC_CLASS		_T("Static")
#define BUTTON_CLASS		_T("Button")
#define EDIT_CLASS			_T("Edit")
#define	COMBOBOX_CLASS		_T("ComboBox")
#define SCROLLBAR_CLASS		_T("ScrollBar")

			TCHAR lpszClassName [MAX_CLASS_NAME + 1];

			::GetClassName (pWndChild->GetSafeHwnd (), lpszClassName, MAX_CLASS_NAME);
			CString strClass = lpszClassName;

			CWnd* pWndSubclassedCtrl = NULL;

			if (strClass == STATIC_CLASS)
			{
				pWndSubclassedCtrl = new CKofStatic;
			}
			else if (strClass == BUTTON_CLASS)
			{
				if ((pWndChild->GetStyle () & 0xF) == BS_GROUPBOX)
				{
					pWndSubclassedCtrl = new CKofGroup;
				}
				else
				{
					pWndSubclassedCtrl = new CKofMFCButton;
				}
			}
			else if (strClass == PROGRESS_CLASS)
			{
				pWndSubclassedCtrl = new CKofProgressCtrl;
			}
			else if (strClass == TRACKBAR_CLASS)
			{
				//pWndSubclassedCtrl = new CSliderCtrl;
			}
			else if (strClass == EDIT_CLASS)
			{
				pWndSubclassedCtrl = new CKofMFCEdit;
			}
			else if (strClass == COMBOBOX_CLASS)
			{
				pWndSubclassedCtrl = new CKofComboBox;
			}
			else if (strClass == SCROLLBAR_CLASS)
			{
				//pWndSubclassedCtrl = new CScrollBar;
			}
			else if (strClass == UPDOWN_CLASS)
			{
				pWndSubclassedCtrl = new CKofMFCSpinButtonCtrl;
			}
			else if (strClass == RICHEDIT_CLASS)
			{
				pWndSubclassedCtrl = new CKofRichEditCtrl;
			}

			if (pWndSubclassedCtrl != NULL)
			{
				m_arSubclassedCtrls.Add (pWndSubclassedCtrl);
				pWndSubclassedCtrl->SubclassWindow (pWndChild->GetSafeHwnd ());
			}
		}
		pWndChild = pWndChild->GetNextWindow ();
	}
	OnChangeVisualManager ();

	if (m_Dlg.IsWindowVisible ())
	{
		m_Dlg.RedrawWindow (NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW | RDW_ERASE | RDW_ALLCHILDREN);
	}
}
//*************************************************************************************
void CBCGPDlgImpl::EnableVisualManagerStyle (BOOL bEnable, BOOL bNCArea, const CList<UINT,UINT>* plstNonSubclassedItems)
{
	m_bVisualManagerStyle = bEnable;
	m_bVisualManagerNCArea = bNCArea;

	if (m_Dlg.GetSafeHwnd () == NULL)
	{
		return;
	}

	if (m_lstNonSubclassedItems.IsEmpty() && plstNonSubclassedItems != NULL)
	{
		m_lstNonSubclassedItems.AddTail((CList<UINT,UINT>*)plstNonSubclassedItems);
	}

	CWnd* pWndChild = m_Dlg.GetWindow (GW_CHILD);

	while (pWndChild != NULL)
	{
		ASSERT_VALID (pWndChild);

		if (plstNonSubclassedItems != NULL && plstNonSubclassedItems->Find (pWndChild->GetDlgCtrlID ()) != NULL)
		{
			pWndChild = pWndChild->GetNextWindow ();
			continue;
		}

		if (m_lstNonSubclassedItems.Find (pWndChild->GetDlgCtrlID ()) != NULL)
		{
			pWndChild = pWndChild->GetNextWindow ();
			continue;
		}

		CBCGPButton* pButton = DYNAMIC_DOWNCAST(CBCGPButton, pWndChild);
		if (pButton != NULL)
		{
			ASSERT_VALID (pButton);
			pButton->m_bVisualManagerStyle = m_bVisualManagerStyle;
		}

		if (m_bVisualManagerStyle &&
			CWnd::FromHandlePermanent (pWndChild->GetSafeHwnd ()) == NULL)
		{
			#define MAX_CLASS_NAME		255
			#define STATIC_CLASS		_T("Static")
			#define BUTTON_CLASS		_T("Button")
			#define EDIT_CLASS			_T("Edit")
			#define	COMBOBOX_CLASS		_T("ComboBox")
			#define SCROLLBAR_CLASS		_T("ScrollBar")

			TCHAR lpszClassName [MAX_CLASS_NAME + 1];

			::GetClassName (pWndChild->GetSafeHwnd (), lpszClassName, MAX_CLASS_NAME);
			CString strClass = lpszClassName;

			CWnd* pWndSubclassedCtrl = NULL;

			if (strClass == STATIC_CLASS)
			{
				pWndSubclassedCtrl = new CBCGPStatic;
			}
			else if (strClass == BUTTON_CLASS)
			{
				if ((pWndChild->GetStyle () & 0xF) == BS_GROUPBOX)
				{
					pWndSubclassedCtrl = new CBCGPGroup;
				}
				else
				{
					pWndSubclassedCtrl = new CBCGPButton;
				}
			}
			else if (strClass == PROGRESS_CLASS)
			{
				pWndSubclassedCtrl = new CBCGPProgressCtrl;
			}
			else if (strClass == TRACKBAR_CLASS)
			{
				pWndSubclassedCtrl = new CBCGPSliderCtrl;
			}
			else if (strClass == EDIT_CLASS)
			{
				pWndSubclassedCtrl = new CBCGPEdit;
			}
			else if (strClass == COMBOBOX_CLASS)
			{
				pWndSubclassedCtrl = new CBCGPComboBox;
			}
			else if (strClass == SCROLLBAR_CLASS)
			{
				pWndSubclassedCtrl = new CBCGPScrollBar;
			}
			else if (strClass == UPDOWN_CLASS)
			{
				pWndSubclassedCtrl = new CBCGPSpinButtonCtrl;
			}

			if (pWndSubclassedCtrl != NULL)
			{
				m_arSubclassedCtrls.Add (pWndSubclassedCtrl);
				pWndSubclassedCtrl->SubclassWindow (pWndChild->GetSafeHwnd ());
			}
		}

		pWndChild->SendMessage (BCGM_ONSETCONTROLVMMODE, (WPARAM) bEnable);
		pWndChild = pWndChild->GetNextWindow ();
	}

	OnChangeVisualManager ();

	if (m_Dlg.IsWindowVisible ())
	{
		m_Dlg.RedrawWindow (NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW | RDW_ERASE | RDW_ALLCHILDREN);
	}
}