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()
{
// 트레이 아이콘을 클릭했을 때 호출되는 함수
// 애플리케이션을 복원하거나 다른 작업 수행
}
애플리케이션을 종료하지 않고 시스템 트레이에 아이콘을 표시하여 백그라운드에서 계속 실행되도록 할 수 있습니다.
반응형
'IT·컴퓨터' 카테고리의 다른 글
C++ Vector<> / begin() 구문 기초 (0) | 2024.04.02 |
---|---|
[펌] 네, 정말 C는 C++보다 빠릅니다. (1) | 2024.04.02 |
GetAsyncKeyState 함수 (0) | 2024.03.27 |
MSVCP140.dll과 C++ 런타임 라이브러리 (0) | 2024.03.27 |
Windows 11, 오른쪽 시계 옆에 아이콘 안 나올 때( 시스템 트레이 ) (0) | 2024.03.23 |