??xml version="1.0" encoding="utf-8" standalone="yes"?>久久噜噜久久久精品66,久久精品国产亚洲av影院,亚洲日韩中文无码久久http://m.shnenglu.com/changshoumeng/category/13004.htmlE序之外Q再无世界?/description>zh-cnWed, 15 Aug 2012 08:26:22 GMTWed, 15 Aug 2012 08:26:22 GMT60vs2003安装步骤与可能问题的解决http://m.shnenglu.com/changshoumeng/archive/2012/08/15/187273.html长寿?/dc:creator>长寿?/author>Wed, 15 Aug 2012 05:10:00 GMThttp://m.shnenglu.com/changshoumeng/archive/2012/08/15/187273.htmlhttp://m.shnenglu.com/changshoumeng/comments/187273.htmlhttp://m.shnenglu.com/changshoumeng/archive/2012/08/15/187273.html#Feedback0http://m.shnenglu.com/changshoumeng/comments/commentRss/187273.htmlhttp://m.shnenglu.com/changshoumeng/services/trackbacks/187273.htmlvs2003安装步骤与可能问题的解决

2012-08-15 changshoumeng试验成功

1. 安装?br />   sc_vs.net_2003_prereq.iso
   VS.Net_2003_Enar_CHS_CD1.ISO
   VS.Net_2003_Enar_CHS_CD2.ISO
2. 安装步骤
2.1 安装 sc_vs.net_2003_prereq.iso
    可能出现问题QFrontPage2000 服务器扩展安装失败?br />    解决办法Q?br />       
              aQ下载关于iis的完整包
              (说明Q这一步解决的问题是,xp上可能ƈ没有iis的安装文?

              控制面板/d或删除文?d或删除windowslg/
             
              b: 首先 N?[附g和工具] /详细信息D/取消N游?定
              (说明Q这一步解决的问题是,安装IIS 时出现安装程序无法复制文件zClinettm.exe)
            
              c: 然后 N?[Inernet信息服务(IIS)] /详细信息D/NFrontPage2000 服务扩展
              点击下一?q行安装?br />              (说明Q这一步解决的问题ӞFrontPage2000 服务器扩展组件安装失?
2.2 安装VS.Net_2003_Enar_CHS_CD1.ISO
    可能出现的问题:
   错误 1308。未扑ֈ源文? d:\everbox\vs2003\vs.net_2003_enar_chs_cd1\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1

\Docs\2052\cpsamples.HxS。请验证文g是否存在以及是否可以讉K它?br />     解决办法Q?br />      q些文gQ都来自于VS.Net_2003_Enar_CHS_CD2.ISO里;
      只要从光?里把对应的文件拷贝到光盘1里,p了?br />      但是Q如果这L话,q样的操作就会出现很多次Q颇为繁琐?br />      于是我想Q假如能够光?与光?合ƈ一个光盘就好了。解军_法,使用文g同步工具 GoodSyncProQ?br />      两个文件夹q行合ƈ?br />      l箋点击重试Q进行安装,q样安装ok了?/p>

参考网文:
http://hi.baidu.com/vc_net/item/086b31dff8ee4df792a97455

http://www.codesky.net/article/200911/125322.html



]]>
MFC消息循环 (?http://m.shnenglu.com/changshoumeng/archive/2012/05/30/176755.html长寿?/dc:creator>长寿?/author>Wed, 30 May 2012 06:49:00 GMThttp://m.shnenglu.com/changshoumeng/archive/2012/05/30/176755.htmlhttp://m.shnenglu.com/changshoumeng/comments/176755.htmlhttp://m.shnenglu.com/changshoumeng/archive/2012/05/30/176755.html#Feedback0http://m.shnenglu.com/changshoumeng/comments/commentRss/176755.htmlhttp://m.shnenglu.com/changshoumeng/services/trackbacks/176755.html

MFC应用E序中处理消息的序

1.AfxWndProc()  该函数负责接收消息,扑ֈ消息所属的CWnd对象Q然后调用AfxCallWndProc?/font>

2.AfxCallWndProc() 该函数负责保存消?保存的内容主要是消息标识W和消息参数)供应用程序以后用,然后调用WindowProc()函数?/font>

3.WindowProc()  该函数负责发送消息到OnWndMsg()函数Q如果未被处理,则调用DefWindowProc()函数?/font>

4.OnWndMsg()  该函数的功能首先按字节对消息q行排序Q对于WM_COMMAND消息Q调用OnCommand()消息响应函数Q对于WM_NOTIFY消息调用OnNotify()消息响应函数。Q何被遗漏的消息将是一个窗口消息。OnWndMsg()函数搜烦cȝ消息映像Q以扑ֈ一个能处理MH口消息的处理函数。如果OnWndMsg()函数不能扑ֈq样的处理函数的话,则把消息q回到WindowProc()函数Q由它将消息发送给DefWindowProc()函数?/font>

5.OnCommand()  该函数查看这是不是一个控仉知(lParam参数不ؓNULLQ如果lParam参数为空的话Q说明该消息不是控g通知)Q如果它是,OnCommand()函数会试囑ְ消息映射到制造通知的控Ӟ如果他不是一个控仉知(或者如果控件拒l映的消息)OnCommand()׃调用OnCmdMsg()函数?/font>

6.OnCmdMsg()   Ҏ接收消息的类QOnCmdMsg()函数在一个称为命令传?Command Routing)的过E中潜在的传递命令消息和控g通知。例如:如果拥有该窗口的cL一个框架类Q则命o和通知消息也被传递到视图和文档类Qƈcd找一个消息处理函数?/font>


MFC应用E序创徏H口的过E?/strong>

1.PreCreateWindow() 该函数是一个重载函敎ͼ在窗口被创徏前,可以在该重蝲函数中改变创建参?可以讄H口风格{等)?/font>

2.PreSubclassWindow() q也是一个重载函敎ͼ允许首先子分cM个窗口?/font>

3.OnGetMinMaxInfo() 该函Cؓ消息响应函数Q响应的是WM_GETMINMAXINFO消息Q允许设|窗口的最大或者最尺寸?/font>

4.OnNcCreate()  该函C是一个消息响应函敎ͼ响应WM_NCCREATE消息Q发送消息以告诉H口的客户区卛_被创建?/font>

5.OnNcCalcSize() 该函C是消息响应函?响应WM_NCCALCSIZE消息Q作用是允许改变H口客户区大?/font>

6.OnCreate()  该函C是一个消息响应函敎ͼ响应WM_CREATE消息Q发送消息告诉一个窗口已l被创徏?/font>

7.OnSize()  该函C是一个消息响应函敎ͼ响应WM_SIZE消息Q发送该消息以告诉该H口大小已经发生变化?/font>

8.OnMove()  消息响应函数Q响应WM_MOVE消息Q发送此消息说明H口在移动?/font>

9.OnChildNotify() 该函Cؓ重蝲函数Q作为部分消息映被调用Q告诉父H口卛_被告知一个窗口刚刚被创徏?/font>


MFC应用E序关闭H口的顺?非模态窗?

1.OnClose()  消息响应函数Q响应窗口的WM_CLOSE消息Q当关闭按钮被单ȝ时候发送此消息?/font>

2.OnDestroy()  消息响应函数Q响应窗口的WM_DESTROY消息Q当一个窗口将被销毁时Q发送此消息?/font>

3.OnNcDestroy()  消息响应函数Q响应窗口的WM_NCDESTROY消息Q当一个窗口被销毁后发送此消息?/font>

4.PostNcDestroy() 重蝲函数Q作为处理OnNcDestroy()函数的最后动作,被CWnd调用?/font>


MFC应用E序中打开模式对话框的函数调用序

1.DoModal()  重蝲函数Q重载DoModal()成员函数?/font>

2.PreSubclassWindow() 重蝲函数Q允讔R先子分类一个窗口?/font>

3.OnCreate()  消息响应函数Q响应WM_CREATE消息Q发送此消息以告诉一个窗口已l被创徏?/font>

4.OnSize()  消息响应函数Q响应WM_SIZE消息Q发送此消息以告诉窗口大发生变化?/font>

5.OnMove()  消息响应函数Q响应WM_MOVE消息Q发送此消息Q以告诉H口正在Ud?/font>

6.OnSetFont()  消息响应函数Q响应WM_SETFONT消息Q发送此消息Q以允许改变对话框中控g的字体?/font>

7.OnInitDialog() 消息响应函数Q响应WM_INITDIALOG消息Q发送此消息以允许初始化对话框中的控Ӟ或者是创徏新控件?/font>

8.OnShowWindow() 消息响应函数Q响应WM_SHOWWINDOW消息Q该函数被ShowWindow()函数调用?/font>

9.OnCtlColor()  消息响应函数Q响应WM_CTLCOLOR消息Q被父窗口发送已改变对话框或对话框上面控件的颜色?/font>

10. OnChildNotify() 重蝲函数Q作为WM_CTLCOLOR消息的结果发送?/font>


MFC应用E序中关闭模式对话框的顺?/strong>

1.OnClose()  消息响应函数Q响应WM_CLOSE消息Q当"关闭"按钮被单ȝ时候,该函数被调用?/font>

2.OnKillFocus()  消息响应函数Q响应WM_KILLFOCUS消息Q当一个窗口即失去键盘输入焦点以前被发送?/font>

3.OnDestroy()  消息响应函数Q响应WM_DESTROY消息Q当一个窗口即被销毁时Q被发送?/font>

4.OnNcDestroy()  消息响应函数Q响应WM_NCDESTROY消息Q当一个窗口被销毁以后被发送?/font>

5.PostNcDestroy() 重蝲函数Q作为处理OnNcDestroy()函数的最后动作被CWnd调用?/font>


打开无模式对话框的顺?/strong>

1.PreSubclassWindow() 重蝲函数Q允许用户首先子分类一个窗口?/font>

2.OnCreate()  消息响应函数Q响应WM_CREATE消息Q发送此消息以告诉一个窗口已l被创徏?/font>

3.OnSize()  消息响应函数Q响应WM_SIZE消息Q发送此消息以告诉窗口大发生变化?/font>

4.OnMove()  消息响应函数Q响应WM_MOVE消息Q发送此消息以告诉窗口正在移动?/font>

5.OnSetFont()  消息响应函数Q响应WM_SETFONT消息Q发送此消息以允许改变对话框中控件的字体?br />
http://blog.sina.com.cn/s/blog_55cf5f230100p471.html



]]>
CPU三种工作模式ȝhttp://m.shnenglu.com/changshoumeng/archive/2010/09/15/126699.html长寿?/dc:creator>长寿?/author>Wed, 15 Sep 2010 14:32:00 GMThttp://m.shnenglu.com/changshoumeng/archive/2010/09/15/126699.htmlhttp://m.shnenglu.com/changshoumeng/comments/126699.htmlhttp://m.shnenglu.com/changshoumeng/archive/2010/09/15/126699.html#Feedback0http://m.shnenglu.com/changshoumeng/comments/commentRss/126699.htmlhttp://m.shnenglu.com/changshoumeng/services/trackbacks/126699.htmlCPU三种工作模式ȝ

 

CPU三种模式

处理器有3U工作模式:实模式、保护模式和虚拟86模式。实模式和虚?/span>86模式是ؓ了和8086处理器兼容而设|的。在实模式下Q?/span>80386处理器就相当于一个快速的8086处理器。保护模式是80386处理器的主要工作模式。在此方式下Q?/span>80386可以d4GB的地址I间Q同Ӟ保护模式提供?/span>80386先进的多d、内存分늮理和优先U保护等机制。ؓ了在保护模式下l提供和8086处理器的兼容Q?/span>80386又设计了一U虚?/span>86模式Q以便可以在保护模式的多d条g下,有的dq行32位程序,有的dq行MS-DOSE序。在虚拟86模式下,同样支持d切换、内存分늮理和优先U,但内存的d方式?/span>8086相同Q也是可以寻址1 MB的空间?/span>

【批注:处理器从8086升?/span>80386Q工作模式也从实模式升C护模式,Z兼容8086产生虚拟86模式?/span>

  

【批注:实模?#8594;保护模式→虚拟86模式?/span>

  

1.   实模?/span>

  

80386处理器被复位或加늚时候以实模式启动。这时候处理器中的各寄存器以实模式的初始化值工作?/span>80386处理器在实模式下的存储器d方式?/span>8086是一LQ由D寄存器的内容乘?/span>16当做基地址Q加上段内的偏移地址形成最l的物理地址Q这时候它?/span>32位地址U只使用了低20?/span>。在实模式下Q?/span>80386处理器不能对内存q行分页理Q所以指令寻址的地址是内存中实际的物理地址。在实模式下Q所有的D都是可以读、写和执行的?/span>

【批注:物理地址?/span>  

 

