파일을 포함시킬때 #include다음에 <>괄호와 ""타입의 두가지 형태가 있다
#include <stdio.h>
C에서 제공하는 표준 헤더파일을 포함시키고자 할 때 사용
컴파일러 옵션중에 헤더파일의 디렉토리를 설정하는 옵션이 있는디 <>를 사용하면
표준 헤더파일 디렉토리에서 지정한 파일을 찾는다
#include "comm.h"
사용자가 만든 헤더파일을 포함시키고자 할 때 ""를 사용한다.
소스파일과 같은 디렉토리에서 헤더파일을 먼저 찾아본다.
하지만 <>는 표준디렉토리를 검색하고 현재 프로젝트의 디렉토리도 검색하고 ""는 현재 디렉토리를
검색하고 표준디렉토리도 검색하므로 크게 구분할 필요는 없지만 알아둬야지..
'MFC > Microsoft Foundation Class' 카테고리의 다른 글
[MFC] TIMER 사용시 여러개의 CALLBACK 함수 만들기 (0) | 2011.01.24 |
---|---|
Formview전환시 사용되는 함수들 (0) | 2011.01.19 |
SDI(Single Document Interface)에서 DialogBar와 FormView를 사용한 컨트롤 (1) | 2011.01.17 |
DialogBar 추가하기 (0) | 2011.01.13 |
SubclassDlgItem() (0) | 2011.01.05 |
[기본자료]
- SDI스타일의 프로젝트
- DialogBar
- 페이지 수 만큼의 Formview
[순서]
- SDI 프로젝트를 생성하면 APP,Doc,View의 3개의 클래스로 나누어지게 된다
- 1개의 DialogBar에 5개의 버튼을 추가하고 이벤트를 연결(비활성화 해제방법은 블로그내에 검색)
- 5개의 Formview를 리소스에 추가하고 컨트롤을 배치한다.
- 처음 실행화면이 기본의 View가 아닌 사용자가 만든 Page로 하기위하여 APP클래스의
InitInstance 함수의 CSingleDocTemplate생성시 마지막 RUNTIME_CLASS의 뷰 부분을 사용자가 만들 Formview로 변경
void CTopMenu::OnButton1() { ::PostMessage(AfxGetMainWnd()->m_hWnd,WM_ON_FORM_CHANGE,WM_PAGE1,0); } void CTopMenu::OnButton2() { ::PostMessage(AfxGetMainWnd()->m_hWnd,WM_ON_FORM_CHANGE,WM_PAGE2,0); } void CTopMenu::OnButton3() { ::PostMessage(AfxGetMainWnd()->m_hWnd,WM_ON_FORM_CHANGE,WM_PAGE3,0); } void CTopMenu::OnButton4() { ::PostMessage(AfxGetMainWnd()->m_hWnd,WM_ON_FORM_CHANGE,WM_PAGE4,0); } void CTopMenu::OnButton5() { ::PostMessage(AfxGetMainWnd()->m_hWnd,WM_ON_FORM_CHANGE,WM_PAGE5,0); }각 버튼을 누르면 MainFrame으로 메세지가 전송된다. 메세지를 받은 MainFrame에서는..
afx_msg void OnFormChange(WPARAM w,LPARAM l); // 메세지 함수를 추가하고 ON_MESSAGE(WM_ON_FORM_CHANGE,OnFormChange) //메세지 맵에 등록한다... //호출되는 함수 void CMainFrame::OnFormChange(WPARAM w, LPARAM l) { int p_index = (int)w;//페이지 번호를 WPARAM으로 받는다 switch (p_index)//페이지 번호에 따라서 페이지를 생성 { case WM_PAGE1: m_pageARR[p_index] = (CView*)new CPage1; break; case WM_PAGE2: m_pageARR[p_index] = (CView*)new CPage2; break; case WM_PAGE3: m_pageARR[p_index] = (CView*)new CPage3; break; case WM_PAGE4: m_pageARR[p_index] = (CView*)new CPage4; break; case WM_PAGE5: m_pageARR[p_index] = (CView*)new CPage5; break; break; } CView* m_nowview=GetActiveView();//현재 보여지고 있는 PAGE의 VIEW를 가져온다 CCreateContext con;//CONTEXT만들기 con.m_pCurrentDoc = m_nowview->GetDocument(); // 현재 보여지고 있는 화면의 Document를 Context에 저장 m_pageARR[p_index]->Create(NULL,NULL,0L,CFrameWnd::rectDefault,this,2,&con);//Formview를 생성한다. m_pageARR[p_index]->OnInitialUpdate();//업데이느 SetActiveView(m_pageARR[p_index]);//활성화시킨다 BOOL re = m_pageARR[p_index]->ShowWindow(SW_SHOW);//화면에 띄운다 re = m_nowview->ShowWindow(SW_HIDE); //기존의 화면은 가린다. m_pageARR[p_index]->SetDlgCtrlID(AFX_IDW_PANE_FIRST); // 첫번째 PANE으로 설정한다 RecalcLayout(); }
'MFC > Microsoft Foundation Class' 카테고리의 다른 글
Formview전환시 사용되는 함수들 (0) | 2011.01.19 |
---|---|
#include의 <>와 ""의 비교 (0) | 2011.01.19 |
DialogBar 추가하기 (0) | 2011.01.13 |
SubclassDlgItem() (0) | 2011.01.05 |
서브클래싱 [PreTranslateMessage함수] (1) | 2010.12.20 |
1. Resources 메뉴에서 Insert->Dialog->DialogBar를 추가한다.
2. 다이얼로그바가 생성되면 더블클릭하여 클래스를 생성(CDialog베이스로 생성된다)
3. Base Class를 CDialogBar 클래스로 변경(Error발생 CDialog->CDialogBar로 변경)
4. 코드추가-메인프레임의 OnCreate에서 기존의 툴바 대신 사용자가 만든 툴바로 변경생성)
if(!m_Topmenu.Create(this,IDD_DIALOGBAR,CBRS_ALIGN_TOP,IDD_DIALOGBAR)) { TRACE0("Failed to create toolbar\n"); return -1; // fail to create } m_Topmenu.EnableDocking(CBRS_ALIGN_ANY); EnableDocking(CBRS_ALIGN_ANY); DockControlBar(&m_Topmenu);
5. DialogBar가 생성되었으나 버튼이 비활성화 상태이다.
6. 버튼을 활성화 시키기 위해서는 ON_UPDATE_COMMAND_UI 메시지를 사용
7. 메시지 함수를 선언
void CDialogEx::OnUpdateCmdUI(CCmdUI* pCmdUI) { pCmdUI->Enable(TRUE); }
11. 메시지 핸들러 함수 바인딩
BEGIN_MESSAGE_MAP(CDialogEX, CDialogBar) ON_UPDATE_COMMAND_UI(IDC_BUTTON1, OnUpdateCmdUI) ON_UPDATE_COMMAND_UI(IDC_BUTTON2, OnUpdateCmdUI) END_MESSAGE_MAP()
'MFC > Microsoft Foundation Class' 카테고리의 다른 글
#include의 <>와 ""의 비교 (0) | 2011.01.19 |
---|---|
SDI(Single Document Interface)에서 DialogBar와 FormView를 사용한 컨트롤 (1) | 2011.01.17 |
SubclassDlgItem() (0) | 2011.01.05 |
서브클래싱 [PreTranslateMessage함수] (1) | 2010.12.20 |
SENDMESSAGE와 POSTMESSAGE 그리고 POSTTHREADMESSAGE (0) | 2010.11.29 |