// maindlg.h内
class CMainDlg : public CDialogImpl<CMainDlg>
{
public:
enum { IDD = IDD_MAINDLG };
CListViewCtrl m_list_file;
// メッセージマップ
BEGIN_MSG_MAP_EX(CMainDlg)
MSG_WM_INITDIALOG(OnInitDialog)
NOTIFY_HANDLER_EX(IDC_LIST_FILE, NM_DBLCLK, OnListDblClick)
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_list_file = GetDlgItem(IDC_LIST_FILE);
m_list_file.SetExtendedListViewStyle(LVS_EX_INFOTIP | LVS_EX_FULLROWSELECT);
// リストビューコントロールにカラム挿入
CRect rcList;
m_list_file.GetWindowRect(rcList);
int nScrollWidth = GetSystemMetrics(SM_CXVSCROLL);
int n3DEdge = GetSystemMetrics(SM_CXEDGE);
m_list_file.InsertColumn(0, _T("名前"), LVCFMT_LEFT, 190, -1);
m_list_file.InsertColumn(1, _T("種類"), LVCFMT_LEFT,
rcList.Width() - 190 - nScrollWidth - n3DEdge * 2, -1);
// リストビューコントロールにアイテム追加
CFindFile find;
if(find.FindFile()){
do{
if(!find.IsDots()){
int nIndex = m_list_file.GetItemCount();
m_list_file.AddItem(nIndex, 0, find.GetFileName());
m_list_file.AddItem(nIndex, 1,
find.IsDirectory() ? _T("フォルダ") : _T("ファイル"));
}
}while(find.FindNextFile());
}
return TRUE;
}
LRESULT OnListDblClick(LPNMHDR pnmh){
LPNMITEMACTIVATE pnmia = (LPNMITEMACTIVATE)pnmh;
CString strItem;
m_list_file.GetItemText(pnmia->iItem, 0, strItem);
CString strSubItem;
m_list_file.GetItemText(pnmia->iItem, 1, strSubItem);
MessageBox(strItem + _T("は") + strSubItem + _T("です。"), _T("アイテム"));
return 0;
}
void OnOK(UINT uNotifyCode, int nID, HWND hWndCtl){
EndDialog(nID);
}
void OnCancel(UINT uNotifyCode, int nID, HWND hWndCtl){
EndDialog(nID);
}
};
|