MFC 4

[MFC] AfxGetApp() 와 AfxGetMainWnd()

윈도우즈 프로그램의 기본적인 실행 구조는 다음과 같다. 실행파일을 실행 시키면 하나의 프로세스가 생성된다. 프로세스는 단독으로 수행될 수 없고 스레드에 의해 수행된다. 스레드는 프로세스의 메모리 공간을 수행할 책임을 갖게 된다. 프로세스는 하나 이상의 스레드를 갖으면 최초의 스레드를 Primary Thread 라고 부른다. MFC로 만든 응용 프로그램 역시 윈도우즈 프로그램이므로 하나 이상의 스레드를 갖는다. Primary Thread 역할을 하는 것으 CWinApp 클래스의 파생클래스인 CXXApp 클래스가 스레드를 생성한다. CToolApp 같은 최종 보여지는 클래스를 말한다. 자세히 말하면 MFC 응용프로그램의 유일한 전역 객체인 CXXApp의 객체가 진입점 함수(WinMain, wWinMain) ..

MFC 2022.01.05

[MFC] MFC 특징 복습

MFC는 클래스 라이브러리 이다. MFC를 공부해야하는 이유 : 실무를 하다가 모르는 것이 있으면 조언을 구하거나 인터넷에 원하는 자료를 검색해서 문제를 해결 해야한다. 그 자료나 소스가 MFC로 되어 있을 경우 스스로 API에 적용 할 수 있어야 한다. MFC는 OOP 기반이므로 캡슐화 추상화 정보은폐 상속 다형성 들의 언어적인 특성을 가진다. MFC는 모든것을 객체로 표현하고 객체를 모아 프로그램을 만든다. 객체안에 포함된 멤버함수로 이 객체의 모든 속성을 조절 할 수있다. MFC는 프레임워크라는 미리 만들어진 고드의 지원을 받기 때문에 모든것을 직접 코딩하지 않아도 미리 프로그래밍 되어있는 기능들을 공짜로 가져다가 쓸 수 있다. 기반 클래스에는 각 요소의 기본 기능이 이미 프로그래밍 되어있으므로 파..

MFC 2021.12.27

[MFC] 윈도우창 관련 함수(클라이언트창 크기 셋팅)

AfxGetMainWnd(); 함수는 현재 스레드의 메인 윈도우 핸들을 리턴한다. 전역함수로 선언 되어있다. 현재스레드의 메인 윈도우의 핸들을 부르는 것이기 때문에 스레드를 사용하는 프로그램에서는 원하지 않은 결과를 리턴할 수 있다. 즉, 다른 스레드에서 이 함수를 호출 할 경우 올바른 MainWnd를 호출할 수 없게 된다. 해결 방법 : AfxGetMainWnd() // 대신 AfxGetApp()->GetMainWnd()// 를 사용 참고: https://frostguy.tistory.com/37 AfxGetMainWnd()에서 문제가 발생할 경우 -AfxGetApp AfxGetApp() 전역 함수를 호출하게 되면 MFC 응용프로그램의 최초에 생성된 스레드의 app 를 반환해 준다. - AfxGetMa..

MFC 2021.12.24

[MFC] MAX_PATH

path(경로)를 얻기 위해, 변수 배열을 선언하고 그 크기를 MAX_PATH 를 해준다. TCHARszFullPath[MAX_PATH] = L""; MAX_PATH는 260으로 우리가 지정하는 경로의 최대범위는 MAX_PATH크기 내에서 설정이 가능하다. 드라이브면 폴더구분문자 파일 확장자 등을 포함하는 경로 전체 길이를 말한다. 경로의 이름은 260 이하로, 경로를 문자열 형태에서 배열로 저장하기 위한 수단이다.

MFC 2021.12.23