// SampleProjectDialog.h
#pragma once
class CSampleProjectDialog :
public CAppStdDialogImpl<CSampleProjectDialog>,
public CUpdateUI<CSampleProjectDialog>,
public CMessageFilter, public CIdleHandler
{
public:
DECLARE_APP_DLG_CLASS(NULL, IDR_MAINFRAME, L"Software\\WTL")
enum { IDD = IDD_MAINDLG };
CComboBox m_combo_dir; // ファイル名表示用
CStatic m_static_size; // ファイルサイズ表示用
CString m_app_root; // アプリケーションがあるフォルダパス
virtual BOOL PreTranslateMessage(MSG* pMsg){
return CWindow::IsDialogMessage(pMsg);
}
virtual BOOL OnIdle(){
return FALSE;
}
BEGIN_UPDATE_UI_MAP(CSampleProjectDialog)
END_UPDATE_UI_MAP()
BEGIN_MSG_MAP(CSampleProjectDialog)
MSG_WM_INITDIALOG(OnInitDialog)
MSG_WM_DESTROY(OnDestroy)
COMMAND_HANDLER_EX(IDC_COMBO_DIR, CBN_SELCHANGE, OnComboSelChange)
CHAIN_MSG_MAP(CUpdateUI<CSampleProjectDialog>)
CHAIN_MSG_MAP(CAppStdDialogImpl<CSampleProjectDialog>)
END_MSG_MAP()
BOOL OnInitDialog(CWindow wndFocus, LPARAM lInitParam){
AtlCreateEmptyMenuBar(m_hWnd);
// コントロール設定
m_combo_dir = GetDlgItem(IDC_COMBO_DIR);
m_static_size = GetDlgItem(IDC_STATIC_SIZE);
// アプリケーションがあるフォルダパスを取得
TCHAR szAppRoot[_MAX_PATH];
::GetModuleFileName(NULL, szAppRoot, sizeof(szAppRoot) / sizeof(TCHAR));
*(::_tcsrchr(szAppRoot, _T('\\')) + 1) = _T('\0');
m_app_root = szAppRoot;
CFindFile find;
if(find.FindFile(m_app_root + _T("*.*"))){
do{
if(!find.IsDots()){
m_combo_dir.AddString(find.GetFileName());
}
}while(find.FindNextFile());
}
// メッセージループにメッセージフィルタとアイドルハンドラを追加
CMessageLoop* pLoop = _Module.GetMessageLoop();
pLoop->AddMessageFilter(this);
pLoop->AddIdleHandler(this);
SetMsgHandled(false);
return TRUE;
}
void OnDestroy(){
// メッセージループからメッセージフィルタとアイドルハンドラを削除
CMessageLoop* pLoop = _Module.GetMessageLoop();
pLoop->RemoveMessageFilter(this);
pLoop->RemoveIdleHandler(this);
}
void OnComboSelChange(UINT uNotifyCode, int nID, CWindow wndCtl){
int nIndex = m_combo_dir.GetCurSel();
if(nIndex != CB_ERR){
CString strFile;
m_combo_dir.GetLBText(nIndex, strFile);
CFindFile find;
if(find.FindFile(m_app_root + strFile)){
CString strSize;
strSize.Format(_T("ファイルサイズ: %ldバイト"), find.GetFileSize());
m_static_size.SetWindowText(strSize);
}
}
}
};
|