// 기존 콘솔 응용 프로그램에서 사용하는 헤더파일
#include <iostream>
using namespace std;
// mfc에서 사용하는 헤더 파일
#include <afxwin.h>
// 콘솔 응용프로그램의 진입점 : main
int main(int argc, char** argv) {
return 0;
}
// 윈도우 응용프로그램의 진입점 -> C style
BOOL WinMain(...) {
return 0;
}
// 윈도우 응용 프로그램 클래스로 사용하는 경우
//CWinApp : 응용프로그램을 담당하는 클래스
class CMyApp : public CWinApp {
public:
virtual BOOL InitInstance() override{ // 진입점 : 시작함수
return FALSE;
}
virtual int ExitInstance() override { // 종료시점
return 0;
}
};
CMyApp theApp; // 전역 객체 생성
// char : 1byte
// wchar_t : 2byte
char* p1 = "Hello World";
wchar_t* p2 = L"Hello World";
// MFC는 기존과 다른게 2가지 문자 타입을 가짐
#ifdef _UNICODE
#define TCHAR wchar_t
#define _T(str) L(str)
#else
#define TCHAR char
#define _T(str) str
#endif // _UNICODE
// 내부적으로 구성되어 있음
TCHAR* p1 = _T("Hello World");
// _UNICODE 일때 : wchar_t* p1 = L"Hello World";
// 일반적일 때 : char* p1 = "Hello World";
//
// unicode 설정 : 속성 - 고급 - 문자 집합 - 유니코드 문자 집합 사용
// 그외 설정 : 속성 - 고급 - 문자 집합 - 설정 안 함 / 멀티바이트 문자 집합 사용
//char* str;
//char str[]; //-> LPSTR
// L : long(아무의미없음) / P : pointer / STR : string
// near pointer (64K) -> 현재는 사라짐
// long pointer (64K 이상)
// const char* // -> LPCSTR
// L : long(아무의미없음) / P : pointer / C : const / STR : string
//wchar_t* wtsl;
//wchar_t wstr2[]; // -> LPWSTR
// L : long(아무의미없음) / P : pointer / W : wide / STR : string
// LPCTSTR : const char*, const wchar_t*
// LPTSTR : char*, wchar_t*
/*long LONG
short SHORD
unsigned short WORD
unsigned int DWORD;*/
//AfxMessageBox(L"hello world"); // unicode
//AfxMessageBox("hello world"); // ansi code
AfxMessageBox(_T("hello world")); // MFC 함수 (Win32API로 짜져있음)
//::MessageBox(); // Win32API 버전 template
//::MessageBoxW(); // Win32API 버전 -> unicode
//::MessageBoxA(); // Win32API 버전 -> ansi code
// unicode와 ansi code가 따로 구현되어 있음
개발자를 위한 코드
#define IN
#define OUT
// 의미는 없지만 개발자가 이해하기 쉽도록 한 코딩방식
int sum(IN const int a, IN const int b);
int sum(const int a, const int b);
void sum(OUT const int a, OUT const int b);
void sum(const int a, const int b);
AfxMessageBox(_T("hello world"));
::MessageBox(NULL, _T("hello world"), _T("step2"), MB_OK)