게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
탭컨트롤 안의 자식다이얼로그 초기화 시점은 언제인가요?
게시물ID : programmer_18498짧은주소 복사하기
작성자 : 법-규
추천 : 0
조회수 : 557회
댓글수 : 2개
등록시간 : 2016/09/23 22:59:41
옵션
  • 본인삭제금지
탭컨트롤이 위치한 Main_Form_View가 있구요
그 탭1, 탭2에 각각 들어갈 Tab1, Tab2 클래스가 있습니다

다음은 Main_Form_View의 OnInitDialog에서 두 탭을 초기화한 내용입니다.

BOOL CMain_Form_View::OnInitDialog() 
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
m_CtrlTab.InsertItem(0, _T("파일 리스트")); //tab1
m_CtrlTab.InsertItem(1, _T("폴더 경로")); //tab2

CRect Rect;
m_CtrlTab.GetClientRect(&Rect); //탭의 크기를 구함

m_Tab1.Create(IDD_DIALOG_ROUTE1, &m_CtrlTab); //탭1 생성
m_Tab1.SetWindowPos(NULL, 5, 25, Rect.Width()-7, Rect.Height()-27, 
SWP_SHOWWINDOW | SWP_NOZORDER);
m_pwndShow = &m_Tab1; //탭1 지정
m_Tab2.Create(IDD_DIALOG_ROUTE2, &m_CtrlTab); //탭2 생성
m_Tab2.SetWindowPos(NULL, 5, 25, Rect.Width()-7, Rect.Height() -27,
SWP_NOZORDER);
m_Tab1.ShowWindow(SW_SHOW); //탭1 SHOW
m_Tab2.ShowWindow(SW_HIDE); //탭2 HIDE

//////////////////////////////////////////////////////////////////


return TRUE;  // return TRUE unless you set the focus to a control
              // EXCEPTION: OCX Property Pages should return FALSE
}

근데 이때 탭2의 소스에
BOOL CTab2::OnInitDialog() 
{
CDialog::OnInitDialog();

AfxMessageBox(m_Pathname);
return TRUE;
}
위와 같은 소스를 추가하면 Main_Form_View의 두번째 탭에다
탭2의 다이얼로그가 초기화 될때 메세지박스가 떠야 하는거 아닌가요?

Create도 OnCreate도 안뜨더라구요
혹시몰라 해본 DoModal에서도요.

만약 탭2의 내용을 초기화 하고싶다면 어디서 해야하나요?


+
OnInitDialog 함수는

//{{AFX_MSG(CTab2)
virtual BOOL OnInitDialog();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()

이와같이 헤더파일 안의 MSG 함수 구분하는 주석 사이에 선언되는데 
다른 함수와 달리 afx_msg가 안달려있어서 그런지 cpp에선 

BEGIN_MESSAGE_MAP(CTab2, CDialog)
//{{AFX_MSG_MAP(CTab2)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

이처럼 별도로 메세지를 받질않네요. 이건 왜이런건가요?
WM_InitDialog의 메세지는 바로 프로시저로 전달되는건가요?

질문이 많아 죄송합니다(_ _)

전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호