📄 template.txt
字号:
{
ForceRemove {2EF12E30-3C3B-11d1-AFA9-00C04FB99436} = s 'ATL Object Wizard'
{
ProgID = s 'ATLOBJ.ATLWiz.1'
VersionIndependentProgID = s 'ATLOBJ.ATLWiz'
InprocServer32 = s '%Module%'
}
}
}
HKLM
{
Software
{
Microsoft
{
DevStudio
{
6.0
{
ATLWizard
{
'{6E871954-50AD-11D0-883E-080000185165}'
{
val 'Category' = s 'Objects'
val 'Control' = s 'object.ctl'
val 'Icon' = s 'object.ico'
val 'Name' = s 'Simple Object'
}
'{6E871955-50AD-11D0-883E-080000185165}'
{
val 'Category' = s 'Objects'
val 'Name' = s 'Add-in Object'
val 'Control' = s 'addin.ctl'
val 'Icon' = s 'addin.ico'
}
'{6E871956-50AD-11D0-883E-080000185165}'
{
val 'Category' = s 'Objects'
val 'Name' = s 'Internet Explorer Object'
val 'Control' = s 'ieuiless.ctl'
val 'Icon' = s 'iexplore.ico'
}
'{6E871957-50AD-11D0-883E-080000185165}'
{
val 'Category' = s 'Objects'
val 'Name' = s 'ActiveX Server Component'
val 'Control' = s 'asp.ctl'
val 'Icon' = s 'asp.ico'
}
'{6E871960-50AD-11D0-883E-080000185165}'
{
val 'Category' = s 'Objects'
val 'Name' = s 'MS Transaction Server Component'
val 'Control' = s 'msdtx.ctl'
val 'Icon' = s 'msdtx.ico'
}
'{6E871961-50AD-11D0-883E-080000185165}'
{
val 'Category' = s 'Objects'
val 'Name' = s 'Component Registrar Object'
val 'Control' = s 'compreg.ctl'
val 'Icon' = s 'compreg.ico'
}
'{6E871958-50AD-11D0-883E-080000185165}'
{
val 'Category' = s 'Controls'
val 'Name' = s 'Full Control'
val 'Control' = s 'control.ctl'
val 'Icon' = s 'control.ico'
}
'{6E871959-50AD-11D0-883E-080000185165}'
{
val 'Category' = s 'Controls'
val 'Name' = s 'Lite Control'
val 'Control' = s 'control.ctl'
val 'Icon' = s 'iexplore.ico'
val 'SetSymbol' = s 'IEControl'
}
'{6E87195D-50AD-11D0-883E-080000185165}'
{
val 'Category' = s 'Controls'
val 'Name' = s 'Composite Control'
val 'Control' = s 'control.ctl'
val 'Icon' = s 'compsite.ico'
val 'SetSymbol' = s 'CompositeControl'
}
'{6E871962-50AD-11D0-883E-080000185165}'
{
val 'Category' = s 'Controls'
val 'Name' = s 'HTML Control'
val 'Control' = s 'control.ctl'
val 'Icon' = s 'HTML.ico'
val 'SetSymbol' = s 'HTMLControl'
}
'{6E87195A-50AD-11D0-883E-080000185165}'
{
val 'Category' = s 'Controls'
val 'Name' = s 'Property Page'
val 'Control' = s 'proppage.ctl'
val 'Icon' = s 'proppage.ico'
}
'{6E87195B-50AD-11D0-883E-080000185165}'
{
val 'Category' = s 'Miscellaneous'
val 'Control' = s 'dialog.ctl'
val 'Icon' = s 'dialog.ico'
val 'Name' = s 'Dialog'
}
'{6E87195E-50AD-11D0-883E-080000185165}'
{
val 'Category' = s 'Objects'
val 'Control' = s 'snapin.ctl'
val 'Icon' = s 'snapin.ico'
val 'Name' = s 'MMC SnapIn'
}
'{6E87195C-50AD-11D0-883E-080000185165}'
{
val 'Category' = s 'Data Access'
val 'Name' = s 'Provider'
val 'Control' = s 'provider.ctl'
val 'Icon' = s 'provider.ico'
}
'{6E87195F-50AD-11D0-883E-080000185165}'
{
val 'Category' = s 'Data Access'
val 'Name' = s 'Consumer'
val 'Control' = s 'consumer.ctl'
val 'Icon' = s 'consumer.ico'
}
'{6E871963-50AD-11D0-883E-080000185165}'
{
val 'Category' = s 'Controls'
val 'Name' = s 'Lite Composite Control'
val 'Control' = s 'control.ctl'
val 'Icon' = s 'compsite.ico'
val 'SetSymbol' = s 'CompositeControl,IEControl'
}
'{6E871964-50AD-11D0-883E-080000185165}'
{
val 'Category' = s 'Controls'
val 'Name' = s 'Lite HTML Control'
val 'Control' = s 'control.ctl'
val 'Icon' = s 'HTML.ico'
val 'SetSymbol' = s 'HTMLControl,IEControl'
}
}
}
}
}
}
}</font></pre>
<p><font size="3">.RGS file for Names property page.</font></p>
<pre><font size="3">HKCR
{
Names98.Names98 = s 'Names98 Class'
{
CurVer = s 'Names98.Names98.1'
CLSID = s '{53FCBC28-5015-11d1-AFC7-00C04FB99436}'
}
Names98.Names98.1 = s 'Names98 Class'
{
CLSID = s '{53FCBC28-5015-11d1-AFC7-00C04FB99436}'
}
NoRemove CLSID
{
ForceRemove {53FCBC28-5015-11d1-AFC7-00C04FB99436} = s 'Names98 Class'
{
InprocServer32 = s '%MODULE%'
{
val ThreadingModel = s 'Both'
}
}
}
}
</font></pre>
<p><font size="3"><b><u>Smaple Property Page code</u></b></font></p>
<p><font size="2"><b>.H File</b></font></p>
<pre><font size="3">// testpg.h : Declaration of the Ctestpg
#ifndef __TESTPG_H_
#define __TESTPG_H_
#include "resource.h" // main symbols
EXTERN_C const CLSID CLSID_testpg;
/////////////////////////////////////////////////////////////////////////////
// Ctestpg
class ATL_NO_VTABLE Ctestpg :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<Ctestpg, &CLSID_testpg>,
public IPropertyPageImpl<Ctestpg>,
public CDialogImpl<Ctestpg>
{
public:
Ctestpg()
{
m_dwTitleID = IDS_TITLEtestpg;
m_dwHelpFileID = IDS_HELPFILEtestpg;
m_dwDocStringID = IDS_DOCSTRINGtestpg;
}
enum {IDD = IDD_TESTPG};
DECLARE_REGISTRY_RESOURCEID(IDR_TESTPG)
BEGIN_COM_MAP(Ctestpg)
COM_INTERFACE_ENTRY_IMPL(IPropertyPage)
END_COM_MAP()
BEGIN_MSG_MAP(Ctestpg)
COMMAND_ID_HANDLER(IDC_SET, OnSet);
COMMAND_ID_HANDLER(IDC_GET, OnGet);
CHAIN_MSG_MAP(IPropertyPageImpl<Ctestpg>)
END_MSG_MAP()
LRESULT OnSet(short , short nID , HWND hWnd, BOOL& bHandled)
{
CComQIPtr<ISymbolMap, &IID_ISymbolMap> pMap(m_ppUnk[0]);
if (!pMap)
return S_OK;
TCHAR szSymbol[128];
TCHAR szValue[128];
GetDlgItemText(IDC_SYMBOL, szSymbol, 128);
GetDlgItemText(IDC_VALUE, szValue, 128);
pMap->Set(CComBSTR(szSymbol), CComBSTR(szValue));
return 0;
}
LRESULT OnGet(short , short nID , HWND hWnd, BOOL& bHandled)
{
CComQIPtr<ISymbolMap, &IID_ISymbolMap> pMap(m_ppUnk[0]);
if (!pMap)
return S_OK;
TCHAR szSymbol[128];
GetDlgItemText(IDC_SYMBOL, szSymbol, 128);
CComBSTR szValue;
pMap->Get(CComBSTR(szSymbol), &szValue);
USES_CONVERSION;
SetDlgItemText(IDC_VALUE, OLE2T(szValue));
return 0;
}
STDMETHOD(Apply)(void)
{
ATLTRACE(_T("Ctestpg::Apply\n"));
if (m_hWnd == NULL)
return S_OK;
CComQIPtr<ISymbolMap, &IID_ISymbolMap> pMap(m_ppUnk[0]);
if (!pMap)
return S_OK;
TCHAR szSymbol[128];
TCHAR szValue[128];
GetDlgItemText(IDC_SYMBOL, szSymbol, 128);
GetDlgItemText(IDC_VALUE, szValue, 128);
pMap->Set(CComBSTR(szSymbol), CComBSTR(szValue));
m_bDirty = FALSE;
return S_OK;
}
};
#endif //__TESTPG_H_
</font></pre>
<p><font size="2"><b>.rgs</b></font></p>
<pre><font size="3">HKCR
{
testpg.testpg.1 = s 'testpg Class'
{
CLSID = s '{6992CC0C-472B-11D1-AA8C-000000000000}'
}
testpg.testpg = s 'testpg Class'
{
CLSID = s '{6992CC0C-472B-11D1-AA8C-000000000000}'
CurVer = s 'testpg.testpg.1'
}
NoRemove CLSID
{
ForceRemove {6992CC0C-472B-11D1-AA8C-000000000000} = s 'testpg Class'
{
ForceRemove 'Programmable'
InprocServer32 = s '%MODULE%'
{
val ThreadingModel = s 'Both'
}
}
}
}
</font></pre>
<p><font size="2"><b>Dialog resource for the page</b></font></p>
<pre><font size="3">IDD_TESTPG DIALOG DISCARDABLE 0, 0, 271, 105
STYLE WS_CHILD
FONT 8, "MS Sans Serif"
BEGIN
EDITTEXT IDC_SYMBOL,22,24,40,14,ES_AUTOHSCROLL
LTEXT "Symbol",IDC_STATIC,22,8,24,8
LTEXT "Value",IDC_STATIC,87,8,19,8
EDITTEXT IDC_VALUE,87,24,40,14,ES_AUTOHSCROLL
PUSHBUTTON "Set",IDC_SET,22,49,40,14
PUSHBUTTON "Get",IDC_GET,87,49,40,14
END</font></pre>
<p><font size="2"><b>String resources.</b></font></p>
<pre><font size="2">IDS_TITLEtestpg "Title"</font></pre>
<pre><font size="2">IDS_HELPFILEtestpg "Help File Name"</font></pre>
<pre><font size="2">IDS_DOCSTRINGtestpg "Your Help String"</font></pre>
<h1><font size="3"><strong><u>ISymbolMap</u></strong></font></h1>
<pre>[
object,
uuid(C6D58201-1FA3-11D0-BF1E-0000E8D0D146),
helpstring("ISymbolMap Interface"),
pointer_default(unique)
]
interface ISymbolMap : IUnknown
{
HRESULT Set([in] LPCOLESTR strSymbol, [in] LPCOLESTR strValue);
HRESULT Get([in] LPCOLESTR strSymbol, [out, retval] BSTR* pstrValue);
HRESULT Clear();
HRESULT SetStatus(const CLSID* pclsid, BOOL bEnableOK);
};</pre>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -