📄 configdlg.cpp
字号:
// ConfigDlg.cpp : implementation file
//
#include "stdafx.h"
#include "ComCatApp.h"
#include "ConfigDlg.h"
#include "initguid.h"
#include "..\\ComCatDrawCategory.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CConfigDlg dialog
CConfigDlg::CConfigDlg(CWnd* pParent /*=NULL*/)
: CDialog(CConfigDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CConfigDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
void CConfigDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CConfigDlg)
DDX_Control(pDX, IDC_COMPONENT_LIST, m_list);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CConfigDlg, CDialog)
//{{AFX_MSG_MAP(CConfigDlg)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CConfigDlg message handlers
BOOL CConfigDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
CComPtr<ICatInformation> pInfo;
if (FAILED(CoCreateInstance(CLSID_StdComponentCategoriesMgr, NULL, CLSCTX_ALL, IID_ICatInformation, (void**)&pInfo)))
return FALSE;
int cIDs = 1;
CATID IDs[1];
IDs[0] = CATID_ComCatDrawCategory;
CComPtr<IEnumCLSID> pEnumCLSID = NULL;
if (FAILED(pInfo->EnumClassesOfCategories(cIDs, IDs, 0, NULL, &pEnumCLSID)))
return FALSE;
char szFriendlyName[128] ;
CLSID clsid ;
while (pEnumCLSID->Next(1, &clsid, NULL) == S_OK)
{
if (GetFriendlyName(clsid, szFriendlyName, sizeof(szFriendlyName)))
{
int index = m_list.AddString(szFriendlyName) ;
CLSID* pclsid = new CLSID ;
*pclsid = clsid ;
m_list.SetItemDataPtr(index, pclsid) ;
}
}
if (m_list.GetCount() > 0)
m_list.SetCurSel(0) ;
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CConfigDlg::OnOK()
{
// TODO: Add extra validation here
if (m_list.GetCount() != LB_ERR)
{
int index = m_list.GetCurSel() ;
if (index == LB_ERR)
index = 0 ;
m_clsid = *(reinterpret_cast<CLSID*>(m_list.GetItemDataPtr(index))) ;
}
else
m_clsid = CLSID_NULL ;
CDialog::OnOK();
}
BOOL CConfigDlg::GetFriendlyName(const CLSID& clsid, LPCTSTR szFriendlyName, int iLength)
{
HKEY hKey;
char szKeyBuf[1024] ;
// char szCLSID[39] ;
BSTR bCLSID;
// Convert the clsid to a string.
// CLSIDtochar(clsid, szCLSID, 39) ;
StringFromCLSID(clsid, &bCLSID);
CString strCLSID(bCLSID);
// Make the key.
sprintf(szKeyBuf, "CLSID\\%s", strCLSID) ;
// Create and open key and subkey.
long lResult = RegOpenKeyEx( HKEY_CLASSES_ROOT ,
szKeyBuf,
0,
KEY_ALL_ACCESS,
&hKey) ;
if (lResult != ERROR_SUCCESS)
{
return FALSE ;
}
// Set the Value.
ASSERT(szFriendlyName != NULL) ;
DWORD dwSize = iLength ;
lResult = RegQueryValueEx( hKey, NULL, NULL, NULL, (BYTE *)szFriendlyName, &dwSize);
RegCloseKey(hKey);
return lResult == ERROR_SUCCESS;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -