ÄúÏÖÔÚµÄλÖÃÊÇ£º Èí¼þ > ¿ª·¢ÕßÍøÂç > ³ÌÐò·½ÖÛ > ¿ª·¢×¨À¸ > Visual C++¿ª·¢ > ÕýÎÄ
¡¤ËٳɵçÄÔ¾«Ó¢£¨°ü·ÖÅ䣩°×Áì¸ßнһ×å´ÓÕâÀ↑ʼ



-JavaÌ×½Ó×Ö±à³Ì£¨Ï£©
-MediaStudio Pro 6.5½Ì³Ì
-Èý¿îÐ¶ÔØÈí¼þ×îÐÂÊÔÓÃ
-»ùÓÚVisual C++µÄWinsock APIÑо¿

ÓÃvc++4.0ʵÏÖwin95socket±à³Ì
2000-05-29¡¤ ¡¤Áõ½Ü¡¤¡¤-

p>¡¡¡¡ÎÒÃÇÓÐʱÐèÒª±àÖÆÒ»Ð©½öÔÚºǫ́¼à¿ØµÄ³ÌÐò£¬ÎªÁ˲»¸ÉÈÅǰ̨³ÌÐòµÄÔËÐнçÃæºÍ²»ÏÔʾ²»±ØÒªµÄ´°¿Ú£¬Ó¦Ê¹ÆäÔËÐÐʱµÄÖ÷´°¿Ú²»¿É¼û¡£Í¬Ê±£¬Ó¦¸ÃÈÃÓû§ÖªµÀ¸Ã³ÌÐòÕýÔÚÔËÐУ¬²¢ÇÒ´ïµ½ÓëÓû§½øÐн»»¥µÄÄ¿µÄ¡£½«Ò»¸öͼ±êÏÔʾÔÚ ÈÎÎñÀ¸ÓҶ˾²Ì¬Í¨¸æÇøÖв¢ÏìÓ¦Óû§µÄÊó±ê¶¯×÷Êǵ±Ç°·Ç³£Á÷Ðеķ½·¨£¬ËüÌåÏÖÁËWindows 95ÓѺõĽçÃæ·ç¸ñ¡£ÏÂÃæÒÔÒ»¸öSDI£¨µ¥Îĵµ½çÃæ£©³ÌÐòΪÀý£¬½²Êö²ÉÓÃMicrosoft Visual C++ 5.0¿ª·¢ÕâÀà³ÌÐòµÄÖ÷Òª²½Öè¡£
¡¡¡¡Ê×ÏÈ£¬ÒªÊ¹³ÌÐòµÄÖ÷´°¿Ú²»¿É¼û£¬²¢ÇÒ²»ÔÚÈÎÎñÀ¸ÉϳöÏÖÈÎÎñ°´Å¥£¬Òª×öµ½ÕâÁ½µã£¬Ðè·Ö±ðÉèÖÃÖ÷±ß¿ò´°¿ÚµÄ·ç¸ñºÍÀ©Õ¹·ç¸ñ£º

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
cs.style =WS_POPUP;//ʹÖ÷´°¿Ú²»¿É¼û
cs.dwExStyle |=WS_EX_TOOLWINDOW;//²»ÏÔʾÈÎÎñ°´Å¥
return CFrameWnd::PreCreateWindow(cs);
}

¡¡¡¡Æä´Î£¬ÀûÓÃϵͳº¯ÊýShell_NotifyIcon½«Ò»¸öͼ±êÏÔʾÔÚ ÈÎÎñÀ¸µÄͨ¸æÇøÖС£¸Ãº¯ÊýµÄÔ­ÐÍΪ£º

WINSHELLAPI BOOL WINAPI Shell_NotifyIcon( DWORD dwMessage,PNOTIFYICONDATA pnid );

