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

📄 kbuttonproppage.h

📁 vc编写的
💻 H
字号:
// kButtonPropPage.h : Declaration of the _kButtonPropPage

#ifndef __KBUTTONPROPPAGE_H_
#define __KBUTTONPROPPAGE_H_

#include "resource.h"       // main symbols

namespace 
{
static TCHAR* AppearanceText [] =
{
	_T("0 - flat"), _T("1 - border"), _T("2 - 3d border raised"), _T("3 - 3d border sunken"),
	_T("4 - 3d low"), _T("5 - 3d high"), _T("6 - 3d low with border"), _T("7 - 3d high with border")
};
static TCHAR* FocusText[] =
{
	_T("0 - None"), _T("1 - DrawRect"), _T("2 - SetHover"), _T("3 - Both")
};
static TCHAR* AlignText[] =
{
	_T("0 - Left"), _T("1 - Center"), _T("2 - Right"), _T("3 - Top"), _T("4 - Bottom")
};
}

EXTERN_C const CLSID CLSID_kButtonPropPage;

/////////////////////////////////////////////////////////////////////////////
// _kButtonPropPage
class ATL_NO_VTABLE _kButtonPropPage :
	public CComObjectRootEx<CComSingleThreadModel>,
	public CComCoClass<_kButtonPropPage, &CLSID_kButtonPropPage>,
	public IPropertyPageImpl<_kButtonPropPage>,
	public CDialogImpl<_kButtonPropPage>
{
	bool bInitIsProceed;
public:
	_kButtonPropPage() : bInitIsProceed(true)
	{
		m_dwTitleID = IDS_TITLEkButtonPropPage;
		m_dwHelpFileID = IDS_HELPFILEkButtonPropPage;
		m_dwDocStringID = IDS_DOCSTRINGkButtonPropPage;
	}

	enum {IDD = IDD_KBUTTONPROPPAGE};

DECLARE_REGISTRY_RESOURCEID(IDR_KBUTTONPROPPAGE)
DECLARE_NOT_AGGREGATABLE(_kButtonPropPage)

DECLARE_PROTECT_FINAL_CONSTRUCT()

BEGIN_COM_MAP(_kButtonPropPage) 
	COM_INTERFACE_ENTRY(IPropertyPage)
END_COM_MAP()

BEGIN_MSG_MAP(_kButtonPopPage)	
	MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
	COMMAND_HANDLER(IDC_CHECK_HOVER, BN_CLICKED, OnPropertyChanged)
	COMMAND_HANDLER(IDC_CHECK_ALTER, BN_CLICKED, OnPropertyChanged)
	COMMAND_HANDLER(IDC_COMBO_ALIGN, CBN_SELCHANGE, OnPropertyChanged)
	COMMAND_HANDLER(IDC_COMBO_FOCUS, CBN_SELCHANGE, OnPropertyChanged)
	COMMAND_HANDLER(IDC_COMBO_HOVER, CBN_SELCHANGE, OnPropertyChanged)
	COMMAND_HANDLER(IDC_COMBO_PUSH, CBN_SELCHANGE, OnPropertyChanged)
	COMMAND_HANDLER(IDC_COMBO_STATIC, CBN_SELCHANGE, OnPropertyChanged)
	COMMAND_HANDLER(IDC_HoverText, EN_CHANGE, OnPropertyChanged)
	COMMAND_HANDLER(IDC_PushText, EN_CHANGE, OnPropertyChanged)
	COMMAND_HANDLER(IDC_SPACING, EN_CHANGE, OnPropertyChanged)
	COMMAND_HANDLER(IDC_StaticText, EN_CHANGE, OnPropertyChanged)
	CHAIN_MSG_MAP(IPropertyPageImpl<_kButtonPropPage>)
END_MSG_MAP()
// Handler prototypes:
//  LRESULT MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
//  LRESULT CommandHandler(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
//  LRESULT NotifyHandler(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);

	STDMETHOD(Show)(UINT nCmdShow)
	{
		if ((nCmdShow == SW_SHOW) || (nCmdShow == SW_SHOWNORMAL))
		{
			LoadData();
		}
		return IPropertyPageImpl<_kButtonPropPage>::Show(nCmdShow);
	}

	STDMETHOD(Apply)(void)
	{
		TCHAR* txtStatic, *txtPush, *txtHover;
		
		int len = SendMessage(GetDlgItem(IDC_StaticText), WM_GETTEXTLENGTH, 0, 0);
		txtStatic = (TCHAR*)_alloca((len + 1) * sizeof TCHAR);				
		memset(txtStatic, 0, (len + 1) * sizeof TCHAR);
		GetDlgItemText(IDC_StaticText, txtStatic, len + 1);

		len = SendMessage(GetDlgItem(IDC_HoverText), WM_GETTEXTLENGTH, 0, 0);
		txtHover = (TCHAR*)_alloca((len + 1) * sizeof TCHAR);				
		memset(txtHover, 0, (len + 1) * sizeof TCHAR);
		GetDlgItemText(IDC_HoverText, txtHover, len + 1);

		len = SendMessage(GetDlgItem(IDC_PushText), WM_GETTEXTLENGTH, 0, 0);
		txtPush = (TCHAR*)_alloca((len + 1) * sizeof TCHAR);				
		memset(txtPush, 0, (len + 1) * sizeof TCHAR);
		GetDlgItemText(IDC_PushText, txtPush, len + 1);

		CComBSTR bstrStatic(txtStatic), bstrPush(txtPush), bstrHover(txtHover);

		kAppearanceEnum appearStatic = kAppearanceEnum(SendDlgItemMessage(IDC_COMBO_STATIC, CB_GETCURSEL, 0, 0));
		kAppearanceEnum appearHover = kAppearanceEnum(SendDlgItemMessage(IDC_COMBO_HOVER, CB_GETCURSEL, 0, 0));
		kAppearanceEnum appearPush = kAppearanceEnum(SendDlgItemMessage(IDC_COMBO_PUSH, CB_GETCURSEL, 0, 0));		
		kFocusEnum focus = kFocusEnum(SendDlgItemMessage(IDC_COMBO_FOCUS, CB_GETCURSEL, 0, 0));
		kAlignmentEnum align = kAlignmentEnum (SendDlgItemMessage(IDC_COMBO_ALIGN, CB_GETCURSEL, 0, 0));

		BOOL isOkSpacing = FALSE;
		UINT uiSpacing = GetDlgItemInt(IDC_SPACING, &isOkSpacing, 0);

		UINT resHoverEnabled = SendDlgItemMessage(IDC_CHECK_HOVER, BM_GETCHECK, 0, 0);
		UINT resAlter = SendDlgItemMessage(IDC_CHECK_ALTER,  BM_GETCHECK, 0, 0);

		ATLTRACE(_T("_kButtonPropPage::Apply\n"));
		for (UINT i = 0; i < m_nObjects; i++)
		{
			{
				CComQIPtr<IkButton, &IID_IkButton> p(m_ppUnk[i]);
				if (p)
				{
					p->put_TextStatic(bstrStatic);
					p->put_TextHover (bstrHover);
					p->put_TextPush  (bstrPush);
					p->put_AppearanceStatic(appearStatic);
					p->put_AppearanceHover(appearHover);
					p->put_AppearancePush(appearPush);
					p->put_ShowFocus(focus);
					p->put_PictureAlignment(align);
					if (isOkSpacing)
						p->put_PictureSpacing(uiSpacing);
					p->put_HoverEnabled (resHoverEnabled == BST_CHECKED);
					p->put_ShowStateAsFlat (resAlter == BST_CHECKED);
				}
			}			
		}		
		return S_OK;
	}
	LRESULT OnInitDialog(UINT, WPARAM, LPARAM, BOOL&)
	{	
		SendDlgItemMessage(IDC_COMBO_STATIC, CB_ADDSTRING, kFlat,            (long)AppearanceText[kFlat]);
		SendDlgItemMessage(IDC_COMBO_STATIC, CB_ADDSTRING, kBorder,          (long)AppearanceText[kBorder]);
		SendDlgItemMessage(IDC_COMBO_STATIC, CB_ADDSTRING, k3dBorderRaised,  (long)AppearanceText[k3dBorderRaised]);
		SendDlgItemMessage(IDC_COMBO_STATIC, CB_ADDSTRING, k3dBorderSunken,  (long)AppearanceText[k3dBorderSunken]);
		SendDlgItemMessage(IDC_COMBO_STATIC, CB_ADDSTRING, k3dLow,           (long)AppearanceText[k3dLow]);
		SendDlgItemMessage(IDC_COMBO_STATIC, CB_ADDSTRING, k3dHigh,          (long)AppearanceText[k3dHigh]);
		SendDlgItemMessage(IDC_COMBO_STATIC, CB_ADDSTRING, k3dLowWithBorder, (long)AppearanceText[k3dLowWithBorder]);
		SendDlgItemMessage(IDC_COMBO_STATIC, CB_ADDSTRING, k3dHighWithBorder,(long)AppearanceText[k3dHighWithBorder]);

		SendDlgItemMessage(IDC_COMBO_HOVER, CB_ADDSTRING, kFlat,            (long)AppearanceText[kFlat]);
		SendDlgItemMessage(IDC_COMBO_HOVER, CB_ADDSTRING, kBorder,          (long)AppearanceText[kBorder]);
		SendDlgItemMessage(IDC_COMBO_HOVER, CB_ADDSTRING, k3dBorderRaised,  (long)AppearanceText[k3dBorderRaised]);
		SendDlgItemMessage(IDC_COMBO_HOVER, CB_ADDSTRING, k3dBorderSunken,  (long)AppearanceText[k3dBorderSunken]);
		SendDlgItemMessage(IDC_COMBO_HOVER, CB_ADDSTRING, k3dLow,           (long)AppearanceText[k3dLow]);
		SendDlgItemMessage(IDC_COMBO_HOVER, CB_ADDSTRING, k3dHigh,          (long)AppearanceText[k3dHigh]);
		SendDlgItemMessage(IDC_COMBO_HOVER, CB_ADDSTRING, k3dLowWithBorder, (long)AppearanceText[k3dLowWithBorder]);
		SendDlgItemMessage(IDC_COMBO_HOVER, CB_ADDSTRING, k3dHighWithBorder,(long)AppearanceText[k3dHighWithBorder]);

		SendDlgItemMessage(IDC_COMBO_PUSH, CB_ADDSTRING, kFlat,            (long)AppearanceText[kFlat]);
		SendDlgItemMessage(IDC_COMBO_PUSH, CB_ADDSTRING, kBorder,          (long)AppearanceText[kBorder]);
		SendDlgItemMessage(IDC_COMBO_PUSH, CB_ADDSTRING, k3dBorderRaised,  (long)AppearanceText[k3dBorderRaised]);
		SendDlgItemMessage(IDC_COMBO_PUSH, CB_ADDSTRING, k3dBorderSunken,  (long)AppearanceText[k3dBorderSunken]);
		SendDlgItemMessage(IDC_COMBO_PUSH, CB_ADDSTRING, k3dLow,           (long)AppearanceText[k3dLow]);
		SendDlgItemMessage(IDC_COMBO_PUSH, CB_ADDSTRING, k3dHigh,          (long)AppearanceText[k3dHigh]);
		SendDlgItemMessage(IDC_COMBO_PUSH, CB_ADDSTRING, k3dLowWithBorder, (long)AppearanceText[k3dLowWithBorder]);
		SendDlgItemMessage(IDC_COMBO_PUSH, CB_ADDSTRING, k3dHighWithBorder,(long)AppearanceText[k3dHighWithBorder]);
		
		SendDlgItemMessage(IDC_COMBO_FOCUS, CB_ADDSTRING, kNone,     (long)FocusText[kNone]);
		SendDlgItemMessage(IDC_COMBO_FOCUS, CB_ADDSTRING, kDrawRect, (long)FocusText[kDrawRect]);
		SendDlgItemMessage(IDC_COMBO_FOCUS, CB_ADDSTRING, kSetHover, (long)FocusText[kSetHover]);
		SendDlgItemMessage(IDC_COMBO_FOCUS, CB_ADDSTRING, kBoth,     (long)FocusText[kBoth]);

		SendDlgItemMessage(IDC_COMBO_ALIGN, CB_ADDSTRING, kLeft,     (long)AlignText[kLeft]);
		SendDlgItemMessage(IDC_COMBO_ALIGN, CB_ADDSTRING, kCenter,   (long)AlignText[kCenter]);
		SendDlgItemMessage(IDC_COMBO_ALIGN, CB_ADDSTRING, kRight,    (long)AlignText[kRight]);
		SendDlgItemMessage(IDC_COMBO_ALIGN, CB_ADDSTRING, kTop,      (long)AlignText[kTop]);
		SendDlgItemMessage(IDC_COMBO_ALIGN, CB_ADDSTRING, kBottom,   (long)AlignText[kBottom]);
				
		bInitIsProceed = false;
		return 0;
	}
	LRESULT OnPropertyChanged(WORD, WORD, HWND, BOOL&)
	{
		if (!bInitIsProceed)
		{
			SetDirty(TRUE);
			m_pPageSite->OnStatusChange (PROPPAGESTATUS_DIRTY | PROPPAGESTATUS_VALIDATE);
		}
		return 0;
	}

private:
	void LoadData()
	{
		USES_CONVERSION;

		CComQIPtr<IkButton, &IID_IkButton> p(m_ppUnk[0]);
		if (p)
		{
			BSTR txt = 0;

			if (SUCCEEDED(p->get_TextStatic(&txt)))
				SetDlgItemText(IDC_StaticText, W2T(txt));
			SysFreeString(txt);

			if (SUCCEEDED(p->get_TextHover(&txt)))
				SetDlgItemText(IDC_HoverText, W2T(txt));
			SysFreeString(txt);

			if (SUCCEEDED(p->get_TextPush(&txt)))
				SetDlgItemText(IDC_PushText, W2T(txt));
			SysFreeString(txt);

			kAppearanceEnum appear;
			if (SUCCEEDED(p->get_AppearanceStatic(&appear)))
				SendDlgItemMessage(IDC_COMBO_STATIC, CB_SETCURSEL, (long)appear, 0);

			if (SUCCEEDED(p->get_AppearanceHover(&appear)))
				SendDlgItemMessage(IDC_COMBO_HOVER, CB_SETCURSEL, (long)appear, 0);

			if (SUCCEEDED(p->get_AppearancePush(&appear)))
				SendDlgItemMessage(IDC_COMBO_PUSH, CB_SETCURSEL, (long)appear, 0);

			kFocusEnum focus;
			if (SUCCEEDED(p->get_ShowFocus(&focus)))
				SendDlgItemMessage(IDC_COMBO_FOCUS, CB_SETCURSEL, (long)focus, 0);

			kAlignmentEnum align;
			if (SUCCEEDED(p->get_PictureAlignment(&align)))
				SendDlgItemMessage(IDC_COMBO_ALIGN, CB_SETCURSEL, (long)align, 0);
			
			short sSpacing = 0;
			if (SUCCEEDED(p->get_PictureSpacing(&sSpacing)))
			{
				TCHAR buffer[20] = {_T('\0')};
				_itot(sSpacing, buffer, 10);
				SetDlgItemText(IDC_SPACING, buffer);
			}

			VARIANT_BOOL bln = VARIANT_FALSE;
			if (SUCCEEDED(p->get_HoverEnabled(&bln)))
			{
				if (bln != VARIANT_FALSE)
					SendDlgItemMessage(IDC_CHECK_HOVER, BM_SETCHECK, BST_CHECKED, 0);
				else
					SendDlgItemMessage(IDC_CHECK_HOVER, BM_SETCHECK, BST_UNCHECKED, 0);
			}

			bln = VARIANT_FALSE;
			if (SUCCEEDED(p->get_ShowStateAsFlat(&bln)))
			{
				if (bln != VARIANT_FALSE)
					SendDlgItemMessage(IDC_CHECK_ALTER, BM_SETCHECK, BST_CHECKED, 0);
				else
					SendDlgItemMessage(IDC_CHECK_ALTER, BM_SETCHECK, BST_UNCHECKED, 0);
			}
		}		
	}
};

#endif //__KBUTTONPROPPAGE_H_

⌨️ 快捷键说明

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