www.pudn.com > ToolBar_ATL.rar > KToolBarPpgGeneral.cpp


// KToolBarPpgGeneral.cpp : Implementation of CKToolBarPpgGeneral 
#include "stdafx.h" 
#include "KToolBar.h" 
#include "KToolBarPpgGeneral.h" 
 
///////////////////////////////////////////////////////////////////////////// 
// CKToolBarPpgGeneral 
 
//根据按钮数目,设置属性页界面状态 
void CKToolBarPpgGeneral::CheckBtns() 
{ 
	if(m_nBtnCnt != 0){ 
		if(m_nBtnCnt == 1){ 
			::EnableWindow(GetDlgItem(IDC_PREVBTN),FALSE); 
			::EnableWindow(GetDlgItem(IDC_NEXTBTN),FALSE); 
		}else{ 
			CheckLR(); 
		} 
		::EnableWindow(GetDlgItem(IDC_COMBOBTNSTYLE),TRUE); 
		::EnableWindow(GetDlgItem(IDC_RADIOON),TRUE); 
		::EnableWindow(GetDlgItem(IDC_RADIOOFF),TRUE); 
		::EnableWindow(GetDlgItem(IDC_BROWSEBTN),TRUE); 
		::EnableWindow(GetDlgItem(IDC_BTNDEL),TRUE); 
		::EnableWindow(GetDlgItem(IDC_TOOLTIPS),TRUE); 
		::EnableWindow(GetDlgItem(IDC_KEY),TRUE); 
	}else{ 
		::EnableWindow(GetDlgItem(IDC_PREVBTN),FALSE); 
		::EnableWindow(GetDlgItem(IDC_NEXTBTN),FALSE); 
		::EnableWindow(GetDlgItem(IDC_COMBOBTNSTYLE),FALSE); 
		::EnableWindow(GetDlgItem(IDC_RADIOON),FALSE); 
		::EnableWindow(GetDlgItem(IDC_RADIOOFF),FALSE); 
		::EnableWindow(GetDlgItem(IDC_BROWSEBTN),FALSE); 
		::EnableWindow(GetDlgItem(IDC_BTNDEL),FALSE); 
		 
		::EnableWindow(GetDlgItem(IDC_DELICON),FALSE); 
		::EnableWindow(GetDlgItem(IDC_TOOLTIPS),FALSE); 
		::EnableWindow(GetDlgItem(IDC_KEY),FALSE); 
	} 
} 
 
//检查并设置左右移动按钮的状态 
void CKToolBarPpgGeneral::CheckLR() 
{ 
	if(m_CurBtnIndex == 0){ 
		::EnableWindow(GetDlgItem(IDC_NEXTBTN),TRUE); 
		::EnableWindow(GetDlgItem(IDC_PREVBTN),FALSE); 
	}else if(m_CurBtnIndex == m_nBtnCnt-1){ 
		::EnableWindow(GetDlgItem(IDC_NEXTBTN),FALSE); 
		::EnableWindow(GetDlgItem(IDC_PREVBTN),TRUE); 
	}else{ 
		::EnableWindow(GetDlgItem(IDC_NEXTBTN),TRUE); 
		::EnableWindow(GetDlgItem(IDC_PREVBTN),TRUE); 
	} 
} 
 
CKToolBarPpgGeneral::~CKToolBarPpgGeneral(){ 
	if(m_listBtns.size()>0){ 
		for(m_iterBtn=m_listBtns.begin(); m_iterBtn!=m_listBtns.end(); m_iterBtn++) 
		{ 
			if(m_iterBtn->Icon){ 
				m_iterBtn->Icon->Release(); 
			} 
 
			if(m_iterBtn->Key){ 
				delete[] m_iterBtn->Key; 
			} 
 
			if(m_iterBtn->ToolTips){ 
				delete[] m_iterBtn->ToolTips; 
			} 
		} 
		m_listBtns.clear(); 
	} 
} 
 
void CKToolBarPpgGeneral::DrawBtn(LPPICTUREDISP picDisp) 
{ 
	try{ 
		//LPPICTURE lpPicture; 
 
		HWND hWndIcon = GetDlgItem(IDC_BTNPIC); 
		 
		RECT rectIcon = {0,0,16,16}; 
		::SendMessage(hWndIcon,STM_SETICON,NULL,0); 
		if(picDisp){ 
			m_picHolder.SetPictureDispatch(picDisp); 
			//picDisp->QueryInterface(IID_IPicture, (LPVOID*)&lpPicture); 
			 
			HDC hDCIcon = ::GetDC(hWndIcon); 
			m_picHolder.Render(hDCIcon,rectIcon,rectIcon); 
			::ReleaseDC(hWndIcon, hDCIcon); 
			::EnableWindow(GetDlgItem(IDC_DELICON),TRUE); 
		}else{ 
			::EnableWindow(GetDlgItem(IDC_DELICON),FALSE); 
		} 
	}catch (...) { 
		//::SendMessage(GetDlgItem(IDC_BTNPIC),STM_SETICON,NULL,0); 
	} 
} 
 
void CKToolBarPpgGeneral::RefreshBtnStatus() 
{ 
	//Refresh style. 
	switch(m_iterBtn->Style) { 
	case BTN_ICON: 
		SendMessage(GetDlgItem(IDC_COMBOBTNSTYLE),CB_SETCURSEL,0,0); 
		break; 
	case BTN_SEPARATOR: 
		SendMessage(GetDlgItem(IDC_COMBOBTNSTYLE),CB_SETCURSEL,1,0); 
		break; 
	default: 
		SendMessage(GetDlgItem(IDC_COMBOBTNSTYLE),CB_SETCURSEL,0,0); 
		break; 
	} 
 
	//Refresh Enabled status. 
	if(m_iterBtn->Enabled == TRUE){ 
		SendMessage(GetDlgItem(IDC_RADIOON),BM_SETCHECK,1,0); 
		SendMessage(GetDlgItem(IDC_RADIOOFF),BM_SETCHECK,0,0); 
	}else{ 
		SendMessage(GetDlgItem(IDC_RADIOON),BM_SETCHECK,0,0); 
		SendMessage(GetDlgItem(IDC_RADIOOFF),BM_SETCHECK,1,0); 
	} 
	 
	SetDlgItemText(IDC_TOOLTIPS, m_iterBtn->ToolTips); 
	SetDlgItemText(IDC_KEY, m_iterBtn->Key); 
 
	//Refresh button icon. 
	DrawBtn(m_iterBtn->Icon); 
}