특수 CWinApp 서비스
메시지 루프를 실행 하 고 응용 프로그램을 초기화 하 고 그 뒤를 정리 하는 기회 뿐만 아니라 CWinApp 몇 가지 다른 서비스를 제공 합니다.
셸 등록
기본적으로 MFC 응용 프로그램 마법사는 사용자가 응용 프로그램을 두 번 파일 탐색기 또는 파일 관리자의 클릭으로 만든 데이터 파일을 열 수 있습니다.MFC 응용 프로그램 마법사의 응용 프로그램은 MDI 응용 프로그램입니다 응용 프로그램을 만드는 파일의 확장명을 지정 하는 경우에 호출을 추가 합니다.의 는 Cwinapp 및 EnableShellOpen 의 멤버 함수 CWinApp 에 InitInstance 가 작성 하는 재정의 합니다.
RegisterShellFileTypes응용 프로그램의 문서 형식에 파일 탐색기 또는 파일 관리자를 등록합니다.함수가 관리 Windows 등록 데이터베이스에 항목을 추가 합니다.항목 각 문서 형식을 등록, 파일 형식과 파일 확장명을 연결, 응용 프로그램을 열려면 명령줄에 지정 및 해당 형식의 문서를 열려면 동적 데이터 교환 (DDE) 명령을 지정 합니다.
EnableShellOpen응용 프로그램 사용자가 선택한 파일을 열려면 파일 탐색기나 파일 관리자에서 DDE 명령을 받도록 함으로써 프로세스를 완료 합니다.
이 자동 등록을 지원 CWinApp .reg 파일을 응용 프로그램과 함께 제공 하거나 특별 한 설치 작업을 수행할 필요가 없습니다.
GDI+ 응용 프로그램을 초기화 하려는 경우 (전화 GdiplusStartup 에서 사용자 InitInstance 함수), GDI+ 배경 스레드를 억제할 필요가.
설정 하 여이 수행할 수 있습니다의 SuppressBackgroundThread 의 멤버는 GdiplusStartupInput 구조에 TRUE.스레드의 경우 백그라운드 억제 GDI+의 NotificationHook 및 NotificationUnhook 호출 (볼 GdiplusStartupOutput)를 입력 하 고 응용 프로그램의 메시지 루프를 종료 되기 직전 이루어져야 합니다.좋은 자리를 호출 합니다. 따라서 GdiplusStartup 알림 후크 함수에서 가상 함수를 재정의 됩니다 CWinApp::Run, 아래와 같이:
int CMyWinApp::Run()
{
GdiplusStartupInput gdiSI;
GdiplusStartupOutput gdiSO;
ULONG_PTR gdiToken;
ULONG_PTR gdiHookToken;
gdiSI.SuppressBackgroundThread = TRUE;
GdiplusStartup(&gdiToken,&gdiSI,&gdiSO);
gdiSO.NotificationHook(&gdiHookToken);
int nRet = CWinApp::Run();
gdiSO.NotificationUnhook(gdiHookToken);
GdiplusShutdown(gdiToken);
return nRet;
}
백그라운드 스레드 GDI+를 표시 하지 않으면 주 창을 만들어지기 전에 DDE 명령은 중간 응용 프로그램을 발급할 수 있습니다.DDE 명령 셸에 의해 실행 중간에 오류 메시지가 나타납니까 중단할 수 있습니다.
파일 관리자의 끌어서 놓기
파일 파일 보기 창에서 파일 관리자 또는 파일 탐색기에서 응용 프로그램에서 창으로 끌 수 있습니다.예를 들어, 하나 이상의 파일을에 응용 프로그램에서 파일 이름을 검색 고 해당 파일에 대 한 MDI 자식 창을 열 수 있는 MDI 응용 프로그램의 주 창에서 끌어 올 수 있습니다 수 있습니다.
끌어서 파일을 사용 하 고 응용 프로그램에서 삭제 MFC 응용 프로그램 마법사에 대 한 호출을 씁니다의 CWnd 멤버 함수 DragAcceptFiles 사용자의 주 프레임 창에 대 한 사용자 InitInstance.끌어서 놓기 기능을 구현 하지 않을 경우 해당 호출을 제거할 수 있습니다.
[!참고]
보다 일반적인 끌어서 놓기 기능을 구현할 수도 있습니다 — 사이 또는 문서 내에서 데이터를 끌어-OLE로.자세한 내용은 문서를 참조 하십시오. 드래그 앤 드롭 (OLE).
대부분의 추적 최근에 사용한 문서
열고 파일을 닫을 때 응용 프로그램 개체는 4 개의 가장 최근에 사용한 파일을 추적.이러한 파일의 이름은 파일 메뉴에 추가한 변경 될 경우 업데이트 합니다.프레임 워크 어느 레지스트리에서 또는.ini 파일에서 프로젝트와 동일한 이름 가진이 파일 이름을 저장 하 고 응용 프로그램이 시작 될 때이 해당 파일에서 읽습니다.InitInstance 재정의에 대 한 호출에 대 한 MFC 응용 프로그램 마법사를 만드는 CWinApp 멤버 함수 LoadStdProfileSettings, 정보를 레지스트리에서 로드 또는.ini 파일을 포함 한 가장 최근에 사용한 파일 이름입니다.
이러한 항목은 다음과 같이 저장 됩니다.
Windows 2000 및 이후 버전을 Windows NT 레지스트리 키에 값이 저장 됩니다.
Windows 3.x에서 승리에 값이 저장 됩니다.INI 파일입니다.
Windows 95 및 나중에 값 WIN의 캐시 된 버전에 저장 됩니다.INI입니다.