亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ch24.htm

?? 24小時學會vc++
?? HTM
?? 第 1 頁 / 共 3 頁
字號:
function draws an ellipse inside the bounding rectangle. This is extremely usefulif you happen to be creating an ellipse control. However, because OleEdit must looklike an edit control, you must change the <TT>OnDraw</TT> function. The changes to<TT>OnDraw</TT> required for the OleEdit control are provided in Listing 24.1.<H4><FONT COLOR="#000077">TYPE: Listing 24.1. The OnDraw function used by COleEditCtrl.</FONT></H4><PRE><FONT COLOR="#0066FF"><TT>void COleEditCtrl::OnDraw(</TT><TT>     CDC* pdc, const CRect&amp; rcBounds, const CRect&amp; rcInvalid)</TT><TT>{</TT><TT>    COLORREF  clrBackground = TranslateColor(GetBackColor());</TT><TT>    CBrush*   pOldBrush;</TT><TT>    CBrush    brBackground( clrBackground );</TT><TT>    pdc-&gt;FillRect( rcBounds, &amp;brBackground );</TT><TT>    pOldBrush = pdc-&gt;SelectObject( &amp;brBackground );</TT><TT>    pdc-&gt;SelectObject( pOldBrush );</TT><TT>    DoSuperclassPaint(pdc, rcBounds);</TT><TT>    CRect rc(rcBounds);</TT><TT>    pdc-&gt;DrawEdge( rc, EDGE_SUNKEN, BF_RECT );</TT><TT>}</TT></FONT></PRE><P>The code provided in Listing 24.1 does three things. First, it fills the control'sbounding rectangle with the ambient background color. Next, it calls <TT>DoSuperclassPaint</TT>to give the edit control a chance to attempt to draw itself properly. Finally, itdraws a three-dimensional edge along the control's bounding rectangle.<H3><FONT COLOR="#000077"><B>Defining Properties for OleEdit</B></FONT></H3><P>OleEdit uses four properties: the <TT>Font</TT> and <TT>Text</TT> stock propertiesand the <TT>fTextAllowed</TT> and <TT>fNumbersAllowed</TT> custom properties. UsingClassWizard, add the stock properties for the OleEdit control. Select the Automationtab, and click the Add Property button. Fill in the dialog box using the values providedin Table 24.1.<H4><FONT COLOR="#000077">Table 24.1. Stock properties for the OleEdit control.</FONT></H4><P><TABLE BORDER="1">	<TR ALIGN="LEFT" rowspan="1">		<TD ALIGN="LEFT" VALIGN="TOP"><B>External Name</B></TD>		<TD ALIGN="LEFT" VALIGN="TOP"><B>Implementation</B></TD>	</TR>	<TR ALIGN="LEFT" rowspan="1">		<TD ALIGN="LEFT" VALIGN="TOP"><TT>Font</TT></TD>		<TD ALIGN="LEFT" VALIGN="TOP">Stock</TD>	</TR>	<TR ALIGN="LEFT" rowspan="1">		<TD ALIGN="LEFT" VALIGN="TOP"><TT>Text</TT></TD>		<TD ALIGN="LEFT" VALIGN="TOP">Stock</TD>	</TR></TABLE></P><P>Use ClassWizard to add a custom property name <TT>fNumbersAllowed</TT> to theOleEdit project. Click the Add Property button and use the values provided in Table24.2.<H4><FONT COLOR="#000077">Table 24.2. The fNumbersAllowed custom property for theOleEdit control.</FONT></H4><P><TABLE BORDER="1">	<TR ALIGN="LEFT" rowspan="1">		<TD ALIGN="LEFT" VALIGN="TOP"><B>Control</B></TD>		<TD ALIGN="LEFT" VALIGN="TOP"><B>Value</B></TD>	</TR>	<TR ALIGN="LEFT" rowspan="1">		<TD ALIGN="LEFT" VALIGN="TOP">External name</TD>		<TD ALIGN="LEFT" VALIGN="TOP"><TT>fNumbersAllowed</TT></TD>	</TR>	<TR ALIGN="LEFT" rowspan="1">		<TD ALIGN="LEFT" VALIGN="TOP">Type</TD>		<TD ALIGN="LEFT" VALIGN="TOP"><TT>BOOL</TT></TD>	</TR>	<TR ALIGN="LEFT" rowspan="1">		<TD ALIGN="LEFT" VALIGN="TOP">Member variable name</TD>		<TD ALIGN="LEFT" VALIGN="TOP"><TT>m_fNumbersAllowed</TT></TD>	</TR>	<TR ALIGN="LEFT" rowspan="1">		<TD ALIGN="LEFT" VALIGN="TOP">Notification function</TD>		<TD ALIGN="LEFT" VALIGN="TOP"><TT>OnFNumbersAllowedChanged</TT></TD>	</TR>	<TR ALIGN="LEFT" rowspan="1">		<TD ALIGN="LEFT" VALIGN="TOP">Implementation</TD>		<TD ALIGN="LEFT" VALIGN="TOP">Member variable</TD>	</TR></TABLE></P><P>Use ClassWizard to add the <TT>fTextAllowed</TT> property, following the stepsused to add the previous properties. Use the values provided in Table 24.3.<H4><FONT COLOR="#000077">Table 24.3. The fTextAllowed custom property for the OleEditcontrol.</FONT></H4><P><TABLE BORDER="1">	<TR ALIGN="LEFT" rowspan="1">		<TD HEIGHT="27" ALIGN="LEFT" VALIGN="TOP"><B>Control</B></TD>		<TD HEIGHT="27" ALIGN="LEFT" VALIGN="TOP"><B>Value</B></TD>	</TR>	<TR ALIGN="LEFT" rowspan="1">		<TD ALIGN="LEFT" VALIGN="TOP">External name</TD>		<TD ALIGN="LEFT" VALIGN="TOP"><TT>fTextAllowed</TT></TD>	</TR>	<TR ALIGN="LEFT" rowspan="1">		<TD ALIGN="LEFT" VALIGN="TOP">Type</TD>		<TD ALIGN="LEFT" VALIGN="TOP"><TT>BOOL</TT></TD>	</TR>	<TR ALIGN="LEFT" rowspan="1">		<TD ALIGN="LEFT" VALIGN="TOP">Variable name</TD>		<TD ALIGN="LEFT" VALIGN="TOP"><TT>m_fTextAllowed</TT></TD>	</TR>	<TR ALIGN="LEFT" rowspan="1">		<TD ALIGN="LEFT" VALIGN="TOP">Notification function</TD>		<TD ALIGN="LEFT" VALIGN="TOP"><TT>OnFTextAllowedChanged</TT></TD>	</TR>	<TR ALIGN="LEFT" rowspan="1">		<TD ALIGN="LEFT" VALIGN="TOP">Implementation</TD>		<TD ALIGN="LEFT" VALIGN="TOP">Member variable</TD>	</TR></TABLE></P><P>Modify the <TT>COleEditCtrl</TT> class constructor to contain code that initializesthe custom properties added in the previous steps. The modified constructor is shownin Listing 24.2.<H4><FONT COLOR="#000077">TYPE: Listing 24.2. Modifications to the COleEditCtrl constructor.</FONT></H4><PRE><FONT COLOR="#0066FF"><TT>ColeEditCtrl::COleEditCtrl()</TT><TT>{</TT><TT>    InitializeIIDs(&amp;IID_DOleEdit, &amp;IID_DOleEditEvents);</TT><TT>    m_fTextAllowed = TRUE;</TT><TT>    m_fNumbersAllowed = TRUE;</TT><TT>}</TT></FONT></PRE><P>Every control created using ControlWizard includes a default property page. TheOleEdit property page is modified by adding two check boxes that control the statesof the <TT>m_fTextAllowed</TT> and <TT>m_fNumbersAllowed</TT> flags. Open the <TT>IDD_PROPPAGE_OLEEDIT</TT>dialog box resource and add two check box controls, as shown in Figure 24.4.</P><P><A NAME="04"></A><A HREF="04.htm"><B>Figure 24.4.</B></A> <I><BR>The property page used in OleEdit.</I></P><P>Table 24.4 lists the properties for the check box controls. All properties thataren't listed should be set to the default values.<H4><FONT COLOR="#000077">Table 24.4. Property values for check box controls in theOleEdit property page.</FONT></H4><P><TABLE BORDER="1">	<TR ALIGN="LEFT" rowspan="1">		<TD ALIGN="LEFT" VALIGN="TOP"><B>Control</B></TD>		<TD ALIGN="LEFT" VALIGN="TOP"><B>Resource ID</B></TD>		<TD ALIGN="LEFT" VALIGN="TOP"><B>Caption</B></TD>	</TR>	<TR ALIGN="LEFT" rowspan="1">		<TD ALIGN="LEFT" VALIGN="TOP">Numbers check box</TD>		<TD ALIGN="LEFT" VALIGN="TOP"><TT>IDC_CHECK_NUMBERS</TT></TD>		<TD ALIGN="LEFT" VALIGN="TOP"><TT>&amp;Numbers Allowed</TT></TD>	</TR>	<TR ALIGN="LEFT" rowspan="1">		<TD ALIGN="LEFT" VALIGN="TOP">Text check box</TD>		<TD ALIGN="LEFT" VALIGN="TOP"><TT>IDC_CHECK_TEXT</TT></TD>		<TD ALIGN="LEFT" VALIGN="TOP"><TT>&amp;Text Allowed</TT></TD>	</TR></TABLE></P><P>Use ClassWizard to associate <TT>COleEditPropPage</TT> member variables with thecontrols, using the values shown in Table 24.5.<H4><FONT COLOR="#000077">Table 24.5. Values for new member variables in COleEditPropPage.</FONT></H4><P><TABLE BORDER="1">	<TR ALIGN="LEFT" rowspan="1">		<TD ALIGN="LEFT" VALIGN="TOP"><B>Control ID</B></TD>		<TD ALIGN="LEFT" VALIGN="TOP"><B>Variable Name</B></TD>		<TD ALIGN="LEFT" VALIGN="TOP"><B>Category</B></TD>		<TD ALIGN="LEFT" VALIGN="TOP"><B>Type</B></TD>		<TD ALIGN="LEFT" VALIGN="TOP"><B>Property Name</B></TD>	</TR>	<TR ALIGN="LEFT" rowspan="1">		<TD ALIGN="LEFT" VALIGN="TOP"><TT>IDC_CHECK_NUMBERS</TT></TD>		<TD ALIGN="LEFT" VALIGN="TOP"><TT>m_fNumbersAllowed</TT></TD>		<TD ALIGN="LEFT" VALIGN="TOP">Value</TD>		<TD ALIGN="LEFT" VALIGN="TOP"><TT>BOOL</TT></TD>		<TD ALIGN="LEFT" VALIGN="TOP"><TT>fNumbersAllowed</TT></TD>	</TR>	<TR ALIGN="LEFT" rowspan="1">		<TD ALIGN="LEFT" VALIGN="TOP"><TT>IDC_CHECK_TEXT</TT></TD>		<TD ALIGN="LEFT" VALIGN="TOP"><TT>m_fTextAllowed</TT></TD>		<TD ALIGN="LEFT" VALIGN="TOP">Value</TD>		<TD ALIGN="LEFT" VALIGN="TOP"><TT>BOOL</TT></TD>		<TD ALIGN="LEFT" VALIGN="TOP"><TT>fTextAllowed</TT></TD>	</TR></TABLE></P><P>ClassWizard uses the optional Property Name field to generate source code thatexchanges the values from the property sheet to the control class. The <TT>DDP</TT>and <TT>DDX</TT> macros are used to transfer and validate property page data. Thecode used to transfer the value of the <TT>IDC_CHECK_TEXT</TT> control looks likethis:</P><PRE><FONT COLOR="#0066FF"><TT>//{{AFX_DATA_MAP(COleEditPropPage)</TT><TT>DDP_Check(pDX, IDC_CHECK_TEXT, m_fTextAllowed, _T(&quot;fTextAllowed&quot;));</TT><TT>DDX_Check(pDX, IDC_CHECK_TEXT, m_fTextAllowed;</TT><TT>//}}AFX_DATA_MAP</TT><TT>DDP_PostProcessing(pDX);</TT></FONT></PRE><P>Inside the control class, you must collect the values from the property page during<TT>DoPropExchange</TT>, as shown in Listing 24.3.<H4><FONT COLOR="#000077">TYPE: Listing 24.3. Collecting property page data duringDoPropExchange.</FONT></H4><PRE><FONT COLOR="#0066FF"><TT>void COleEditCtrl::DoPropExchange(CPropExchange* pPX)</TT><TT>{</TT><TT>    ExchangeVersion(pPX, MAKELONG(_wVerMinor, _wVerMajor));</TT><TT>    COleControl::DoPropExchange(pPX);</TT><TT>    PX_Bool(pPX, _T(&quot;fNumbersAllowed&quot;), m_fNumbersAllowed );</TT><TT>    PX_Bool(pPX, _T(&quot;fTextAllowed&quot;), m_fTextAllowed );</TT><TT>}</TT></FONT></PRE><P>The OleEdit control supports the stock font property. An easy way to give thecontrol access to all the available fonts is to add the standard font property pageto the control. The property pages associated with an ActiveX control are groupedtogether between the <TT>BEGIN_PROPPAGEIDS</TT> and <TT>END_PROPPAGEIDS</TT> macrosin the control class implementation file.</P><P>Listing 24.4 shows how the standard font property page is added to the controlusing the <TT>PROPPAGEID</TT> macro. Remember to change the second parameter passedto the <TT>BEGIN_PROPPAGEIDS</TT> macro, the number of property pages used by thecontrol object. Locate the existing <TT>BEGIN_PROPPAGEIDS</TT> macro in the <TT>OleEditCtl.cpp</TT>file, and change that section of the file so that it looks like the code in Listing24.4.<H4><FONT COLOR="#000077">TYPE: Listing 24.4. Adding the standard font property pageto OleEdit.</FONT></H4><PRE><FONT COLOR="#0066FF"><TT>BEGIN_PROPPAGEIDS(COleEditCtrl, 2)      // changed</TT><TT>    PROPPAGEID(COleEditPropPage::guid)</TT><TT>    PROPPAGEID(CLSID_CFontPropPage)     // changed</TT><TT>END_PROPPAGEIDS(COleEditCtrl)</TT></FONT></PRE><P>As you will see when you test the control later in the hour, adding the font propertypage, along with exposing the stock font property, enables a user to easily changethe control font. The only code that is written to allow the user to change the control'sfont is in Listing 24.4.<H3><FONT COLOR="#000077"><B>Handling Character Input</B></FONT></H3><P>As discussed earlier, OleEdit uses exposed properties to determine whether charactersentered on the keyboard are stored in the edit control. If an invalid character isinput, an <TT>Error</TT> event is fired to the control's container. The message sentto the control as characters are input to the control is <TT>WM_CHAR</TT>. UsingClassWizard, add a message-handling function to the <TT>COleEditCtrl</TT> class,using the values from Table 24.6.<H4><FONT COLOR="#000077">Table 24.6. Handling the WM_CHAR message in COleEditCtrl.</FONT></H4><P><TABLE BORDER="1">	<TR ALIGN="LEFT" rowspan="1">		<TD ALIGN="LEFT" VALIGN="TOP"><B>Class Name</B></TD>		<TD ALIGN="LEFT" VALIGN="TOP"><B>Object ID</B></TD>		<TD ALIGN="LEFT" VALIGN="TOP"><B>Message</B></TD>		<TD ALIGN="LEFT" VALIGN="TOP"><B>Function</B></TD>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美女久久久精品| 蜜桃在线一区二区三区| 日韩精品久久理论片| 国产一区二区三区在线观看精品| 欧美性xxxxxxxx| 国产精品人妖ts系列视频| 蜜臀av性久久久久蜜臀aⅴ流畅| 99久久久精品| 国产视频一区二区三区在线观看| 日本在线不卡视频一二三区| 91影院在线免费观看| 久久久精品国产免大香伊| 日本人妖一区二区| 精品91自产拍在线观看一区| 亚洲韩国一区二区三区| jvid福利写真一区二区三区| 久久久久久亚洲综合| 久久成人精品无人区| 91精品国产丝袜白色高跟鞋| 亚洲成人一二三| 在线免费观看视频一区| 亚洲天堂福利av| 91丨porny丨在线| 国产欧美精品在线观看| 国产精品亚洲专一区二区三区| 欧美一区二区高清| 五月婷婷久久综合| 精品视频999| 亚洲成人av免费| 欧美精品777| 婷婷国产在线综合| 91麻豆精品91久久久久久清纯 | 色老头久久综合| 中文字幕一区二区三区视频| 成人精品一区二区三区中文字幕| 欧美国产国产综合| 99精品欧美一区二区三区综合在线| 国产欧美日韩激情| 成人激情免费视频| 亚洲情趣在线观看| 欧美性色黄大片| 视频在线观看一区二区三区| 91精品欧美一区二区三区综合在| 欧美aaa在线| 精品福利一二区| 国产福利电影一区二区三区| 亚洲国产精品99久久久久久久久| 成人91在线观看| 亚洲综合一二区| 日韩一区二区影院| 国产精品一卡二卡在线观看| 国产精品伦一区| 在线看不卡av| 精品一区二区三区免费| 国产精品不卡视频| 欧美三区在线视频| 国内精品免费**视频| 国产精品视频观看| 欧美日韩免费高清一区色橹橹 | 夜夜嗨av一区二区三区四季av | 九九视频精品免费| 国产精品视频第一区| 精品视频在线免费看| 狠狠色丁香久久婷婷综| 综合电影一区二区三区| 91精品国产入口在线| 成人少妇影院yyyy| 日韩av午夜在线观看| 欧美激情综合在线| 欧美日韩不卡一区二区| 风间由美一区二区三区在线观看 | 精品国产91久久久久久久妲己| 国产福利精品导航| 亚洲电影在线免费观看| 2024国产精品视频| 欧美喷水一区二区| 成人av资源下载| 美女视频黄 久久| 亚洲欧美日韩久久精品| xvideos.蜜桃一区二区| 色成年激情久久综合| 国产精品自拍网站| 日本成人在线不卡视频| 自拍视频在线观看一区二区| 日韩欧美激情在线| 欧美日韩在线精品一区二区三区激情 | 91国产福利在线| 国产成人av资源| 亚洲欧美日韩一区| 国内精品在线播放| 樱花草国产18久久久久| 中文字幕国产一区| 精品少妇一区二区| 欧美一级黄色片| 欧美午夜一区二区三区免费大片| 国产精品88av| 精品午夜久久福利影院| 亚洲一区在线观看免费观看电影高清| 久久久精品一品道一区| 日韩一二三区不卡| 555夜色666亚洲国产免| 色婷婷综合视频在线观看| 国产成人亚洲综合a∨婷婷 | 日韩欧美区一区二| 欧美视频三区在线播放| 在线观看视频欧美| 91黄色免费版| 色狠狠一区二区三区香蕉| 91亚洲国产成人精品一区二三| 国产成人午夜电影网| 国产精品亚洲一区二区三区在线| 精东粉嫩av免费一区二区三区| 美女爽到高潮91| 久久丁香综合五月国产三级网站| 美女视频第一区二区三区免费观看网站| 亚洲国产aⅴ天堂久久| 亚洲综合色成人| 亚洲一区二区三区视频在线| 亚洲午夜日本在线观看| 亚洲成人免费在线观看| 亚洲成年人影院| 国产九色精品成人porny| 国产中文字幕精品| 国产成人在线影院 | 欧美性受xxxx| 欧美日韩一本到| 欧美大白屁股肥臀xxxxxx| 欧美成人精精品一区二区频| 久久人人超碰精品| 中文字幕日韩精品一区| 亚洲午夜久久久久| 青青草原综合久久大伊人精品 | 激情综合网av| 成人性视频免费网站| 日本电影欧美片| 欧美一区二区三区免费大片 | 亚洲午夜激情网页| 日本成人中文字幕在线视频 | 亚洲三级免费电影| 一区二区三区中文在线观看| 五月天激情综合网| 国产麻豆精品在线观看| 色偷偷一区二区三区| 欧美日本一区二区在线观看| 久久婷婷国产综合精品青草| 国产精品国产自产拍在线| 舔着乳尖日韩一区| 丁香网亚洲国际| 欧美绝品在线观看成人午夜影视| 亚洲精品一区二区三区在线观看| 中文字幕一区二区三区视频| 青青草一区二区三区| 99久久国产综合色|国产精品| 欧美日产在线观看| 国产精品第五页| 蜜臀av一区二区| 色噜噜狠狠色综合中国| 久久免费的精品国产v∧| 一区二区三区在线免费| 日本美女一区二区三区| 99国产精品久久久久久久久久| 日韩一级免费观看| 亚洲黄一区二区三区| 国产91丝袜在线播放九色| 欧美群妇大交群的观看方式| 国产精品女同一区二区三区| 日韩va欧美va亚洲va久久| 色婷婷久久99综合精品jk白丝 | 日韩视频免费直播| 国产精品久久久久三级| 开心九九激情九九欧美日韩精美视频电影| 欧美主播一区二区三区| 亚洲国产高清aⅴ视频| 免费在线观看视频一区| 欧美系列日韩一区| 国产精品不卡视频| 国产精品99久久久久久有的能看| 欧美年轻男男videosbes| 亚洲欧美韩国综合色| 国产精品一区三区| 日韩免费看网站| 日本特黄久久久高潮| 欧美日韩视频专区在线播放| 日韩理论电影院| 成人爽a毛片一区二区免费| 久久综合久久99| 久久99久久精品欧美| 777亚洲妇女| 天天综合色天天综合色h| 欧美亚洲综合在线| 亚洲午夜一区二区| 色94色欧美sute亚洲线路一久| 国产精品久久久久久久久搜平片| 免费在线看成人av| 日韩欧美视频在线| 麻豆91精品视频| 欧美一区二区三区播放老司机| 五月天国产精品| 欧美一区二区三区影视| 免费观看一级特黄欧美大片|