icondlg.cpp

来自「迷你星文件捆绑器源码」· C++ 代码 · 共 153 行

CPP
153
字号
// IconDlg.cpp : implementation file
//

#include "stdafx.h"
#include "BindFile.h"
#include "IconDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
int SelIcon;
/////////////////////////////////////////////////////////////////////////////
// CIconDlg dialog


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


void CIconDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CIconDlg)
	DDX_Control(pDX, IDC_LIST1, m_cListCtrl);
	DDX_Control(pDX, IDC_CANCEL, m_BtnCancel);
	DDX_Control(pDX, IDC_OK, m_BtnSelect);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CIconDlg, CDialog)
	//{{AFX_MSG_MAP(CIconDlg)
	ON_BN_CLICKED(IDC_OK, OnOk)
	ON_BN_CLICKED(IDC_CANCEL, OnCancel)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CIconDlg message handlers

void CIconDlg::OnCancel() 
{
	OnOK();		
}

void CIconDlg::OnOk() 
{
	SelIcon = m_cListCtrl.GetNextItem(-1,LVNI_SELECTED);
	if (SelIcon!=-1)
	{
		//CString str;
		CIcons *pIcons;
		
		//str.Format("%d",SelIcon+1);
		
		LPTSTR IconIndex=MAKEINTRESOURCE(SelIcon+201);
		char ExeName[128];
		char SelIconPath[128];
		::GetTempPath(128,SelIconPath);
		fname.Format("%s",SelIconPath);
		::GetModuleFileName(0, ExeName, sizeof(ExeName));
		CString ThisName;
		ThisName.Format("%s",ExeName);
	    fname=fname+"select.ico";
		hasSelected=true;
		
		
		lpIR=pIcons->ReadIconFromEXEFile(ThisName,IconIndex);
		pIcons->WriteIconToICOFile(lpIR,fname);

	}
	else
	{
		SelIcon=127; 
	}
	OnOK();	
}

BOOL CIconDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	DWORD dwStyle = m_cListCtrl.GetExtendedStyle();
	dwStyle |= LVS_EX_FULLROWSELECT|LVS_EX_FLATSB;
	m_cListCtrl.SetExtendedStyle(dwStyle);
	//m_cListCtrl.SetBkColor(RGB(0,0,0));
	
	InitListCtrlCols();
	hasSelected=false;
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CIconDlg::InitListCtrlCols()
{
    CRect rect;
	m_cListCtrl.GetClientRect(&rect);
	int nColInterval = rect.Width()/5;
	
	HIMAGELIST hList = ImageList_Create(32,32, ILC_COLOR8 |ILC_MASK , 15, 1);
	m_cImageListNormal.Attach(hList);
	m_cImageListNormal.Add(AfxGetApp()->LoadIcon(IDI_ICON1));
	m_cImageListNormal.Add(AfxGetApp()->LoadIcon(IDI_ICON2));
	m_cImageListNormal.Add(AfxGetApp()->LoadIcon(IDI_ICON3));
	m_cImageListNormal.Add(AfxGetApp()->LoadIcon(IDI_ICON4));
	m_cImageListNormal.Add(AfxGetApp()->LoadIcon(IDI_ICON5));
	m_cImageListNormal.Add(AfxGetApp()->LoadIcon(IDI_ICON6));
	m_cImageListNormal.Add(AfxGetApp()->LoadIcon(IDI_ICON7));
	m_cImageListNormal.Add(AfxGetApp()->LoadIcon(IDI_ICON8));
	m_cImageListNormal.Add(AfxGetApp()->LoadIcon(IDI_ICON9));
	m_cImageListNormal.Add(AfxGetApp()->LoadIcon(IDI_ICON10));
	m_cImageListNormal.Add(AfxGetApp()->LoadIcon(IDI_ICON11));
	m_cImageListNormal.Add(AfxGetApp()->LoadIcon(IDI_ICON12));
	m_cImageListNormal.Add(AfxGetApp()->LoadIcon(IDI_ICON13));
	m_cImageListNormal.Add(AfxGetApp()->LoadIcon(IDI_ICON14));
	m_cImageListNormal.Add(AfxGetApp()->LoadIcon(IDI_ICON15));


	m_cListCtrl.SetImageList(&m_cImageListNormal, LVSIL_NORMAL);

	LVITEM lvi;
	CString strItem;
	for (int i = 0; i < 15; i++)
	{
		// Insert the first item
		lvi.mask =  LVIF_IMAGE | LVIF_TEXT;
		strItem.Format(_T("图标 %i"), i+1);
	
		lvi.iItem = i;
		lvi.iSubItem = 0;
		lvi.pszText = (LPTSTR)(LPCTSTR)(strItem);
		lvi.iImage = i;		// There are 8 images in the image list
		m_cListCtrl.InsertItem(&lvi);
	}

}

//DEL void CIconDlg::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult) 
//DEL {
//DEL 	// TODO: Add your control notification handler code here
//DEL 	
//DEL 	*pResult = 0;
//DEL }

⌨️ 快捷键说明

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