전역 함수란(Global Function)?
특정 클래스에 속하지 않고 어디서든지 호출할 수 있는 함수.
함수 이름과 매개변수 리스트로 정의되며, 호출되는 곳에서 독립적으로 존재한다. 전역 함수는 클래스 멤버 함수와 달리 클래스에 속하지 않기 때문에 this 포인터를 사용할 수 없으며, 전역 변수에 대한 접근도 제한된다.
전역 함수를 사용하는 이유?
특정 클래스에 속하지 않는 함수를 편하게 호출할 수 있다. 일반적으로 C++ 네임스페이스를 사용하여 구분하며, MFC에서도 동일한 방식으로 구현된다. ex. C++ printf(), scanf()
MFC에서 제공하는 일부 전역 함수
함수이름 | 기능 |
AfxMessageBox() | 메세지 상자를 표시한다. |
AfxGetApp() | 응용 프로그램 객체의 주소를 리턴 |
AfxGetMainWnd() | 메인 윈도우 객체의 주소를 리턴 |
AfxGetAppName() | 응용 프로그램의 이름을 리턴 |
AfxGetlnstanceHandle() | 인스턴스 핸들을 리턴 |
AfxRegisterWndClass() | 윈도우 클래스를 등록 |
AfxBeginThread() | 스레드를 시작 |
AfxEndThread() | 스레드를 종료 |
함수의 사용 예시
1. AfxMessageBox() 함수
void CMainFrame::OnLButtonDown(UNIT nFlags, CPoint point)
{
AfxMessageBox(_T("마우스 클릭!"));
}
2. AfxGetApp(), AfxGetMainWnd(), AfxGetAppName() 함수
#include <afxwin.h>
#include <locale.h>
....
BOOL ChelloApp::InitInstance()
{
_tsetlocale(LC_ALL, T(""));
m_pMainWnd = new CMainFrame;
m_pMainWnd->ShowWindow(m_nCmdShow);
return TURE;
}
....
void CMainFrame::OnButtonDown(UNIT nFlags, CPoint point)
{
TRACE(_T("응용 프로그램 객체 주소 : %p = %p\n"), AfxGetApp(), &theApp);
TRACE(_T("메인 윈도우 객체 주소 : %p = %p\n"), AfxGetMainWnd(), theApp.m_pManWnd);
TRACE(_T("응용 프로그램 이름 : %s\n"), AfxGetAppName());
}
3. AfxGetlnstanceHandle()
void CMainFrame::OnLButtonDown(UINT nFlags, CPoint point)
{
//인스탠스 핸들값은 실행 파일이 로드된 가상 메모리 주소
TRACE("인스턴스 핸들: %p\n", AfxGetInstanceHandle());
}
'통신 > 데이터통신시스템' 카테고리의 다른 글
[MFC] LNK1168: 쓰기용으로 열 수 없습니다 오류 (0) | 2023.03.28 |
---|---|
[MFC] 식별자 정의되어 있지 않습니다 (0) | 2023.03.21 |
[MFC] Object 클래스 : 타당성 점검 (0) | 2023.02.24 |
[MFC] 매크로를 클래스의 선언부 or 정의부에 선언하는 이유 (0) | 2023.02.23 |
[MFC] CObject 클래스 : 직렬화(serialization) 기능 (0) | 2023.02.23 |