Programming °æ (¾«»ªÇø)
×÷ ¼Ò: compus (À¶Ìì) on board 'Programming'
Ìâ Ä¿: vc±à³ÌÖ¸ÄÏ68ƪ(1)
À´ Ô´: ¹þ¶û±õ×϶¡ÏãÕ¾
ÈÕ ÆÚ: Sun Oct 26 20:07:12 1997
³ö ´¦: compus.bbs@bbs.net.tsinghua.edu.cn
·¢ÐÅÈË: Zeemon (ÈûÏÂÇï), ÐÅÇø: Visual
±ê Ìâ: vc±à³ÌÖ¸ÄÏ68ƪ(1)
·¢ÐÅÕ¾: BBS ˮľÇ廪վ (Thu Oct 23 12:31:48 1997)
·¢ÐÅÈË: knofler (Break Heart), ÐÅÇø: Programming
±ê Ìâ: vc±à³ÌÖ¸ÄÏ68ƪ(1)
·¢ÐÅÕ¾: BBS ˮľÇ廪վ (Sat Oct 18 19:09:52 1997)
Ä¿µÄ£º Ϊ¹ã´óVisual C++³õѧÕߺͳÌÐòÔ±ÌṩһЩ°ïÖú£¬Ò²ÐíÄãÒѾÊÇ vc¸ßÊÖ£¬
¿ÉÒÔ²»¿´ÕâЩÎÄÕÂ.
˵Ã÷:´ó²¿·ÖÌâ²ÄÀ´×Ô "ÓöàýÌåѧ Visual C++" ¹âÅÌ,Ò»²¿·ÖÊÇżµÄ ±à³ÌÌå»á.
ÎÒÒѾ½«ÕâЩÀý×ӷŵ½ 166.111.72.52/incoming/knofler/vc/vckit.zip.
ÐèÒªµÄ ÅóÓÑ¿ÉÒÔȥȡ¡£Èç¹ûÓÐ CRC Error,¿ÉÒÔÓëÎÒÁªÏµ. Èç¹û ÊÇ´úÂëµÄÎÊÌâ»ò
PostµÄ ÎÊÌ⣬Çë¸ßÊÖ¼°Ê±Ö¸Õý.
ÎÄÕ°²ÅÅ: ×¼±¸·ÖÁùµ½Æß´Î Post.
¸ø°àÖ÷µÄ »°: ¿ÉÄÜÓÐЩÄÚÈÝÓ뾫»ªÇøÄڵĶ«Î÷Öظ´£¬ÇëÁ½â.
ÕýÎÄ:
1. ÈçºÎ»ñÈ¡Ó¦ÓóÌÐòµÄ ʵÀý¾ä±ú?
Ó¦ÓóÌÐòµÄ ʵÀý¾ä±ú±£´æÔÚCWinAppIm_hInstance ÖÐ,¿ÉÒÔÕâôµ÷ÓÃ
AfxGetInstancdHandle»ñµÃ¾ä±ú.
Example: HANDLE hInstance=AfxGetInstanceHandle();
2. ÈçºÎͨ¹ý´úÂë»ñµÃÓ¦ÓóÌÐòÖ÷´°¿ÚµÄ Ö¸Õë?
Ö÷´°¿ÚµÄ Ö¸Õë±£´æÔÚCWinThread::m_pMainWndÖÐ,µ÷Óà AfxGetMainWndʵÏÖ¡£
AfxGetMainWnd() ->ShowWindow(SW_SHOWMAXMIZED); //ʹ³ÌÐò×î´ó»¯.
3.ÈçºÎÔÚ³ÌÐòÖлñµÃÆäËû³ÌÐòµÄ ͼ±ê?
Á½ÖÖ·½·¨:
(1) SDKº¯Êý SHGetFileInfo »òʹÓà ExtractIcon»ñµÃͼ±ê×ÊÔ´µÄ handle,
(2) SDKº¯Êý SHGetFileInfo»ñµÃÓйØÎļþµÄ ºÜ¶àÐÅÏ¢,Èç´óСͼ±ê,ÊôÐÔ,
ÀàÐ͵È.
Example(1): ÔÚ³ÌÐò´°¿Ú×óÉϽÇÏÔʾ NotePadͼ±ê.
void CSampleView: OnDraw(CDC * pDC)
{
if( :: SHGetFileInfo(_T("c:\\pwin95\\notepad.exe"),0,
&stFileInfo,sizeof(stFileInfo),SHGFI_ICON))
{
pDC ->DrawIcon(10,10,stFileInfo.hIcon);
}
}
Example(2):ͬÑù¹¦ÄÜ,Use ExtractIcon Function
void CSampleView:: OnDraw(CDC *pDC)
{
HICON hIcon=:: ExtractIcon(AfxGetInstanceHandle(),_T
("NotePad.exe"),0);
if (hIcon &&hIcon!=(HICON)-1)
pDC->DrawIcon(10,10,hIcon);
}
˵Ã÷: »ñµÃnotepad.exeµÄ·¾¶Õý¹æÉÏÀ´ËµÓÃGetWindowsDirectory º¯ÊýµÃµ½,
Èç¹ûÊǵ÷Óà win95ϵĻ±Ê£¬Ó¦¸ÃÓ÷ÃÎÊ×¢²á±íµÄ·½·¨»ñµÃÆä·¾¶£¬Òª×÷³ÉÒ»¸ö
±È½Ï¿¼¾¿µÄ³ÌÐò£¬¿¼ÂÇÓ¦¸ÃÈ«Ãæµã.
4.ÈçºÎ±à³Ì½áÊøÓ¦ÓóÌÐò?ÈçºÎ±à³Ì¿ØÖÆwindowsµÄÖØÐÂÒýµ¼?
ÕâÊǸöºÜ¼òµ¥ÓÖÊDZà³ÌÖо³£ÒªÓöµ½µÄÎÊÌâ.
µÚÒ»ÎÊ,Ïò´°¿Ú·¢ËÍ WM_CLOSEÏûÏ¢,µ÷Óà CWnd::OnClose³ÉÔ±º¯Êý.ÔÊÐí¶ÔÓû§Ìáʾ
ÊÇ·ñ±£´æÐ޸ĹýµÄÊý¾Ý.
Example: AfxGetMainWindow()->SendMessage(WM_CLOSE);
»¹¿ÉÒÔ´´½¨Ò»¸ö×Ô¶¨ÒåµÄº¯Êý Terminate Window
void Terminate Window(LPCSTR pCaption)
{
CWnd *pWnd=Cwnd::FindWindow(NULL,pCaption);
if (pWnd)
pWnd ->SendMessage(WM_CLOSE);
}
˵Ã÷: FindWindowº¯Êý²»ÊÇÌᳫµÄ×ö·¨£¬ÒòΪËüÎÞ·¨´¦Àí±êÌâÀ¸×Ô¶¯¸Ä±ä£¬±ÈÈç
ÎÒÃÇÒª¼ì²â NotepadÊDz»ÊÇÒÑÔËÐжøÊÂÏȲ»ÖªµÀNotepadµÄ±êÌâÀ¸,Õâʱ FindWindow¾Í
ÎÞÄÜΪÁ¦ÁË£¬¿ÉÒÔͨ¹ýö¾Ù windowsÈÎÎñÁбíµÄ°ì·¨À´ÊµÏÖ¡£ ÔÚ »úе³ö°æÉç
"Windows 95 API¿ª·¢ÈËÔ±Ö¸ÄÏ"Ò»ÊéÓбȽÏÏêϸµÄ½éÉÜ,ÕâÀï¾Í²»ÔÙ¶à˵ÀÖ¡£
µÚ¶þÎÊ,Use ExitWindowsEx Functionº¯Êý¿ØÖÆϵͳÊÇÖØÐÂÒýµ¼£¬»¹ÊÇÖØÆô windows.
Ç°ÃæÒѾÓÐÈ˽²¹ýÀÖ£¬¾Í²»ÔÙÌáÁË¡£
5.ÔõÑù¼ÓÔÔÆäËûµÄÓ¦ÓóÌÐò?
ÎҼǵÃÕâºÃÏóÊdzö³¡Æµ¶ÈºÜ¸ßµÄÎÊÌâ¡£
Èý¸öSDKº¯Êý winexec, shellexecute,createprocess¿ÉÒÔʹÓá£
WinExec×î¼òµ¥£¬Á½¸ö²ÎÊý£¬Ç°Ò»¸öÖ¸¶¨Â·¾¶£¬ºóÒ»¸öÖ¸¶¨ÏÔʾ·½Ê½.ºóÒ»¸ö²ÎÊý
ÖµµÃ˵һÏ£¬±ÈÈçÄàÓà SW_SHOWMAXMIZED·½Ê½È¥¼ÓÔÔÒ»¸öÎÞ×î´ó»¯°´Å¥µÄ ³ÌÐò£¬ºÇºÇ
¾ÍÊÇNeterm,calcµÈµÈ£¬¾Í²»»á³öÏÖÕý³£µÄ ´°Ì壬µ«ÊÇÒѾ±»¼Óµ½ÈÎÎñÁбíÀïÁË¡£
ShellExecute½Ï WinExexÁé»îÒ»µã£¬¿ÉÒÔÖ¸¶¨¹¤×÷Ŀ¼,ÏÂÃæµÄ Example¾ÍÊÇÖ±½Ó
´ò¿ª c:\temp\1.txt,¶ø²»ÓüÓÔÔÓë txtÎļþ¹ØÁªµÄÓ¦ÓóÌÐò,ºÜ¶à°²×°³ÌÐòÍê³Éºó
¶¼»á´ò¿ªÒ»¸ö´°¿Ú£¬À´ÏÔʾReadme or Faq,ż²Â¾ÍÊÇÕâô×÷µÄÀ².
ShellExecute(NULL,NULL,_T("1.txt"),NULL,_T("c:\\temp"),SW_SHOWMAXMIZED);
CreateProcess×ÔÓ£¬Ò»¹²ÓÐÊ®¸ö²ÎÊý£¬²»¹ý´ó²¿·Ö¶¼¿ÉÒÔÓÃNULL´úÌ棬Ëü¿ÉÒÔ
Ö¸¶¨½ø³ÌµÄ°²È«ÊôÐÔ£¬¼Ì³ÐÐÅÏ¢£¬ÀàµÄÓÅÏȼ¶µÈµÈ.À´¿´¸öºÜ¼òµ¥µÄ Example:
STARTUPINFO stinfo; //Æô¶¯´°¿ÚµÄÐÅÏ¢
PROCESSINFO procinfo; //½ø³ÌµÄÐÅÏ¢
CreateProcess(NULL,_T("notepad.exe"),NULL,NULL.FALSE, NORMAL_PRIORITY_
CLASS,NULL,NULL, &stinfo,&procinfo);
6. È·¶¨Ó¦ÓóÌÐòµÄ ·¾¶
ǰЩÌìºÃÏóÓÐÈËÎʹýÕâ¸öÎÊÌâ.
Use GetModuleFileName »ñµÃÓ¦ÓóÌÐòµÄ·¾¶£¬È»ºóÈ¥µô¿ÉÖ´ÐÐÎļþÃû¡£
Example:
TCHAR exeFullPath[MAX_PATH]; // MAX_PATHÔÚAPIÖж¨ÒåÁË°É£¬ºÃÏóÊÇ128
GetModuleFileName(NULL,exeFullPath,MAX_PATH)
7. »ñµÃ¸÷ÖÖĿ¼ÐÅÏ¢
WindowsĿ¼: Use "GetWindowsDirectory¡°
WindowsϵÄsystemĿ¼: Use "GetSystemDirectory"
tempĿ¼: Use "GetTempPath "
µ±Ç°Ä¿Â¼: Use "GetCurrentDirectory"
Çë×¢ÒâÇ°Á½¸öº¯ÊýµÄµÚÒ»¸ö²ÎÊýΪ Ŀ¼±äÁ¿Ãû£¬ºóÒ»¸öΪ»º³åÇø; ºóÁ½¸öÏà·´.
8. ÈçºÎ×Ô¶¨ÒåÏûÏ¢
Ò²ÓÐÈËÎʹýµÄ£¬Æäʵ²»ÄÑ¡£
(1) ÊÖ¹¤¶¨ÒåÏûÏ¢£¬¿ÉÒÔÕâôд #define WM_MY_MESSAGE(WM_USER+100),
MS ÍƼöµÄÖÁÉÙÊÇ WM_USER+100;
(2)дÏûÏ¢´¦Àíº¯Êý,Óà WPARAM,LPARAM·µ»ØLRESULT.
LRESULT CMainFrame::OnMyMessage(WPARAM wparam,LPARAM lParam)
{
//¼ÓÈëÄãµÄ´¦Àíº¯Êý
}
(3) ÔÚÀàµÄ AFX_MSG´¦½øÐÐÉùÃ÷£¬Ò²¾ÍÊdz£ËµµÄ"ºêÓ³Éä"
¿ªÆª¾ÍÏÈдµ½Õâ.
´ýÐø...
ÓеãÃÔ㯣¬ÓеãʧÍû
²»ÏëÕÅÍû£¬²»Ïë»ÃÏëÄ.
--
¡ù À´Ô´:¡¤BBS ˮľÇ廪վ bbs.net.tsinghua.edu.cn¡¤[FROM: sapphire.ncic.a]
--
¡ù À´Ô´:¡¤¹þ¶û±õ×϶¡ÏãÕ¾ bbs1.hit.edu.cn¡¤[FROM: compus.bbs@bbs.net.t]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
Ò³ÃæÖ´ÐÐʱ¼ä£º3.189ºÁÃë