MFC 8

[MFC] AfxGetApp() 와 AfxGetMainWnd()

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

MFC 2022.01.05

[MFC] CString 클래스 멤버함수 요약

GetLength() : 문자열의 길이 반환 isdigit() : 숫자 일경우 0을 반환 문자일경우 0이 아닌 수를 반환 Delete() : 문자나 문자열을 삭제 / 삭제하려는 위치와 삭제하고자 하는 길이를 지정할 수 있다. 더보기 int Delete( int nIndex, int nCount = 1 ); nIndex : 문자가 삭제될 시작 위치. 첫 문자의 위치는 0 nCount : 삭제될 문자의 수 반환값 : 삭제된 후의 문자열 길이 0부터 시작하니까 5개를 삭제하면 인덱스 4까지 삭제가 된다.! 그 앞 자리 까지 삭제가 됨./

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

[MFC] MessageBoxW

윈도우즈는 멀티바이트코드와 유니코드를 지원한다. 문자열을 인자로 받는 api함수들은 멀티바이트 버전과 유니코드 버전이 따로 있다. MFC 메시지 박스 함수는 내부적으로 api 함수의 메시지 박스 함수를 사용한다. MessageBox 함수는 매크로 함수인데 멀티바이트 환경에서는 MessageBoxA함수가 되고, 유니코드 환경에서는 MessageBoxW함수가 된다. (문자열을 인자로 받는 APi 함수는 멀티바이트 함수이면 끝에 A가 붙고 유니코드 환경이면 w가 붙는다. ) 멀티바이트는 char로 선언된는 1바이트 문자 유니코드는 unsigned short로 선언되는 2바이트 문자이다. 프로젝트 환경을 바꿔주는 방법은 메뉴 - 프로젝트 - 속성 - 구성속성 - 일반 - 문자집합 - 멀티바이트 문자집합사용 을 ..

MFC 2021.12.22