⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hdrdlg.cpp

📁 《Visual C++ MFC编程实例》配套代码,如果大家正在学习此教程
💻 CPP
字号:
// HdrDlg.cpp : implementation file
//

#include "stdafx.h"
#include "Styles.h"
#include "HdrDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CHeaderDlg dialog


CHeaderDlg::CHeaderDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CHeaderDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CHeaderDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void CHeaderDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CHeaderDlg)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CHeaderDlg, CDialog)
	//{{AFX_MSG_MAP(CHeaderDlg)
	ON_WM_CREATE()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CHeaderDlg message handlers

#define NSTYLES 2
#define XSPACING 7
#define YSPACING 20

int CHeaderDlg::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CDialog::OnCreate(lpCreateStruct) == -1)
		return -1;

	UINT styles[NSTYLES]={ 
	HDS_HORZ     ,
	HDS_BUTTONS  , 
	};

	CString sStyles[NSTYLES]={ 
	"HDS_HORZ (Default)"    ,
	"HDS_BUTTONS", 
	};

// undrawn
//	HDS_HOTTRACK , 
//	HDS_HIDDEN   , 
//	HDS_DRAGDROP , 
//	HDS_FULLDRAG   

	CSize szStatic(160,40);
	CSize szHeader(400,25);
	CRect rect(9999,-YSPACING,0,0);

	m_bitmap.LoadBitmap(IDB_ONE_BITMAP);
	m_imageList.Create(IDB_COMBO_BITMAP, 15, 1, RGB(0,0,0));

	int i=0;
	while (i<NSTYLES)
	{
		rect.left=XSPACING;
		rect.top+=szHeader.cy+YSPACING;

		for (int j=0;j<1&&i<NSTYLES;j++)
		{
			CStatic *pStatic=new CStatic;
			m_staticList.AddTail(pStatic);
			CHeaderCtrl *pHeader=new CHeaderCtrl;
			m_HeaderList.AddTail(pHeader);
			rect.right=rect.left+szStatic.cx;
			rect.bottom=rect.top+szStatic.cy;
			pStatic->Create(sStyles[i],SS_RIGHT|WS_VISIBLE|WS_CHILD,rect,this);
			rect.OffsetRect(szStatic.cx+XSPACING,0);
			rect.right=rect.left+szHeader.cx;
			rect.bottom=rect.top+szHeader.cy;
			pHeader->Create(styles[i]|WS_VISIBLE|WS_CHILD, rect,this,1000+i );
			rect.OffsetRect(szHeader.cx+XSPACING,0);

			char pszHeader1[]={"Header1"};
			char pszHeader2[]={"Header2"};
			char pszHeader4[]={"Header4"};

			HD_ITEM hdi;
			hdi.mask=HDI_TEXT|HDI_WIDTH|HDI_FORMAT;
			hdi.fmt=HDF_CENTER|HDF_STRING ;
			hdi.cxy=100;
			hdi.pszText=pszHeader1;
			hdi.cchTextMax=sizeof(pszHeader1);
			pHeader->InsertItem(0,&hdi);
			hdi.pszText=pszHeader2;
			hdi.cchTextMax=sizeof(pszHeader2);
			pHeader->InsertItem(1,&hdi);

		    hdi.mask = HDI_FORMAT | HDI_WIDTH | HDI_BITMAP; 
		    hdi.fmt = HDF_CENTER|HDF_BITMAP;
			hdi.cxy = 100;
			hdi.hbm = HBITMAP(m_bitmap); 
			pHeader->InsertItem(2,&hdi);

			pHeader->SetImageList(&m_imageList);
			hdi.mask=HDI_IMAGE	| HDI_FORMAT| HDI_TEXT;
			hdi.fmt=HDF_LEFT |HDF_IMAGE | HDF_STRING;
			hdi.pszText=pszHeader4;
			hdi.cchTextMax=sizeof(pszHeader4);
			hdi.iImage= 1;
			hdi.cxy=100;
			pHeader->InsertItem(3,&hdi);

			i++;
		}
	}
	
	return 0;
}

void CHeaderDlg::PostNcDestroy() 
{
	while (m_HeaderList.GetCount())
	{
		delete m_HeaderList.RemoveHead();
	}
	while (m_staticList.GetCount())
	{
		delete m_staticList.RemoveHead();
	}
	
	CDialog::PostNcDestroy();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -