MFC 에서 창 을 트 레이 로 최소 화 하 는 원리 및 작업 절차

절차/방법(1)원리 1.최소 화 원리:먼저 창 을 숨 긴 다음 오른쪽 아래 에 아이콘 을 그립 니 다.2.복구 의 원리:창 을 표시 하고 트 레이 에 있 는 그림 을 삭제 합 니 다.(2)프로그램 구현 1.사용자 정의 메시지 WMSHOWTASK: #define WM_SHOWTASK (WM_USER+1)2.MFC 의::OnSys Command(UINT nID,LPARAM lParam)함수 체 에 명령 응답 if(nID=SC 추가MINIMIZE) ToTray(); //트 레이 함수 최소 화 3,메시지 맵 에 ON 추가MESSAGE(WM_SHOWTASK,OnShowTask); //그 중 WMSHOWTASK 는 메시지 이름 이 고 OnShowTask 는 자신 이 정의 한 메시지 응답 함수 이 며 뒤에 설명 이 있 습 니 다.(3)구체 적 인 함수 내용 1.트 레이 함수
 
void CMyDlg::ToTray()
{
NOTIFYICONDATA nid;
nid.cbSize=(DWORD)sizeof(NOTIFYICONDATA);
nid.hWnd=this->m_hWnd;
nid.uID=IDR_MAINFRAME;
nid.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP ;
nid.uCallbackMessage=WM_SHOWTASK;//
nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
strcpy(nid.szTip," "); //
Shell_NotifyIcon(NIM_ADD,&nid); //
ShowWindow(SW_HIDE); //
}
로 최소 화 2.복구 인터페이스 함수 가 헤더 파일 에서 메시지 응답 함수
 
afx_msg LRESULT OnShowTask(WPARAM wParam,LPARAM lParam) ;
//wParam ID, lParam
LRESULT CMyDlg::OnShowTask(WPARAM wParam,LPARAM lParam)
{
if(wParam!=IDR_MAINFRAME)
return 1;
switch(lParam)
{
case WM_RBUTTONUP:// , “ ”
{
LPPOINT lpoint=new tagPOINT;
::GetCursorPos(lpoint);//
CMenu menu;
menu.CreatePopupMenu();//

menu.AppendMenu(MF_STRING,WM_DESTROY," "); // “ ”, WM_DESTROY ( ), 。
menu.TrackPopupMenu(TPM_LEFTALIGN,lpoint->x,lpoint->y,this); //
HMENU hmenu=menu.Detach();
menu.DestroyMenu(); //
delete lpoint;
} break;
case WM_LBUTTONDBLCLK: //
{
this->ShowWindow(SW_SHOW);//
DeleteTray();
} break;
default: break;
}
return 0;
}
를 정의 하여 트 레이 아이콘 함수 삭제
 
void CMyDlg::DeleteTray()
{
NOTIFYICONDATA nid;
nid.cbSize=(DWORD)sizeof(NOTIFYICONDATA);
nid.hWnd=this->m_hWnd;
nid.uID=IDR_MAINFRAME;
nid.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP ;
nid.uCallbackMessage=WM_SHOWTASK; //
nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
strcpy(nid.szTip," "); // “ ”
Shell_NotifyIcon(NIM_DELETE,&nid); //
}

좋은 웹페이지 즐겨찾기