본문 바로가기
컴퓨터과학[2-1]/knou_[2-1]Visual_C

MFC 윈도우 프로그래밍(최호성)101page 풀이

by boolean 2015. 3. 29.
728x90

윈도우 프로그래밍(최호성)101page 풀이


  1. char*형의 전역변수를 선언하고 InitInstance() 함수에서 이 변수에 256바이트 길이의 메모리를 할당한 후 임의의 문자열을 저장 하도록 하고 ExInstance() 함수에서 메모리를 해제 하도록 해 봅시다.
  2. 5번 실습을 마친 상태에서 메인 프레임 윈도우가 화면에 나타나기 전에 문자열을 메시지 상자를 이용해서 출력해 봅니다. 너무나 다양한 곳에 코딩이 가능하겠지만 어디가 적합한 위치인지 스스로 고민해서 코딩해 봅시다.

윈도우 프로그래밍(최호성) 중에서

전역변수 STATIC, EXTERN

일반 전역변수






STATIC







EXTERN

사용하고자 하는 함수 안쪽 시작부분이나 바로 밖에 시작전에 선언한다, [자료형 변수명]

[extern 자료형 변수명] 형태로 stdafx.h 에 추가해서 프로젝트 전체 전역변수로 사용할 수 있다.

파일내부 어디서나 선언 가능하나 파일 내부에서만 사용 가능하다

static의 성질은 정적바인딩으로서 어느 위치에서 선언되거나 compile단계에서 선행처리기 다음으로 실행된다. 그래서 연결된 파일 어느곳에서나 사용 가능한 것이다.

만일 다른 파일에서 사용하고자 할 경우 header파일에 선언해서 사용하고자 하는 파일에서 include시켜 사용한다.

일반 전역변수나 일반 변수를 [extern 자료형 변수명]의 형태로 사용하고자 하는 곳에서 선언해 사용하는데 stdafx.h에 선언하는 것을 추천한다

해당 project 어디서나 사용할 수 있다.

InitInstance 에 전역변수를 선언해보자


TCHAR *Mystr;                                        // 일반 전역변수로 변수 선언
// CHelloSDIApp initialization
BOOL CHelloSDIApp::InitInstance()
{
	INITCOMMONCONTROLSEX InitCtrls;
	InitCtrls.dwSize = sizeof(InitCtrls);
	
	InitCtrls.dwICC = ICC_WIN95_CLASSES;
	InitCommonControlsEx(&InitCtrls);
	AfxMessageBox(_T("InitCtrls"));
	Mystr = (TCHAR *) new TCHAR[255];    // 255 바이트 크기로 메모리 할당
	lstrcpy(Mystr,TEXT("테스트 입니다."));  // 전역변수에 문자 삽입

stdafx.h 에 extern 전역변수를 선언해보자


extern TCHAR *Mystr;    //stdafx.h  제일 밑줄에 extern 전역변수를 선언했다.

MainFrm.cpp에 메인프레임 함수를 오버라이드 해보자


CMainFrame::CMainFrame()
{
	// TODO: add member initialization code here
	AfxMessageBox(Mystr);   //메인 프레임 윈도우가 화면에 나타나기 전에 
                                                문자열을 메시지 상자를 이용해서 출력
}

ExInstance() 함수에서 메모리를 해제 해보자


CMainFrame::~CMainFrame()
{
delete [] Mystr;      //이렇게 해도 되지만 저자 의 취지에 맞게 해보자.
}
//---------------------------------------------------------
int CHelloSDIApp::ExitInstance()
{
	//TODO: handle additional resources you may have added
	AfxOleTerm(FALSE);
	delete [] Mystr;                // 메모리를 해제 시켰다.
	return CWinApp::ExitInstance();
}

'컴퓨터과학[2-1] > knou_[2-1]Visual_C' 카테고리의 다른 글

MFC Keyboard & Message  (0) 2015.04.01
MFC 코드의 흐름  (0) 2015.03.30
MFC Control Video  (0) 2015.03.28
Visual C++ 8강 MFC 프레임 워크  (0) 2015.01.24
Visual C++ 7강 MFC SDI 프로그램의 응용  (0) 2015.01.24

댓글