实模式下80386不支持优先Q所有的指o相当于工作在ҎU(优先U?/span>0Q,所以它可以执行所有特权指令,包括d控制寄存?/span>CR0{。实际上Q?/span>80386是通过在实模式下初始化控制寄存器,GDTRQ?/span>LDTRQ?/span>IDTR?/span>TR{管理寄存器以及表Q然后再通过加蝲CR0使其中的保护模式使能位置位而进入保护模式的。实模式下不支持g上的多Q务切换?/span>

【批注:多Q务?/span>

  

实模式下的中断处理方式和8086处理器相同,也用中断向量表来定位中断服务E序地址。中断向量表的结构也?/span>8086处理器一P?/span>4个字节组成一个中断向量,其中包括两个字节的段地址和两个字节的偏移地址?/span>

【批注:中断向量?/span>

  

由此可见Q?/span>80386处理器的3U工作模式各有特点且怺联系。实模式?/span>80386处理器工作的基础Q这?/span>80386当做一个快速的8086处理器工作?strong style="mso-bidi-font-weight: normal">在实模式下可以通过指o切换C护模式,也可以从保护模式退回到实模式?/span>虚拟86模式则以保护模式为基Q在保护模式和虚?/span>86模式之间可以互相切换Q但不能从实模式直接q入虚拟86模式或从虚拟86模式直接退到实模式?/span>

从编E的角度看,除了可以讉K80386新增的一些寄存器外,实模式的80386处理器和8086有什么进步呢Q?span style="COLOR: red">其实最大的好处是可以?/span>80386?/span>32位寄存器Q用32位的寄存器进行编E可以计算E序更加P加快了执行速度。比如在8086时代?/span>16位寄存器来完?/span>32位的乘法和除法时Q要q行的步骤实在是太多了,于是考试时出q一cȝ题目成了老师们的最爱,所以那时候当学生做梦都想着让寄存器的位数快快长Q现在梦想终于成真了Q用32位寄存器一条指令就可以完成Q问题是老师们也发现了这个投机取巧的办法Qؓ了达到让学生们基扎实的目的,也把题目换成?/span>64位的乘法和除法,所以现在晚上做的梦换成了寄存器忽然长到?/span>64位)Q其ơ,80386?span style="COLOR: red">增加的两个辅助段寄存?/span>FS?/span>GS在实模式下也可以使用Q这P同时可以讉K的段辑ֈ?/span>6个而不必考虑重新装入的问题;最后,很多80386?strong style="mso-bidi-font-weight: normal">新增指o也一些原来不很方便的操作得以?/span>Q如80386中可以用下q指令进行数l访问:

  

          mov   cx, [eax + ebx*2 + 数组基地址]

  

q相当于把数l中下标?/span>eax?/span>ebx的项目放?/span>cx中;ebx * 2中的2可以?/span>1Q?/span>2Q?/span>4?/span>8Q这样就可以支持8位到64位的数组。而在8086处理器中Q实现相同的功能要进行一ơ乘法和两次加法。另外,pushad?/span>popad指o可以一ơ把所?/span>8个通用寄存器的值压入或从堆栈中弹出Q比L下面的指令分别将8个寄存器入栈要快了很多:

  

          push  eax   

          push  ebx   

          ...   

          pop   ebx   

          pop   eax

  

当然Q用了q些新指令的E序是无法拿回到8086处理器上L行的Q因些指令的~码?/span>8086处理器上是未定义的?/span>

   【批注:新增针对Q2位寄存器的指令,化操作?/span>

 

2.   保护模式

  

?/span>80386工作在保护模式下的时候,它的所有功能都是可用的。这?/span>80386所有的32根地址UK可供dQ物理寻址I间高达4 GB。在保护模式下,支持内存分页机制Q提供了对虚拟内存的良好支持。虽然与8086可寻址?/span>1 MB物理地址I间相比Q?/span>80386可寻址的物理地址I间可谓很大Q但实际的微机系l不可能安装如此大的物理内存。所以,Zq行大型E序和真正实现多dQ虚拟内存是一U必需的技术?/span>

【批注:虚拟内存?/span>

  

保护模式?/span>80386支持多Q?/span>Q可以依靠硬件仅在一条指令中实现d切换。Q务环境的保护工作是由处理器自动完成的。在保护模式下,80386处理器还支持优先U机?/span>Q不同的E序可以q行在不同的优先U上。优先一共分0?/span>3   4个别,操作pȝq行在最高的优先U?/span>0上,应用E序则运行在比较低的U别上;配合良好的检查机制后Q既可以在Q务间实现数据的安全共享也可以很好地隔d个Q务。从实模式切换到保护模式是通过修改控制寄存?/span>CR0的控制位PEQ位0Q来实现的。在q之前还需要徏立保护模式必需的一些数据表Q如全局描述W表GDT和中断描q符?/span>IDT{?/span>

  

DOS操作pȝq行于实模式下,?/span>Windows操作pȝq行于保护模式下?/span>

   【批注:多Q务,优先U?/span>

 

3.   虚拟86模式

  

虚拟86模式是ؓ了在保护模式下执?/span>8086E序而设|的。虽?/span>80386处理器已l提供了实模式来兼容8086E序Q但q时8086E序实际上只是运行得快了一点,?/span>CPU的资源还是独占的。在保护模式的多d环境下运行这些程序时Q它们中的很多指令和保护模式环境格格不入Q如D寻址方式、对中断的处理和I/O操作的特权问题等。ؓ了在保护模式下工作而丢弃这些程序的代h是巨大的。设想一下,如果Windows?/span>80386处理器推出的时候宣布不能运行以前的MS-DOSE序Q那么就{于攑ּ了一个巨大的软g库,Windows以及80386处理器可能就会落得和ҎZL下场Q这?/span>Microsoft?/span>Intel都不愿看到的。所以,80386处理器又设计了一个虚?/span>86模式?/span>

   【批注:在保护模式下Q兼?/span>8086?/span>

 

虚拟86模式是以d形式在保护模式上执行的,?/span>80386上可以同时支持由多个真正?/span>80386d和虚?/span>86模式构成的Q务。在虚拟86模式下,80386支持d切换和内存分c在Windows操作pȝ中,有一部分E序专门用来理虚拟86模式的Q务,UCؓ虚拟86理E序?/span>

  

既然虚拟86模式以保护模式ؓ基础Q它?strong style="mso-bidi-font-weight: normal">工作方式实际上是实模式和保护模式的؜?/span>。ؓ了和8086E序的寻址方式兼容Q虚?/span>86模式采用?/span>8086一Ld方式Q即用段寄存器乘?/span>16当做基址再配合偏Ud址形成U性地址Q寻址I间?/span>1  MB。但昄多个虚拟86d不能同时使用同一位置?/span>1 MB地址I间Q否则会引v冲突。操作系l利用分|制将不同虚拟86d的地址I间映射C同的物理地址上去Q这h个虚?/span>86d看v来都认ؓ自己在?/span>0?/span>1MB的地址I间?/span>

【批注:虚拟86模式 = 实模?/span> + 保护模式?/span>

  

8086代码中有相当一部分指o在保护模式下属于Ҏ指oQ如屏蔽中断?/span>cli和中断返回指?/span>iret{。这些指令在8086E序中是合法的。如果不让这些指令执行,8086代码无法工作。ؓ了解册个问题,虚拟86理E序采用模拟的方法来完成q些指o。这些特权指令执行的时候引起了保护异常。虚?/span>86理E序在异常处理程序中查生异常的指oQ如果是中断指oQ则从虚?/span>86d的中断向量表中取Z断处理程序的入口地址Qƈ控制{U过去;如果是危及操作系l的指oQ如cli{,则简单地忽略q些指oQ在异常处理E序q回的时候直接返回到下一条指令。通过q些措施Q?/span>8086E序既可以正常地q行下去Q在执行q些指o的时候又觉察不到已经被虚?/span>86理E序做了手脚?/span>MS-DOS应用E序?/span>Windows操作pȝ中就是这样工作的?/span>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 



长寿?/a> 2010-09-15 22:32 发表评论
]]>
CButtonST使用技? CButtonST?/title><link>http://m.shnenglu.com/changshoumeng/archive/2010/05/12/115219.html</link><dc:creator>长寿?/dc:creator><author>长寿?/author><pubDate>Wed, 12 May 2010 12:25:00 GMT</pubDate><guid>http://m.shnenglu.com/changshoumeng/archive/2010/05/12/115219.html</guid><wfw:comment>http://m.shnenglu.com/changshoumeng/comments/115219.html</wfw:comment><comments>http://m.shnenglu.com/changshoumeng/archive/2010/05/12/115219.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.shnenglu.com/changshoumeng/comments/commentRss/115219.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/changshoumeng/services/trackbacks/115219.html</trackback:ping><description><![CDATA[<p>文章本h转自Q?a ><u><font color=#800080>http://www.vckbase.com/document/viewdoc/?id=517</font></u></a></p> <br> <p>CButtonSTcM要包括BtnST.h、BtnST.cpp、BCMenu.h和BCMenu.cpp四个文g。如果你打算使用CButtonST的窗口不止一个,那么我徏议你在VC++的Workspace | FileView中导入以上的四个文g之后Q然后在SdtAfx.h文g中添加合适的include语句Q如#include "BtnST.h"?br><br><br><br>在接下来的几文章中Q我根据作者提供的演示E序向大家介lCButtonST的各U常用方法。在最后一文章中Q将为各位提供CButtonSTcȝ中文文档Q以供各位在以后的用中参考?/p> <br> <p><strong>效果一Q在按钮上加入IconQIcon和文字同时显C?<br><br><br><br></strong>假设按钮ID为IDC_BUTTON1<br><br>1. d成员变量</p> <br> <pre>CButtonST m_btn;</pre> <br> <p>2. dIcon资源Q设其ID设ؓIDI_ICON1<br><br>3. 在OnInitDialog函数中初始化按钮</p> <br> <pre>m_btn.SubclassDlgItem(IDC_BUTTON1,this); m_btn.SetIcon(IDI_ICON1); m_btn.SetFlat(FALSE);</pre> <br> <p>注意:到最好效果,h据Icon的大调整按钮的大小?br><br>实例Q演C程序中的Standar 按钮?br><br><a name=F2></a><br><br><img height=16 alt="" src="http://www.vckbase.com/document/image/paragraph.gif" width=14> <strong>效果二:昄q面按钮</strong><br><br>只需要在效果一的基上把m_btn.SetFlat(FALSE);语句L?br><br><a id=F3 name=F3></a><br><br><img height=16 alt="" src="http://www.vckbase.com/document/image/paragraph.gif" width=14> <strong>效果三:使按钮上的图标可?/strong><br><br>假设按钮ID为IDC_BUTTON1<br><br>1. d成员变量</p> <br> <pre>CButtonST m_btn;</pre> <br> <p>2. d两个Icon资源QID设ؓIDI_ICON1和IDI_ICON2<br><br>IDI_ICON1是普通状态的图标QIDI_ICON2是按下时的图?br><br><br><br>3. 在OnInitDialog函数中初始化按钮</p> <br> <pre>m_btn.SubclassDlgItem(IDC_BUTTON1,this); m_btn.SetIcon(IDI_ICON2,IDI_ICON1);</pre> <br> <p>实例Q演C程序中的Halloween 按钮?<br><br><a id=F4 name=F4></a><br><br><img height=16 alt="" src="http://www.vckbase.com/document/image/paragraph.gif" width=14> <strong>效果四:讄按钮在不同状态下的底色和文字颜色</strong> <br><br><br><br>假设按钮ID为IDC_BUTTON1<br><br>1. d成员变量</p> <br> <pre>CButtonST m_btn;</pre> <br> <p>2. dIcon资源Q设其ID设ؓIDI_ICON1<br><br>3. 在OnInitDialog函数中初始化按钮</p> <br> <pre>m_btn.SubclassDlgItem(IDC_BUTTON1,this); m_btn.SetIcon(IDI_ICON1); m_btn.SetColor(CButtonST::BTNST_COLOR_BK_OUT, RGB(208,208,208)); m_btn.SetColor(CButtonST::BTNST_COLOR_BK_FOCUS, RGB(208,208,208)); m_btn.OffsetColor(CButtonST::BTNST_COLOR_BK_IN, 30);</pre> <br> <p>提示QSetColor函数和OffsetColor函数的第一个参数表C按钮的各个状态,前景色就是文字的颜色Q它们的取DC:</p> <br> <pre>BTNST_COLOR_BK_IN //鼠标攑֜按钮内时的背景色 BTNST_COLOR_FG_IN, //鼠标攑֜按钮内时的前景色 BTNST_COLOR_BK_OUT, //普通状态时的背景色 BTNST_COLOR_FG_OUT, //普通状态时的前景色 BTNST_COLOR_BK_FOCUS, //按钮被按下后的背景色 BTNST_COLOR_FG_FOCUS, //按钮被按下后的前景色</pre> <br> <p>实例Q演C程序中?8×48 icon 按钮、Zip按钮{?br><br><a id=F5 name=F5></a><br><br><img height=16 alt="" src="http://www.vckbase.com/document/image/paragraph.gif" width=14> <strong>效果五:讄图标和文字的位置</strong><br><br><br><br>假设按钮ID为IDC_BUTTON1<br><br>1.d成员变量</p> <br> <pre>CButtonST m_btn;</pre> <br> <p>2.dIcon资源QID设ؓIDI_ICON1<br><br>3.在OnInitDialog函数中初始化按钮</p> <br> <pre>m_btn.SubclassDlgItem(IDC_BUTTON1,this); m_btn.SetIcon(IDI_ICON1); m_btn.SetAlign(CButtonST::ST_ALIGN_VERT); </pre> <br> <p>提示QSetAlign函数的第一个参数表CZ|信息,~省情况下,文字在图标右?/p> <br> <pre>ST_ALIGN_HORIZ // 文字在右 ST_ALIGN_VERT //文字在下 ST_ALIGN_HORIZ_RIGHT// 文字在左 </pre> <br> <p>实例Q演C程序中的Search 按钮?br><br><a id=F6 name=F6></a><br><br><img height=16 alt="" src="http://www.vckbase.com/document/image/paragraph.gif" width=14> <strong>效果六:ҎIcon的Ş状设|按钮的形状</strong><br><br><br><br>假设按钮ID为IDC_BUTTON1<br><br>1.d成员变量</p> <br> <pre>CButtonST m_btn;</pre> <br> <p>2.dIcon资源Q设其ID设ؓIDI_ICON1<br><br>3.在OnInitDialog函数中初始化按钮</p> <br> <pre>m_btn.SubclassDlgItem(IDC_BUTTON1,this); m_btn.SetIcon(IDI_ICON1); m_btn.DrawBorder(FALSE); m_btn.SetColor(CButtonST::BTNST_COLOR_BK_OUT, RGB(208,208,208)); m_btn.SetColor(CButtonST::BTNST_COLOR_BK_IN, RGB(208,208,208)); m_btn.SetColor(CButtonST::BTNST_COLOR_BK_FOCUS, RGB(208,208,208));</pre> <br> <p>注意:到最好效果,h据Icon的大调整按钮的大小?br><br>q根据实际情况设|背景颜艌Ӏ请事先按钮的文字L?br><br><a id=F7 name=F7></a><br><br><img height=16 alt="" src="http://www.vckbase.com/document/image/paragraph.gif" width=14> <strong>效果七:dTooltips</strong><br><br><br><br>假设按钮ID为IDC_BUTTON1<br><br>1.d成员变量</p> <br> <pre>CButtonST m_btn;</pre> <br> <p>2.dIcon资源Q设其ID设ؓIDI_ICON1<br><br>3. 在OnInitDialog函数中初始化按钮</p> <br> <pre>m_btn.SubclassDlgItem(IDC_BUTTON1,this); m_btn.SetIcon(IDI_ICON1); m_btn.SetTooltipText(_T("This is a tooltip.\r\nMultiline!"));</pre> <br> <p><br><br><strong>效果一Q改变鼠标进入按钮时的Ş?链接效?<br><br></strong>假设按钮ID为IDC_BUTTON1<br><br>1. d成员变量</p> <br> <pre>CButtonST m_btn;</pre> <br> <p>2. dIcon资源Q设其ID设ؓIDI_ICON1<br><br>3. 在OnInitDialog函数中初始化按钮</p> <br> <pre>m_btn.SubclassDlgItem(IDC_BUTTON1,this); m_btn.SetIcon(IDI_ICON1); m_btn.OffsetColor(CButtonST::BTNST_COLOR_BK_IN, 30); m_btn.SetURL("www.scut.edu.cn"); m_btn.SetTooltipText("www.scut.edu.cn"); m_btn.SetBtnCursor(IDC_CURSOR1); </pre> <br> <p><strong><a id=F2 name=F2></a><br><br><img height=16 alt="" src="http://www.vckbase.com/document/image/paragraph.gif" width=14> 效果二:菜单按钮</strong><br><br><br><br>假设按钮ID为IDC_BUTTON1<br><br>1.d成员变量<br><br> </p> <br> <pre>CButtonST m_btn;</pre> <br> <p>2. dIcon资源Q设其ID设ؓIDI_ICON1<br><br>3. dMenuQID设ؓIDR_MENU<br><br>4. 在OnInitDialog函数中初始化按钮</p> <br> <pre>m_btn.SubclassDlgItem(IDC_BUTTON1,this); m_btn.SetIcon(IDI_ICON1); m_btn.OffsetColor(CButtonST::BTNST_COLOR_BK_IN, 30); m_btn.SetMenu(IDR_MENU, m_hWnd);</pre> <br> <p>注意:菜单的效果类g右键菜单Q所有在讄菜单选项时只讄一列就够了。另外菜单的宽度与菜单的文字长度有关Q可以用I格占位的办法以辑ֈ最x果?br><br><br><br><strong>在菜单中引入位图的方?/strong><br><br><br><br>1.dToolBarQ依ơ用Menu菜单ID作ؓToolBar按钮的ID?br><br>2.ToolBar上的按钮图标显C在相应的菜单项中?br><br>上面代码中的m_btn.SetMenu(IDR_MENU, m_hWnd);<br><br>改ؓm_btn.SetMenu(IDR_MENU, m_hWnd, TRUE, IDR_TOOLBAR);<br><br>IDR_TOOLBAR为相应ToolBar的ID?br><br><a id=F3 name=F3></a><br><br><strong><img height=16 alt="" src="http://www.vckbase.com/document/image/paragraph.gif" width=14> 效果三:位图按钮</strong><br><br>假设按钮ID为IDC_BUTTON1<br><br>1.d成员变量<br><br> </p> <br> <pre>CButtonST m_btn;</pre> <br> <p>2.d位图资源QID设ؓIDB_BITMAP1<br><br>3.在OnInitDialog函数中初始化按钮</p> <br> <pre>m_btn.SubclassDlgItem(IDC_BUTTON1,this); m_btn.SetBitmaps(IDB_BITMAP1,RGB(0,0,0)); m_btn.OffsetColor(CButtonST::BTNST_COLOR_BK_IN, 30);</pre> <br> <p><strong>提示:</strong> 上面的SetBitmaps函数会将囄中颜色gؓRGB(0,0,0)的点设ؓ透明?br><br><a id=F4 name=F4></a><br><br><strong><img height=16 alt="" src="http://www.vckbase.com/document/image/paragraph.gif" width=14> 效果四:按钮焦点</strong><br><br><br><br>假设按钮ID为IDC_BUTTON1<br><br>1.d成员变量<br><br> </p> <br> <pre>CButtonST m_btn;</pre> <br> <p>2. dIcon资源Q设其ID设ؓIDI_ICON1<br><br>3. 在OnInitDialog函数中初始化按钮</p> <br> <pre>m_btn.SubclassDlgItem(IDC_BUTTON1,this); m_btn.SetIcon(IDI_ICON1); m_btn.SetAlign(CButtonST::ST_ALIGN_VERT); m_btn.DrawFlatFocus(TRUE);</pre> <br> <p><a id=F5 name=F5></a><br><br><strong><img height=16 alt="" src="http://www.vckbase.com/document/image/paragraph.gif" width=14> 效果五:CheckBox按钮</strong><br><br><br><br>假设按钮ID为IDC_BUTTON1<br><br>1.d成员变量<br><br> </p> <br> <pre>CButtonST m_btn;</pre> <br> <p>2. dIcon资源QID设ؓIDI_ICON1和IDI_ICON2<br><br>3.在OnInitDialog函数中初始化按钮</p> <br> <pre>m_btn.SubclassDlgItem(IDC_CHECK1,this); m_btn.SetIcon(IDI_ICON1,IDI_ICON2); m_btn.OffsetColor(CButtonST::BTNST_COLOR_BK_IN, 30); </pre> <br> <p><strong>提示:</strong><br><br>IDI_ICON1为选中时候显C的图标<br><br>IDI_ICON2Zؓ选中时候的图标<br><br><a id=F6 name=F6></a><br><br><strong><img height=16 alt="" src="http://www.vckbase.com/document/image/paragraph.gif" width=14> 效果六:透明按钮</strong><br><br><br><br>假设按钮ID为IDC_BUTTON1<br><br>1.d成员变量<br><br> </p> <br> <pre>CButtonST m_btn;</pre> <br> <p>2. dIcon资源QID设ؓIDI_ICON1<br><br>3.在OnInitDialog函数中初始化按钮</p> <br> <pre>m_btn.SubclassDlgItem(IDC_BUTTON1,this); m_btn.SetIcon(IDI_ICON1); m_btn.DrawTransparent(TRUE);</pre> <br> <p><strong><a id=F7 name=F7></a><br><br><img height=16 alt="" src="http://www.vckbase.com/document/image/paragraph.gif" width=14> 效果七:Ҏ的PictureBox</strong><br><br><br><br>利用CButtonST的特D显C风|完全可以把它当作一个PictureBox控g使用。这时一般会把按钮的属性设|ؓdisable?br><br>实例Q演C程序的About中使用了CButtonST来代替PictureBox?/p> <br> <p><strong>一、CWinXPButtonSTc?br><br><br><br></strong>CWinXPButtonSTc?是一个CButtonST的派生类。它的特Ҏ使用了WindowsXP中的圆角、黑色边框的风格。它包括WinXPButtonST.h和WinXPButtonST.cpp两个文gQ而由于它是从CButtonSTz而来的,所以在引用它时,也要一q引入CButtonST的文件?br><br>使用Q?br><br>1. 引入文gQ添加文?br><br>2. 导入文g后,在SdtAfx.h文g中添?/p> <br> <pre>#include "WinXPButtonST.h"</pre> <br> <p>3. d成员变量</p> <br> <pre>CWinXPButtonST m_btn2;</pre> <br> <p>4. 假设按钮ID为IDC_BUTTON<br><br>dIcon资源QID设ؓIDI_ICON1<br><br>5. 在OnInitDialog函数中初始化按钮<br><br> </p> <br> <pre>m_btn2.SubclassDlgItem(IDC_BUTTON,this); m_btn2.SetIcon(IDI_ICON1); m_btn2.SetRounded(TRUE); </pre> <br> <p>注意Q但是它存在一个不的地方Q就是按钮的圆角是画出来的,按钮的Ş状仍然是原来的矩形。所以如果在有背景色的窗口中使用该按钮的话就会显得相当碍眹{?br><br>如图所C,在黑色的背景色中昄出难看的角Q?br><br><img height=168 alt="" src="http://www.vckbase.com/document/journal/vckbase17/images/CButtonST3a.gif" width=536><br><br><br><br>解决的办法是通过SetColor函数使得按钮的底色与H口的底色一致?<br><br><br><br><strong><img height=16 alt="" src="http://www.vckbase.com/document/image/paragraph.gif" width=14> 二、CShadeButtonSTc?/strong><br><br><br><br>CShadeButtonSTc?是CButtonST的另一个派生类。它的特Ҏ支持更ؓ多样化的背景Q通过SetShade函数可以为按钮设|?U不通的背景效果。它包括四个文gQ它们分别是CeXDib.h、CeXDib.cpp、ShadeButtonST.h和ShadeButtonST.cpp。在引用它时,同样要一q引入CButtonST的文件?br><br>使用Q?br><br>1.引入文gQ添加文?br><br>2.导入文g后,在SdtAfx.h文g中添?br><br> </p> <br> <pre>#include "ShadeButtonST.h"</pre> <br> <p>3.d成员变量</p> <br> <pre>CShadeButtonST m_btn3;</pre> <br> <p>4.假设按钮ID为IDC_BUTTON3<br><br>dIcon资源QID设ؓIDI_ICON1<br><br><br><br>5.在OnInitDialog函数中初始化按钮</p> <br> <pre>m_btn3.SubclassDlgItem(IDC_BUTTON3,this); m_btn3.SetIcon(IDI_ICON1); m_btn3.SetShade(CShadeButtonST::SHS_METAL); </pre> <br> <p>下面l出各种背景效果和对应的参数倹{?br><br><img height=336 alt="" src="http://www.vckbase.com/document/journal/vckbase17/images/CButtonST4.gif" width=497><br><br><img height=318 alt="" src="http://www.vckbase.com/document/journal/vckbase17/images/CButtonST4a.gif" width=491> </p> <br> <img src ="http://m.shnenglu.com/changshoumeng/aggbug/115219.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/changshoumeng/" target="_blank">长寿?/a> 2010-05-12 20:25 <a href="http://m.shnenglu.com/changshoumeng/archive/2010/05/12/115219.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VC下ADO数据库操作的装c?/title><link>http://m.shnenglu.com/changshoumeng/archive/2010/05/12/115216.html</link><dc:creator>长寿?/dc:creator><author>长寿?/author><pubDate>Wed, 12 May 2010 11:35:00 GMT</pubDate><guid>http://m.shnenglu.com/changshoumeng/archive/2010/05/12/115216.html</guid><wfw:comment>http://m.shnenglu.com/changshoumeng/comments/115216.html</wfw:comment><comments>http://m.shnenglu.com/changshoumeng/archive/2010/05/12/115216.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://m.shnenglu.com/changshoumeng/comments/commentRss/115216.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/changshoumeng/services/trackbacks/115216.html</trackback:ping><description><![CDATA[     摘要: /**//****************************************************************** 模块名称Q数据库操作c; 实现功能Q提供接口,实现数据的烦引,和操作?nbsp;研究人员Q长寿梦Q?nbsp;最后更斎ͼ2010-05-12 预先操作Q?nbsp;?】在stdafx.h中添?nbsp; &nb...  <a href='http://m.shnenglu.com/changshoumeng/archive/2010/05/12/115216.html'>阅读全文</a><img src ="http://m.shnenglu.com/changshoumeng/aggbug/115216.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/changshoumeng/" target="_blank">长寿?/a> 2010-05-12 19:35 <a href="http://m.shnenglu.com/changshoumeng/archive/2010/05/12/115216.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://m.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.fjhby.cn" target="_blank">˾þô߽</a>| <a href="http://www.wxpie.cn" target="_blank">91ƷùۺϾþ</a>| <a href="http://www.zhaopf.com.cn" target="_blank">þþþþþۺ</a>| <a href="http://www.seomog.cn" target="_blank">þþƷþһ</a>| <a href="http://www.hyly168.com.cn" target="_blank">޾ƷŮþþþ99С˵</a>| <a href="http://www.barf1.com.cn" target="_blank">þþƷһapp</a>| <a href="http://www.shenhoulong.com.cn" target="_blank">һɫþ88ձȡۺ</a>| <a href="http://www.hy129.cn" target="_blank">Ʒþþþþۺձ</a>| <a href="http://www.khdv.cn" target="_blank">þùƷþþ</a>| <a href="http://www.xczg.org.cn" target="_blank">þþž޾Ʒ</a>| <a href="http://www.seowiki.com.cn" target="_blank">Ƶþ</a>| <a href="http://www.czqxj.cn" target="_blank">þﶼǾƷ</a>| <a href="http://www.todd3015.cn" target="_blank">޹Ʒþһ </a>| <a href="http://www.donki.net.cn" target="_blank">㽶þۺӰ</a>| <a href="http://www.99j9.cn" target="_blank">þþþþþƵ</a>| <a href="http://www.cn0317.cn" target="_blank">޹þþþƷ</a>| <a href="http://www.uj60.cn" target="_blank">þ޾ƷAV</a>| <a href="http://www.easecorp.com.cn" target="_blank">鶹Ʒþһ</a>| <a href="http://www.anfubbs.cn" target="_blank">þùһ</a>| <a href="http://www.918gn.cn" target="_blank">þþþþùƷŮ</a>| <a href="http://www.rcipbrdgydr.cn" target="_blank">ƷۺϾþ</a>| <a href="http://www.aigoua.cn" target="_blank">þþþ޾Ʒһ</a>| <a href="http://www.gd44.cn" target="_blank">þþƷһ</a>| <a href="http://www.fayongshicai.cn" target="_blank">þñۺϾþ</a>| <a href="http://www.barf1.com.cn" target="_blank">þ99þ99Ʒӿ</a>| <a href="http://www.mrzqjn.cn" target="_blank">þŷƷ</a>| <a href="http://www.sme369.cn" target="_blank">ھƷѾþӰԺ</a>| <a href="http://www.renliu123.cn" target="_blank">þþƷƵһ</a>| <a href="http://www.spbbs.cn" target="_blank">þþۺϾɫۺ98</a>| <a href="http://www.ter2.cn" target="_blank">ۺϾþøϾþúݺݺ97ɫ</a>| <a href="http://www.qlmoban.cn" target="_blank">AVþþƷ</a>| <a href="http://www.zhjcys.cn" target="_blank">2021þþƷ</a>| <a href="http://www.3495.com.cn" target="_blank">þþƷ</a>| <a href="http://www.sidongliiang.cn" target="_blank">ݹƷþþþ</a>| <a href="http://www.zx444.cn" target="_blank">˾ƷۺϾþþþ</a>| <a href="http://www.duanchu.cn" target="_blank">þԭƷӰԺ</a>| <a href="http://www.837666.cn" target="_blank">Ļһþ</a>| <a href="http://www.5qzone.cn" target="_blank">Ʒ۲ӰԺþ</a>| <a href="http://www.13542350234.cn" target="_blank">ۺ˾þۺ</a>| <a href="http://www.xibu520.cn" target="_blank">ҹƷþþþó</a>| <a href="http://www.hqfood.com.cn" target="_blank">һþ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>