¡¡¡¡ÏÂÀýÖб»ÏÔʾµÄÊÇÖ÷±ß¿ò´°¿ÚµÄͼ±ê£¬Êµ¼ÊÉÏ¿ÉÒÔÏÔʾÈκÎͼ±ê£º

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{

¡­

NOTIFYICONDATA tnd;
tnd.cbSize=sizeof(NOTIFYICONDATA);
tnd.hWnd=this-$#@62;m_hWnd;
tnd.uID=IDR_MAINFRAME;
tnd.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;
tnd.uCallbackMessage=WM_LIBEN;
tnd.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
strcpy(tnd.szTip,"ÌáʾÐÅÏ¢");
Shell_NotifyIcon(NIM_ADD,&tnd);
¡­

}

¡¡¡¡ÔÚµ÷Óøú¯Êý֮ǰ£¬ÐèҪȷ¶¨Æä²ÎÊýµÄȡֵ£¬ÆäÖÐ֮һΪһ¸ö¾ßÓÐNOTIFYICONDATAÀàÐ͵Ľṹ¡£ÆäÔ­ÐÍΪ£º

typedef struct _NOTIFYICONDATA { // nidWORD cbSize; HWND hWnd; UINT uID; UINT uFlags; UINT uCallbackMessage; HICON hIcon; charszTip[64]; }
NOTIFYICONDATA, *PNOTIFYICONDATA;

¡¡¡¡ÔڸýṹµÄ³ÉÔ±ÖУ¬cbSizeΪ¸Ã½á¹ Õ¼µÄ×Ö½ÚÊý£¬hWndΪ½ÓÊܸÃͼ±êËù·¢³öµÄÏûÏ¢µÄ´°¿ÚµÄ¾ä±ú£¬uIDΪ±»ÏÔʾͼ±êµÄID£¬uFlagsÖ¸Ã÷ÆäÓàµÄ¼¸¸ö³ÉÔ±£¨hIcon¡¢uCallBackMessageºÍszTip£©µÄÖµÊÇ·ñÓÐЧ£¬uCallbackMessageΪһ¸ö×Ô¶¨ÒåµÄÏûÏ¢£¬µ±Óû§ÔÚ¸Ãͼ±êÉÏ×÷ÓÃһЩÊó±ê¶¯×÷ʱ£¬½«ÏòhWnd³ÉÔ±ÖÐÖ¸¶¨µÄ´°¿Ú·¢³ö¸ÃÏûÏ¢£¬¿ÉÒÔ¶¨Òå¸ÃÏûϢΪWM_USER+100¡£hIconΪ±»ÏÔʾͼ±êµÄ¾ä±ú£¬szTipΪһ×Ö·ûÊý×飬µ±Êó±êÍ£ÁôÔÚ¸Ãͼ±êÉÏʱ£¬½«ÆäÄÚÈÝÏÔʾÔÚ¸¡¶¯µÄÌáʾÐÅÏ¢¿òÖС£Shell_NotifyIconº¯ÊýµÄÁíÒ»¸ö²ÎÊýÊÇÒ»¸öÔ¤¶¨ÒåµÄÏûÏ¢£¬¿ÉÒÔÈ¡ÈçÏÂÖµÖ®Ò»£ºNIM_ADD¡¢NIM_DELETE»òNIM_MODIFY£¬·Ö±ð±íʾÌí¼Óͼ±ê¡¢É¾³ýͼ±ê »òÐÞ¸Äͼ±ê¡£
¡¡¡¡×îºó£¬ÒªÓëÓû§½øÐн»»¥£¬Ò²¾ÍÊǵ±Óû§ÔÚ¸Ãͼ±êÉϵ¥»÷»òË«»÷Êó±ê×ó¼ü»òÓÒ¼üʱҪִÐÐÏàÓ¦µÄ²Ù×÷£¬ÖÁÉÙÒ²ÒªÏìÓ¦Óû§ÖÕÖ¹¸Ã³ÌÐòµÄÒâÔ¸¡£ÉÏÃæÒѾ­Ìáµ½£¬µ±Óû§ÔÚͼ±êÉϽøÐÐÊó±ê¶¯×÷ʱ£¬½«ÏòhWnd³ÉÔ±ÖÐÖ¸¶¨µÄ´°¿Ú·¢³ö×Ô¶¨ÒåµÄÏûÏ¢£¬¸ÃÏûÏ¢ÓÉuCallbackMessage³ÉÔ±Ö¸¶¨£¨ÔÚÉÏÀýÖÐΪ WM_LIBEN£¬È¡ÖµÎªWM_USER+100£©¡£Òò´Ë£¬ÎÒÃǵÄÈÎÎñ¾ÍÊÇÔÚhWnd´°¿ÚÖÐÏìÓ¦¸Ã×Ô¶¨ÒåÏûÏ¢£º

void CMainFrame::OnLiben(WPARAM wParam,LPARAM lParam)
{
UINT uID;//·¢³ö¸ÃÏûÏ¢µÄͼ±êµÄID
UINT uMouseMsg;//Êó±ê¶¯×÷
POINT pt;
uID=(UINT) wParam;
uMouseMsg=(UINT) lParam;
if(uMouseMsg==WM_RBUTTONDOWN)//Èç¹ûÊǵ¥»÷ÓÒ¼ü

{
switch(uID)

{
case IDR_MAINFRAME://Èç¹ûÊÇÎÒÃǵÄͼ±ê
GetCursorPos(&pt);//È¡µÃÊó±êλÖÃ
¡­//Ö´ÐÐÏàÓ¦²Ù×÷
break;

¡­

default:
¡­
}

}

return;
}

¡¡¡¡ÐèҪעÒâµÄÊÇ£¬Ê×ÏÈÒªÔڸô°¿ÚÀàµÄÍ·ÎļþÖиø³ö¸ÃÏûÏ¢Ó³É亯ÊýµÄÔ­ÐÍ˵Ã÷£º

afx_msg void OnLiben(WPARAM wParam,LPARAM lParam);

¡¡¡¡²¢ÇÒÒªÔÚCPPÎļþÖеÄÏûÏ¢Ó³ÉäÖмÓÈëÏàÓ¦µÄÌõÄ¿£¬×¢ÒâÒ»¶¨Òª¼ÓÔÚ//{{AFX_MSG_MAP(CMainFrame)ºÍ//}}AFX_MSG_MAPÖ®Í⣺

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
ON_WM_CREATE()
ON_COMMAND(ID_APP_EXIT, OnAppExit)
//}}AFX_MSG_MAP
ON_MESSAGE(WM_LIBEN,OnLiben)
END_MESSAGE_MAP()

¡¡¡¡µ±³ÌÐò½áÊøÊ±£¬ÐèҪɾȥͨ¸æÇøÖеÄͼ±ê£¬ÕâʱͬÑùÓ¦¸Ãµ÷ÓÃShell_NotifyIconº¯Êý£¬Ö»²»¹ýµÚÒ»¸ö²ÎÊýÊDZíʾɾ³ýͼ±êµÄNIM_DELETE ÁË£º

void CMainFrame::OnAppExit()
{
// TODO: Add your command handler code here
NOTIFYICONDATA tnid;
tnid.cbSize=sizeof(NOTIFYICONDATA);
tnid.hWnd=this-$#@62;m_hWnd;
tnid.uID=IDR_MAINFRAME;//±£Ö¤É¾³ýµÄÊÇÎÒÃǵÄͼ±ê
Shell_NotifyIcon(NIM_DELETE,&tnid);
AfxPostQuitMessage(0);
}

¡¡¡¡Í¨¹ýÀàËÆµÄ²½Ö裬¶ÁÕß¿ÉÒÔÏìÓ¦ÆäËûµÄÏûÏ¢£¬Íê³É¸ü¼Ó¸ß¼¶µÄ½»»¥¹¦ÄÜ£¬ ÕâÀï²»ÔÙ׸Êö¡£ÉÏÎÄËùÊöÊDZÊÕß¾­ÑéËùµÃ£¬¿Ï¶¨Óв»µ½Ö®´¦£¬»¶Ó­Ö¸Õý¡£

¡ö Ïà¹ØÄÚÈÝ
¡¡vc++5.0¶¨ÖÆ´°¿ÚµÄ·½·¨
¸Ðл ·ÃÎÊÌì¼«Íø£¬Èç¹ûÄú¾õµÃ¸ÃÎÄÕÂÉæ¼°°æÈ¨ÎÊÌ⣬Çë¿´ÕâÀ