Files
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

91 lines
2.0 KiB
C++

// WGroupDlg.cpp : 实现文件
//
#include "stdafx.h"
#include "CaptionButton.h"
#include "WGroupDlg.h"
#include "resource.h"
// WGroupDlg 对话框
IMPLEMENT_DYNAMIC(WGroupDlg, CModelessDialog)
BOOL g_bLockAutoSize=FALSE;
WGroupDlg::WGroupDlg(UINT idResource,CWnd* pParent /*=NULL*/)
: CModelessDialog(idResource, pParent),
m_pCapBtn1(NULL),m_pCapBtn2(NULL),m_bNeedCapBtn(FALSE)
{
}
WGroupDlg::~WGroupDlg()
{
}
BEGIN_MESSAGE_MAP(WGroupDlg, CModelessDialog)
ON_MESSAGE(WG_MES_CHILDSIZE,OnChildSize)
ON_WM_DESTROY()
END_MESSAGE_MAP()
BOOL WGroupDlg::OnInitDialog()
{
BOOL bRet=CModelessDialog::OnInitDialog();
if(m_bNeedCapBtn)
{
// AddCapBtn(m_pCapBtn1=new CCaptionButton(_T("展开全部组"),IDB_FOLD, IDB_FOLD, FALSE));
// AddCapBtn(m_pCapBtn2=new CCaptionButton(_T("折叠全部组"),IDB_UNFOLD, IDB_UNFOLD, FALSE));
}
AutoSize();
return bRet;
}
void WGroupDlg::OnDestroy()
{
if(m_pCapBtn1!=NULL)
delete m_pCapBtn1;
if(m_pCapBtn2!=NULL)
delete m_pCapBtn2;
CModelessDialog::OnDestroy();
}
LRESULT WGroupDlg::OnChildSize(WPARAM, LPARAM)
{
if(!g_bLockAutoSize)
AutoSize();
return 0;
}
void WGroupDlg::AutoSize()
{
CWnd*pWnd=GetWindow(GW_CHILD);
if(pWnd==NULL)
return;
DualList<CRect> lstRect;
CRect rect;
pWnd->GetWindowRect(rect);
lstRect.AddTail(rect);
CWnd *pFirst=pWnd;
for(pWnd=pFirst->GetNextWindow();pWnd!=NULL&&pWnd!=pFirst;pWnd=pWnd->GetNextWindow())
{
if((pWnd->GetStyle()&WS_VISIBLE)==0)//不可见窗口
continue;
pWnd->GetWindowRect(rect);
lstRect.AddTail(rect);
}
extern CRect GetTotalRect(DualList<CRect> &lstRect);
rect=GetTotalRect(lstRect);
CRect rectOld;
GetWindowRect(rectOld);
if((GetStyle()&WS_CHILD)!=0&&GetParent()!=NULL)
{
GetParent()->ScreenToClient(rect);
GetParent()->ScreenToClient(rectOld);
}
if(m_bModeless)
rectOld.bottom=rect.bottom+WG_GROUP_DIALGOG_YSPACE;
else
rectOld.bottom=rect.bottom+WG_GROUP_DIALGOG_XSPACE;
rectOld.right=rect.right+WG_GROUP_DIALGOG_XSPACE;
MoveWindow(rectOld);
}