gusucode.com > 仿360最新界面的源码程序 > 仿360最新界面的源码程序/仿360新版特性窗口源码/部分源码/子页面示例代码/QChildPage/ExtensionWnd.cpp
/************************************************************************ 模快名: 仿360安全卫士界面 功能: 尚未对模块功能进行描述 完成日期: 2010-10-20 作者: 杨伟峰 Yang Weifeng(Email: 11259500@qq.com) 本代码可以自由使用,但因使用本代码造成的后果,本人不承担任何责任 ************************************************************************/ #include "stdafx.h" #include "ExtensionWnd.h" CExtensionWnd::CExtensionWnd( LPCTSTR szName, LPCTSTR szIcon, LPCTSTR szCommandLine ) { #ifdef _EXPORTING AFX_MANAGE_STATE(AfxGetStaticModuleState()); #endif USES_CONVERSION; m_sName = T2W(LPTSTR(szName)); m_sIcon = T2W(LPTSTR(szIcon)); m_sCommandLine = szCommandLine; m_pPage = NULL; m_nIDTemplate = 0; } CExtensionWnd::CExtensionWnd(LPCTSTR szName, LPCTSTR szIcon, CWnd* pPage) { #ifdef _EXPORTING AFX_MANAGE_STATE(AfxGetStaticModuleState()); #endif USES_CONVERSION; m_pPage = pPage; m_sName = T2W(LPTSTR(szName)); m_sIcon = T2W(LPTSTR(szIcon)); m_nIDTemplate = 0; } CExtensionWnd::CExtensionWnd(LPCTSTR szName, LPCTSTR szIcon, CDialog* pDialog, UINT nIDTemplate) { #ifdef _EXPORTING AFX_MANAGE_STATE(AfxGetStaticModuleState()); #endif USES_CONVERSION; m_pPage = pDialog; m_sName = T2W(LPTSTR(szName)); m_sIcon = T2W(LPTSTR(szIcon)); m_nIDTemplate = nIDTemplate; } CExtensionWnd::~CExtensionWnd() { #ifdef _EXPORTING AFX_MANAGE_STATE(AfxGetStaticModuleState()); #endif if(m_pPage!= NULL) { m_pPage->DestroyWindow(); delete m_pPage; m_pPage = NULL; } } BOOL CExtensionWnd::Create(HWND hParent,LPSIZE lpSize) { #ifdef _EXPORTING AFX_MANAGE_STATE(AfxGetStaticModuleState()); #endif CRect rtClient(0,0, lpSize->cx, lpSize->cy); if(m_nIDTemplate != 0) { ((CDialog*)m_pPage)->Create(m_nIDTemplate, CWnd::FromHandle(hParent)); m_pPage->ShowWindow(SW_HIDE); m_pPage->MoveWindow(&rtClient, FALSE); } else { static int i = 5001; m_pPage->Create(NULL, NULL, WS_CHILD|WS_VISIBLE, rtClient, CWnd::FromHandle(hParent), i++); m_pPage->ShowWindow(SW_HIDE); } m_pPage->UpdateWindow(); return TRUE; } void CExtensionWnd::ReleaseWindow() { #ifdef _EXPORTING AFX_MANAGE_STATE(AfxGetStaticModuleState()); #endif if(m_pPage!= NULL) { m_pPage->DestroyWindow(); } } HWND CExtensionWnd::GetSafeHwnd() { #ifdef _EXPORTING AFX_MANAGE_STATE(AfxGetStaticModuleState()); #endif return m_pPage->GetSafeHwnd(); } BOOL CExtensionWnd::PreActive(BOOL bActive) { #ifdef _EXPORTING AFX_MANAGE_STATE(AfxGetStaticModuleState()); #endif if(m_pPage != NULL) { return TRUE; } else { USES_CONVERSION; WinExec(T2A(m_sCommandLine.GetBuffer()), SW_SHOW); return FALSE; } } BOOL CExtensionWnd::ShowWindow(BOOL bShow) { #ifdef _EXPORTING AFX_MANAGE_STATE(AfxGetStaticModuleState()); #endif if(IsWindow(m_pPage->GetSafeHwnd())) m_pPage->ShowWindow(bShow?SW_SHOW:SW_HIDE); if(bShow) { m_pPage->SetFocus(); } return TRUE; } void CExtensionWnd::Release() { #ifdef _EXPORTING AFX_MANAGE_STATE(AfxGetStaticModuleState()); #endif if(m_pPage!= NULL) { m_pPage->DestroyWindow(); delete m_pPage; m_pPage = NULL; } delete this; } void CExtensionWnd::Resize(LPSIZE lpSize) { #ifdef _EXPORTING AFX_MANAGE_STATE(AfxGetStaticModuleState()); #endif CRect rtClient(0,0, lpSize->cx, lpSize->cy); if(IsWindow(m_pPage->GetSafeHwnd())) { m_pPage->MoveWindow(&rtClient, FALSE); } } void CExtensionWnd::OnActive(BOOL bActive) { #ifdef _EXPORTING AFX_MANAGE_STATE(AfxGetStaticModuleState()); #endif if(IsWindow(m_pPage->GetSafeHwnd())) m_pPage->SendMessage(WMU_WND_ACTIVE, (WPARAM)bActive, NULL); } BOOL CExtensionWnd::QueryClose(PBOOL bContinue) { #ifdef _EXPORTING AFX_MANAGE_STATE(AfxGetStaticModuleState()); #endif if(!IsWindow(m_pPage->GetSafeHwnd())) return TRUE; BOOL bCanClose = TRUE; m_pPage->SendMessage(WMU_WND_QUERY_CLOSE, (LPARAM)&bCanClose, (WPARAM)bContinue); return bCanClose; } LPCWSTR CExtensionWnd::GetWindowName() { #ifdef _EXPORTING AFX_MANAGE_STATE(AfxGetStaticModuleState()); #endif return m_sName.GetBuffer(); } LPCWSTR CExtensionWnd::GetWindowIcon() { #ifdef _EXPORTING AFX_MANAGE_STATE(AfxGetStaticModuleState()); #endif return m_sIcon.GetBuffer(); }