|
// maindlg.h
class CMainDlg : public CDialogImpl<CMainDlg>
{
public:
enum { IDD = IDD_MAINDLG };
enum {SHELL = 1, COMCTL, WINDIR, SYSDIR};
// Æ®¸® ¾ÆÀÌÅÛ ½Äº°ÀÚ
CTreeViewCtrl
m_tree_sysinfo;
CStatic
m_static_display; // Á¤º¸ Ç¥½Ã¿ë
// ¸Þ¼¼Áö ¸Ê
BEGIN_MSG_MAP_EX(CMainDlg)
MSG_WM_INITDIALOG(OnInitDialog)
NOTIFY_HANDLER_EX(IDC_TREE_SYSINFO, NM_CLICK, OnTreeClick)
COMMAND_ID_HANDLER_EX(IDOK, OnOK)
COMMAND_ID_HANDLER_EX(IDCANCEL, OnCancel)
END_MSG_MAP()
LRESULT OnInitDialog(HWND hWnd,
LPARAM lParam){
// ½ºÅ©¸°ÀÇ Áß¾Ó¿¡ ¹èÄ¡
CenterWindow();
// Å« ¾ÆÀÌÄÜ ¼³Á¤
HICON hIcon = AtlLoadIconImage(IDR_MAINFRAME,
LR_DEFAULTCOLOR,
::GetSystemMetrics(SM_CXICON), ::GetSystemMetrics(SM_CYICON));
SetIcon(hIcon, TRUE);
// ÀÛÀº ¾ÆÀÌÄÜ ¼³Á¤
HICON hIconSmall = AtlLoadIconImage(IDR_MAINFRAME,
LR_DEFAULTCOLOR,
::GetSystemMetrics(SM_CXSMICON), ::GetSystemMetrics(SM_CYSMICON));
SetIcon(hIconSmall, FALSE);
// ÄÁÆ®·Ñ ¼³Á¤
m_tree_sysinfo = GetDlgItem(IDC_TREE_SYSINFO);
m_static_display = GetDlgItem(IDC_STATIC_DISPLAY);
HTREEITEM hSysInfo =
m_tree_sysinfo.InsertItem(_T("½Ã½ºÅÛ
Á¤º¸"), TVI_ROOT, TVI_LAST);
HTREEITEM hDllVer =
m_tree_sysinfo.InsertItem(_T("DLL¹öÁ¯"), hSysInfo,
TVI_LAST);
HTREEITEM hItem;
hItem = m_tree_sysinfo.InsertItem(_T("shell32.dll"),
hDllVer, TVI_LAST);
m_tree_sysinfo.SetItemData(hItem,
SHELL);
hItem = m_tree_sysinfo.InsertItem(_T("comctl32.dll"),
hDllVer, TVI_LAST);
m_tree_sysinfo.SetItemData(hItem,
COMCTL);
HTREEITEM hSysDir =
m_tree_sysinfo.InsertItem(_T("µð·ºÅ丮"), hSysInfo,
TVI_LAST);
hItem = m_tree_sysinfo.InsertItem(_T("Windows"),
hSysDir, TVI_LAST);
m_tree_sysinfo.SetItemData(hItem,
WINDIR);
hItem = m_tree_sysinfo.InsertItem(_T("½Ã½ºÅÛ"),
hSysDir, TVI_LAST);
m_tree_sysinfo.SetItemData(hItem,
SYSDIR);
return TRUE;
}
LRESULT OnTreeClick(LPNMHDR pnmh){
// Ŭ¸¯µÈ ¾ÆÀÌÅÛ ÇÚµé Ãëµæ
UINT uFlag;
CPoint pt = ::GetMessagePos();
m_tree_sysinfo.ScreenToClient(&pt);
HTREEITEM
hItem = m_tree_sysinfo.HitTest(pt,
&uFlag);
if(hItem == NULL
|| !(uFlag & TVHT_ONITEM))
return 0;
// ¾ÆÀÌÅÛ µ¥ÀÌÅÍ Ãëµæ
CString strInfo;
DWORD dwData = m_tree_sysinfo.GetItemData(hItem);
switch(dwData){
case SHELL:
{
// shell32.dllÀÇ ¹öÁ¯ Ãëµæ
DWORD dwMajor, dwMinor;
AtlGetShellVersion(&dwMajor, &dwMinor);
strInfo.Format(_T("Version %d.%02d"), dwMajor,
dwMinor);
break;
}
case COMCTL:
{
// comctl32.dllÀÇ
¹öÁ¯ Ãëµæ
DWORD dwMajor, dwMinor;
AtlGetCommCtrlVersion(&dwMajor, &dwMinor);
strInfo.Format(_T("Version %d.%02d"), dwMajor,
dwMinor);
break;
}
case WINDIR:
{
// WindowsÆú´õ ÆÐ½º Ãëµæ
TCHAR szPath[MAX_PATH];
GetWindowsDirectory(szPath,
MAX_PATH);
strInfo = szPath;
break;
}
case SYSDIR:
{
// ½Ã½ºÅÛ Æú´õ ÆÐ½º Ãëµæ
TCHAR szPath[MAX_PATH];
GetSystemDirectory(szPath,
MAX_PATH);
strInfo = szPath;
break;
}
default:
break;
}
m_static_display.SetWindowText(strInfo);
return 0;
}
void OnOK(UINT uNotifyCode, int nID, HWND hWndCtl){
EndDialog(nID);
}
void OnCancel(UINT uNotifyCode, int nID, HWND hWndCtl){
EndDialog(nID);
}
};
|