다이얼로그바는 CControlBar를 상속받아서 버튼의 메세지를 받지 못하여 버튼을 달면
비활성화 되어 있다. 따라서 몇가지를 수동으로 기입해 주어야 한다.
다이얼로그바 헤더파일
#if !defined(AFX_CTRLPALDLG_H__A734BECF_5B37_4011_A6DB_46AB92DA69C2__INCLUDED_)
#define AFX_CTRLPALDLG_H__A734BECF_5B37_4011_A6DB_46AB92DA69C2__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// CtrlPalDlg.h : header file
//
/////////////////////////////////////////////////////////////////////////////
// CCtrlPalDlg dialog
class CCtrlPalDlg : public CDialogBar
{
// Construction
public:
CCtrlPalDlg(CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(CCtrlPalDlg)
enum { IDD = IDD_DLGBAR1 };
// NOTE: the ClassWizard will add data members here
//}}AFX_DATA
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CCtrlPalDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(CCtrlPalDlg)
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnUpdateCmdUI(CCmdUI* pCmdUI); // 직접 코딩해 준다.
afx_msg void OnButton1();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_CTRLPALDLG_H__A734BECF_5B37_4011_A6DB_46AB92DA69C2__INCLUDED_)
===========================================================================================================
다이얼로그바 소스파일
// CtrlPalDlg.cpp : implementation file
//
#include "stdafx.h"
#include "Obj2Img.h"
#include "CtrlPalDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CCtrlPalDlg dialog
CCtrlPalDlg::CCtrlPalDlg(CWnd* pParent /*=NULL*/)
: CDialogBar()
{
//{{AFX_DATA_INIT(CCtrlPalDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
void CCtrlPalDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogBar::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CCtrlPalDlg)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CCtrlPalDlg, CDialogBar)
//{{AFX_MSG_MAP(CCtrlPalDlg)
ON_WM_CREATE()
ON_UPDATE_COMMAND_UI(IDC_BUTTON1, CCtrlPalDlg::OnUpdateCmdUI) // 이부분 직접코딩
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CCtrlPalDlg message handlers
int CCtrlPalDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialogBar::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
return 0;
}
void CCtrlPalDlg::OnButton1()
{
// TODO: Add your control notification handler code here
MessageBox(_T("하하하"), _T("아아아앙"));
}
void CCtrlPalDlg::OnUpdateCmdUI(CCmdUI* pCmdUI) // 다이얼로그바 버튼 활성화 위해 추가
{
pCmdUI->Enable(TRUE);
}
[출처] [MFC] 다이얼로그바 에서 버튼 활성화 하기.|작성자 수도사
'프로그래밍 > 공부관련' 카테고리의 다른 글
DirectX 예제 XYZ축 라인그리기 및 카메라(뷰행렬)에 관한 예제 (0) | 2010.01.26 |
---|---|
[MFC]다이얼로그바 띄우기 (0) | 2010.01.25 |
shared_ptr (0) | 2010.01.07 |
이제 데이터 멤버는 private , protected를 적용하자. (0) | 2010.01.06 |
about STL - 시퀸스 컨테이너, 연관 컨테이너 간단정의 (0) | 2010.01.01 |