IT·컴퓨터
MFC 애플리케이션을 종료하지 않고 유지하는 일반적인 기술
기부전사
2024. 4. 1. 09:30
1. 메시지 루프 유지
#include <afxwin.h>
class CMyApp : public CWinApp
{
public:
virtual BOOL InitInstance()
{
// ... 애플리케이션 초기화 코드 ...
// 메시지 루프 유지
while (PumpMessage())
{
// 메시지 처리
}
return FALSE; // 메시지 루프를 빠져나가지 않도록 합니다.
}
};
CMyApp thetheApp;
MFC 애플리케이션은 주로 메시지 기반으로 동작합니다. 메인 함수에서 메시지 루프를 유지하면 애플리케이션이 종료되지 않고 계속 실행됩니다. 메시지 루프는 CWinApp::Run() 함수에서 처리됩니다.
2. 윈도우 닫기 버튼 처리
LRESULT CMyWnd::OnClose(WPARAM wParam, LPARAM lParam)
{
// 윈도우 닫기 버튼(X 버튼)을 눌렀을 때 호출되는 함수
// 여기서 윈도우를 종료하지 않도록 처리
return 0;
}
윈도우의 닫기 버튼(X 버튼)을 누를 때 메인 윈도우를 종료하지 않도록 처리할 수 있습니다. 이를 위해 윈도우 클래스에서 WM_CLOSE 메시지를 처리하고 DestroyWindow() 함수를 호출하지 않도록 합니다.
3. 종료 확인 대화 상자
int nResult = AfxMessageBox(_T("정말로 종료하시겠습니까?"), MB_YESNO | MB_ICONQUESTION);
if (nResult == IDYES)
{
// 종료 처리
// ...
}
사용자가 애플리케이션을 종료하려고 할 때 종료 여부를 확인하는 대화 상자를 표시할 수 있습니다. 이를 통해 사용자가 실수로 애플리케이션을 종료하는 것을 방지할 수 있습니다.
4.트레이 아이콘 사용
// 트레이 아이콘 추가
NOTIFYICONDATA nid;
nid.cbSize = sizeof(NOTIFYICONDATA);
// ... 아이콘 설정 및 기타 필요한 정보 설정 ...
Shell_NotifyIcon(NIM_ADD, &nid);
// 트레이 아이콘 클릭 시 처리
void CMyWnd::OnTrayIconClick()
{
// 트레이 아이콘을 클릭했을 때 호출되는 함수
// 애플리케이션을 복원하거나 다른 작업 수행
}
애플리케이션을 종료하지 않고 시스템 트레이에 아이콘을 표시하여 백그라운드에서 계속 실행되도록 할 수 있습니다.
반응형