// 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 };
CButton m_check_addicon; // [アイコンを追加する]チェックボックス
CButton m_radio_information; // [MB_ICONINFORMATION]ラジオボタン
CButton m_radio_warning; // [MB_ICONWARNING]ラジオボタン
CButton m_radio_question; // [MB_ICONQUESTION]ラジオボタン
CButton m_radio_error; // [MB_ICONERROR]ラジオボタン
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_ID_HANDLER_EX(IDC_BUTTON_SHOW, OnButtonShow)
CHAIN_MSG_MAP(CUpdateUI<CSampleProjectDialog>)
CHAIN_MSG_MAP(CAppStdDialogImpl<CSampleProjectDialog>)
END_MSG_MAP()
BOOL OnInitDialog(CWindow wndFocus, LPARAM lInitParam){
AtlCreateEmptyMenuBar(m_hWnd);
// コントロール設定
m_check_addicon = GetDlgItem(IDC_CHECK_ICON);
m_radio_information = GetDlgItem(IDC_RADIO_INFORMATION);
m_radio_warning = GetDlgItem(IDC_RADIO_WARNING);
m_radio_question = GetDlgItem(IDC_RADIO_QUESTION);
m_radio_error = GetDlgItem(IDC_RADIO_ERROR);
m_radio_information.SetCheck(1);
// メッセージループにメッセージフィルタとアイドルハンドラを追加
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 OnButtonShow(UINT uNotifyCode, int nID, CWindow wndCtl){
UINT uIcon = MB_OK;
if(m_check_addicon.GetCheck()){
if(m_radio_information.GetCheck()){
uIcon |= MB_ICONINFORMATION;
}else if(m_radio_warning.GetCheck()){
uIcon |= MB_ICONWARNING;
}else if(m_radio_question.GetCheck()){
uIcon |= MB_ICONQUESTION;
}else if(m_radio_error.GetCheck()){
uIcon |= MB_ICONERROR;
}
}
MessageBox(_T("Hello, ATL/WTL"), _T("メッセージ"), uIcon);
}
};
|