다음을 통해 공유


특수 CWinApp 서비스

메세지 루프를 실행하는 것과 응용 프로그램을초기화할 수 있는 기회를 제공하는것 뿐만아니라 그것을 정리할 수 있습니다. CWinApp 는 다양한 서비스를 제공합니다.

셸 등록

기본적으로 MFC 응용 프로그램 마법사는 쉽게 파일 탐색기나 파일 관리자에서 두 번 클릭 하여 응용 프로그램에서 만든 데이터 파일을 열 수 있습니다. 응용 프로그램이 MDK 응용 프로그램이고 응용 프로그램에서 만든 파일에 대한 확장명을 지정하는 경우, MFC 응용 프로그램 마법사는 RegisterShellFileTypes 에 호출을 추가하고 InitInstance 오버라이드에 CWinAppEnableShellOpen 멤버 함수를 추가합니다.

RegisterShellFileTypes는 파일 탐색기 또는 파일 관리자를 사용 하여 응용 프로그램의 문서 형식을 등록합니다. 함수는 Windows에서 관리 하는 등록 데이터베이스에 항목을 추가 합니다. 항목은 각 문서 형식을 등록, 파일 형식과 파일 확장명 연결, 명령줄에서 응용 프로그램을 지정 및 해당 형식의 문서를 동적 데이터 교환 (DDE) 명령을 지정 합니다.

EnableShellOpen는 응용 프로그램이 사용자가 선택한 파일을 열려면 파일 탐색기 또는 파일 관리자에서 DDE 명령을 받을 수 있도록 하여 프로세스를 완료 합니다.

CWinApp 에서 자동 등록 지원은 응용 프로그램이나 특별한 설치 작업을 사용하여 a .reg 파일을 이동시킬 필요를 없앱니다.

응용 프로그램에서 GDI+를 초기화하려면 (InitInstance 함수에서 GdiplusStartup 를 호출하여) GDI+ 배경 스레드를 억제해야 합니다.

TRUE 에 대한 GdiplusStartupInput 구조체의 SuppressBackgroundThread 멤버를 설정하여 할수 있습니다. GDI+ 배경 스레드를 억제 할때, NotificationHookNotificationUnhook 는 (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 응용 프로그램 마법사는 InitInstance 에서 메인 프래임 창에 대해CWnd 멤버 함수DragAcceptFiles 에 대한 호출을 씁니다. 드래그 앤 드롭 기능 구현을 원하지 않으면 제거할 수 있습니다.

참고

일반적인 드래그 앤 드롭을 구현할 수 있습니다-또는 문서 내에서 데이터를 끕니다. -OLE를 사용하여더 자세한 정보는 Drag and Drop (OLE) 를 참조하십시오.

최근에 사용한 문서의 추적을 유지합니다.

사용자가 파일을 열고 닫을 때, 응용 프로그램 개체는 가장 최근에 사용한 파일의 추적을 유지합니다. 이 파일의 이름은 파일 메뉴에 추가 되며 변경 될 경우 업데이트 됩니다. 프레임 워크는 레지스트리 또는.ini 파일을 프로젝트와 같은 이름 사용 하여 이 파일 이름을 저장 하고 응용 프로그램이 시작 될 때 해당 파일에서 읽습니다. MFC 응용 프로그램 마법사가 생성한 InitInstance 오버라이드는 가장 최근에 사용된 파일을 포함하는 레지스트리 또는 .ini file 파일에서 정보를 로드하는 CWinApp 멤버 함수 LoadStdProfileSettings 에 대한 호출을 포함합니다.

이러한 항목은 다음과 같이 저장 됩니다.

  • Windows NT, Windows 2000 및 이후에서 값은 레지스트리 키에 저장됩니다.

  • Windows에서 3.x에서, 값은 WIN.INI 파일에 저장됩니다.

  • Windows 95 및 이후에서,값은 WIN.INI 의 캐시된 버전에 저장됩니다.

참고 항목

개념

CWinApp: 응용 프로그램 클래스