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);
}