전체 글 389

[MSDN] AFX_EXT_CLASS를 사용하여 내보내기 및 가져오기 - msdn 해석

[MSDN] AFX_EXT_CLASS를 사용하여 내보내기 및 가져오기 Visual C++ AFX_EXT_CLASS를 사용하여 내보내기 및 가져오기 확장 DLL은 AFX_EXT_CLASS 매크로를 사용하여 클래스를 내보내고, 확장 DLL에 링크하는 실행 파일은 이 매크로를 사용하여 클래스를 가져옵니다. AFX_EXT_CLASS 매크로를 사용하는 경우에는 확장 DLL을 빌드하는 데 사용되는 것과 동일한 헤더 파일을 해당 DLL을 링크하는 실행 파일에도 사용할 수 있습니다. DLL에 대한 헤더 파일에서 다음과 같이 클래스 선언에 AFX_EXT_CLASS 키워드를 추가합니다. 코드 복사 class AFX_EXT_CLASS CMyClass : public CDocument { // }; 이 매크로는 전처리기 기호..

MFC 2008.09.04

int *&a; 의 의미

int *&a; 의 의미 참 생소한 표현이다. 우선 다음을 보자. int b = 10; int &a = b; b라는 변수 공간에 10을 넣고 a는 b의 레퍼런스로 작동한다. 실제로 컴파일된 어셈블리 코드를 보면 포인터와 동일한 구조로 처리하고 있음을 볼 수 있다. 한마디로 언어에서 편의성 차원에서 허용한 개념임을 알 수 있다. 익히 알려진 c++ 복사생성자가 인수를 레퍼런스로 처리를 한다. ................................................................. int *&a; 의 의미를 보기위해 다음 예제를 보자. int a = 10; int *b = &a; int *&c = b; 이중포인터를 레퍼런스로 표현한 개념이다. *& 표시 순서를 주의하자. 레퍼런스..

C, C++ 문법 2008.09.03

SDI 기반 MFC 응용 프로그램의 시작 MFC - 순차적 정리... 읽어볼만 하다.

1.5.1 SDI 기반 MFC 응용 프로그램의 시작 MFC 2008/06/22 00:28 http://blog.naver.com/ndkarn/120053203183 이 포스트를 보낸곳 () 1] CSDI_SequenceApp() 눈에 보이지 않는 코드들에 의해서 응용 프로그램 객체는 생성될 거싱며, 이 시점에서 응용 프로그램 객체의 생성자가 호출된다. 2] CSDI_SeqenceApp::InitApplication() 이 멤버 함수는 현재 MFC에서 더 이상 사용하지 않는 구시대의 유물과도 같은 것이다. 현재는 InitInstance()함수로 이관 되었다. 그 이름에서 짐작할 수 있듯이, 본래 이함수는 응용 프로그램 자체를 초기화하는 역할을 수행했었다. 3] CSDI_SequenceApp::InitIns..

MFC 2008.09.03

SDI 기반 MFC 응용 프로그램의 종료과정 - 순차적 정리 자료...읽어볼만하다.

1.5.3 SDI 기반 MFC 응용 프로그램의 종료 MFC 2008/06/26 21:49 http://blog.naver.com/ndkarn/120053354648 이 포스트를 보낸곳 () 메시지 루프가 끝나는 떄가 바로 윈도우 응용 프로그램이 종료되는 시점이라고 했었다. 따라서 응용 프로그램이 종료되는 과정의 첫 번째는 WN_CLOSE 메시지를 받고, 그 메시지 핸들러가 호출되는 시점부터 시작한다. 내용을 하나씩 살펴보자. 1] CMainFrame::OnClose() - Call 닫기 버튼을 눌르거나 혹은 [Alt + F4] 키를 입력하면 WM_CLOSE 메시지가 발생한다. OnClose() 함수는 WM_CLOSE 메시지에 대한 핸들러이다. OnClose() 함수가 리턴하기 전에 내부적으로 아래의 함수..

MFC 2008.09.03

엑셀 오토메이션

Visual Basic에서 엑셀 파일 등을 이용하는 것은 쉽다고 알려져 있으나 Visual C++에서는 어떻게 사용해야 될지 몰라서 검색을 해보니 몇가지 방법이 있었다. 1. Automation을 이용하는 방법이 있으며 http://support.microsoft.com/default.aspx?scid=kb;EN-US;186122 에서 기본 정보를 찾을 수 있다. 2. 좀 더 편한 방법을 찾다 보니 CSpreadSheet 클래스를 이용하는 방법이 있었다. http://www.codeproject.com/KB/database/cspreadsheet.aspx http://www.codeguru.com/cpp/data/mfc_database/microsoftexcel/article.php/c4307/ 둘다 내..

COM, ATL 2008.09.03

스레드 정리 잘 된 글 2

1. Process와 Thread 쓰레드라는 놈을 이해하기 위해선 프로세스란 놈을 먼저 이해해야한다. 프로세스는 EXE란 확장명을 가지고 파일을 실행시켰을 때 실질적으로 컴퓨터의 메모리에 자리잡고 앉아서 실행되는 형태를 말한다. 예를 들면 프로그램을 마우스로 더블클릭하면 OS가 그 프로그램을 실행하기 위해, 알맞게 메모리상에 그 프로세스가 실행가능한 영역을 잡아주고(이런 영역에는 여러가지 영역이 있다.코드부 or 스택부), 프로그램은 거기에 들어앉아서 온갖 사용자의 명령을 다 받으며 자기의 일을 수행한다. 즉, 프로세스는 메모리에 적재된 상태로 동작하는 프로그램이다. 프로세스를 이루는 기본단위가 쓰레드라 볼 수 있다. 프로세스는 적게는 수십개, 많게는 수백개의 Thread로 이루어져 있다. 즉 이런 쓰레..

MFC 2008.09.03

스레드 정리 잘 된 글

1. 개요 현재 대부분의 OS는 프로세스 스케쥴링에 의해 프로그램의 멀티태스킹(Multi-tasking)을 지원하고 있다. 멀티태스킹이란 실행되고있는 프로그램을 일정 단위로 잘라서(slice) 순서대로 CPU를 사용하게끔 하는 것 인데, 사용자는 마치 동시에 여러 개의 프로그램이 실행되는 것처럼 느낄 수 있게 된다. 즉, CPU 사용률을 최대화 하고, 대기시간과 응답시간의 최소화를 가능케 해주는 방법이다. 이번에는 프로세스 한 개만 놓고 보자. 한 프로세스는 구성면에서 [텍스트]-[데이터]-[스택] 영역으로 구성되어있고, 기능면에서는 텍스트의 모듈들은 각각의 역할을 가지고 있다. 프로세스에서의 공유메모리영역을 제외한 부분끼리 묶어서 쓰레드로 만든 후, 이것들을 멀티태스킹처럼 동작시키면 멀티쓰레딩이 되는 ..

MFC 2008.09.03

MFC에 고유의 명령(Command) 메시지 특징

사용자가 메뉴, 툴바, 액셀레이터 등의 항목을 선택했을 때 응용 프로그램 윈도우에게 보내는 메시지를 "명령 메시지"라고 합니다. 명령 메시지는 메뉴, 툴바, 액셀러레이터와 같은 사용자 인터페이스에서 발생되는 WM_COMMAND 메시지를 말합니다. 명령 메시지는 윈도우뿐만 아니라 도큐먼트, 도큐먼트 템플릿, 뷰, 다른 애플리케이션 객체들에 의해 발생될 수 있습니다. 예를 들어 MFC 도큐먼트/뷰 구조를 사용하는 응용 프로그램에서 도큐먼트는 윈도우가 아님에도 불구하고 파일 저장 명령을 처리하도록 되어 있습니다. 그러나 앞에서 메시지를 받을 수 있는 대상은 윈도우 뿐이라 언급했던 것을 기억하실 것입니다. 사실 WM_COMMAND 메시지를 받을 수 있는 대상은 윈도우이지만 MFC에서는 WM_COMMAND 메시지..

MFC 2008.09.02