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

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

?? ch17.htm

?? 24小時學會vc++
?? HTM
?? 第 1 頁 / 共 2 頁
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"><HTML><HEAD>		<META NAME="GENERATOR" Content="Symantec Visual Page Mac 1.1">	<TITLE>Teach Yourself Visual C++&#174; 5 in 24 Hours -- Hour 17 -- Using Image Lists and Bitmaps</TITLE></HEAD><BODY TEXT="#000000" BGCOLOR="#FFFFFF"><H1 ALIGN="CENTER"><IMG SRC="../button/sams.gif" WIDTH="171" HEIGHT="66" ALIGN="BOTTOM"BORDER="0"><BR><FONT COLOR="#000077">Teach Yourself Visual C++&#174; 5 in 24 Hours</FONT></H1><CENTER><P><A HREF="../ch16/ch16.htm"><IMG SRC="../button/previous.gif" WIDTH="128" HEIGHT="28"ALIGN="BOTTOM" ALT="Previous chapter" BORDER="0"></A><A HREF="../ch18/ch18.htm"><IMGSRC="../button/next.gif" WIDTH="128" HEIGHT="28" ALIGN="BOTTOM" ALT="Next chapter"BORDER="0"></A><A HREF="../index.htm"><IMG SRC="../button/contents.gif" WIDTH="128"HEIGHT="28" ALIGN="BOTTOM" ALT="Contents" BORDER="0"></A> <HR></CENTER><H1 ALIGN="CENTER"><FONT COLOR="#000077">- Hour 17 -<BR>Using Image Lists and Bitmaps</FONT></H1><P>Image lists can be used to store collections of bitmaps, making them useful whenseveral bitmaps are needed, such as in tree view and list view controls. In thishour, you learn<UL>	<LI>How to create an image list<BR>	<BR>		<LI>The properties and methods that can be applied to an image list<BR>	<BR>		<LI>How to use an image list as a bitmap container<BR>	<BR>		<LI>The advanced drawing features offered by image lists</UL><P>Also, in this hour you will build a sample program that creates an image listand uses it as a storage location for bitmap images. This hour will build a foundationthat you will use later in Hour 18, &quot;List View Controls,&quot; and Hour 19,&quot;Tree Views.&quot;<H2><FONT COLOR="#000077"><B>What Is an Image List?</B></FONT></H2><P>An image list is similar to an array of bitmaps, just like a roll of film is anarray of images, as shown in Figure 17.1. Unlike rolls of film, an image list cangrow, if needed, as extra images are added to the list. Each bitmap stored in animage list is associated with an index, which can be used to retrieve a particularimage.</P><P><A NAME="01"></A><A HREF="01.htm"><B>Figure 17.1.</B></A> <BR><I>An image list is like a roll of bitmap images.</I><BLOCKQUOTE>	<P><HR><FONT COLOR="#000077"><B>Time Saver:</B></FONT><B> </B>Image lists can also be used	outside these new controls, and they provide an easy way to store a series of bitmaps,	because you must handle only a single image-list object instead of separate objects	for each bitmap. <HR></BLOCKQUOTE><P>If you want to display bitmaps in tree views or list views, you must use an imagelist. If your program needs to manage several different bitmapped images, a singleimage list is easier to use than a series of bitmaps. Accessing and displaying multipleimages from an image list is much easier than handling multiple <TT>CBitmap</TT>objects. Windows Explorer has a much richer user interface than the older File Managerused in Windows 3.1. Much of this richness is achieved through the use of image lists,which offer an easy way to store and manage bitmaps.</P><P>In addition, image lists offer two features that are difficult to duplicate withregular bitmaps:<UL>	<LI>Transparent images	<LI>Overlaid images</UL><P><FONT COLOR="#000077"><B>New Term:</B></FONT><B> </B>A <I>transparent image</I>is an image that allows the background to be seen through part of the image, as ifpart of the bitmap were transparent.</P><P>A transparent image is difficult to achieve using a normal bitmap. In the simplestcases, about twice as many lines of code are required to draw a bitmap transparentlyas are required to draw it as an opaque image against a drawing surface. Using animage list, drawing a transparent bitmap is almost effortless, requiring little morethan parameters that are set correctly.</P><P><FONT COLOR="#000077"><B>New Term:</B></FONT><B> </B>An <I>overlaid image </I>iscreated by combining two images to form a single, combined image.</P><P>An overlaid image is useful when showing special attributes for items representedby images stored in an image list. For example, when a shared directory is shownin the Explorer, a server &quot;hand&quot; is superimposed over the directory's folder.This is an overlaid image.<H2><FONT COLOR="#000077"><B>How Is an Image List Used?</B></FONT></H2><P>As for almost everything else in Windows, there is an MFC class for image lists,too. The <TT>CImageList</TT> class is used to create, display, and otherwise manageimage lists in an MFC-based Windows program.</P><P>Image lists often are used to provide item images for the <TT>CListCtrl</TT> classthat is covered in Hour 18, and the <TT>CTreeCtrl</TT> class that is covered in Hour19. However, you can also use an image list as a collection of bitmaps, which youwill do in this chapter. Using image lists in this way helps show off the differentthings you can do with image lists before they are used with the common controls.</P><P>As an example of using image lists, create an SDI project named ImageList. Thisproject uses an image list to display a series of bitmaps in the program's clientarea.<H3><FONT COLOR="#000077"><B>Creating an Image List</B></FONT></H3><P>The first step in creating an image list is to create a series of bitmaps, eachof which is the same size. Although the images can be any size, the sample code inthis section assumes the bitmaps are 32 pixels on each side. The bitmaps used inthe example are shown in Figure 17.2.</P><P><A NAME="02"></A><A HREF="02.htm"><B>Figure 17.2.</B></A> <I><BR>The bitmaps used in the ImageList example are all the same size.</I></P><P>Create the three bitmaps, and name them as shown in Table 17.1.<H4><FONT COLOR="#000077">Table 17.1. Bitmaps used in the ImageList project.</FONT></H4><P><TABLE BORDER="1">	<TR ALIGN="LEFT" rowspan="1">		<TD ALIGN="LEFT" VALIGN="TOP"><B>ID</B></TD>		<TD ALIGN="LEFT" VALIGN="TOP"><B>Description</B></TD>	</TR>	<TR ALIGN="LEFT" rowspan="1">		<TD ALIGN="LEFT" VALIGN="TOP"><TT>IDB_CROSS</TT></TD>		<TD ALIGN="LEFT" VALIGN="TOP">Cross mark</TD>	</TR>	<TR ALIGN="LEFT" rowspan="1">		<TD ALIGN="LEFT" VALIGN="TOP"><TT>IDB_CHECK</TT></TD>		<TD ALIGN="LEFT" VALIGN="TOP">Check mark</TD>	</TR>	<TR ALIGN="LEFT" rowspan="1">		<TD ALIGN="LEFT" VALIGN="TOP"><TT>IDB_BANG</TT></TD>		<TD ALIGN="LEFT" VALIGN="TOP">Exclamation point</TD>	</TR></TABLE></P><P>Storing a bitmap image in an image list consists of three steps:<DL>	<DD>1. Load the bitmap.<BR>	<BR>	2. Create a new image index in the image list that contains a copy of the bitmap.<BR>	<BR>	3. Delete the bitmap object.</DL><P>The bitmap object is deleted because the image list makes a copy of the bitmapand stores the image internally. As a rule of thumb, any time a Windows GDI objectis loaded, it should be deleted to prevent memory leaks. The preceding steps arehandled by <TT>AddBitmapToImageList</TT>, a new function added to the <TT>CImageListView</TT>class. Add the function provided in Listing 17.1 to the <TT>ImageListView.cpp</TT>source file.<H4><FONT COLOR="#000077">TYPE: Listing 17.1. The CImageListView::AddBitmapToImageListfunction.</FONT></H4><PRE><FONT COLOR="#0066FF"><TT>BOOL CImageListView::AddBitmapToImageList( UINT nResourceID )</TT><TT>{</TT><TT>    BOOL bReturn;</TT><TT>    CBitmap bmp;</TT><TT>    bReturn = bmp.LoadBitmap( nResourceID );</TT><TT>    if( bReturn != FALSE )</TT><TT>    {</TT><TT>        int nReturn = m_imageList.Add( &amp;bmp, RGB(255,255,255) );</TT><TT>        bmp.DeleteObject();</TT><TT>    }</TT><TT>    return bReturn;</TT></FONT></PRE><P><TT>}</TT> The <TT>AddBitmapToImageList</TT> function is used because three bitmapresources are added to the image list. Adding the bitmaps using a new member functionreduces the amount of code you must write and helps reduce the chance of errors,because every bitmap is loaded using the same function.</P><P>The <TT>CImageList::Add</TT> member function is used to add an image to the imagelist. The version of <TT>Add</TT> used in Listing 17.1 takes two parameters:<UL>	<LI>The address of the <TT>CBitmap</TT> image to be copied into the image list<BR>	<BR>		<LI>A <TT>COLORREF</TT> value that represents the background color of the bitmap</UL><BLOCKQUOTE>	<P><HR><FONT COLOR="#000077"><B>Time Saver:</B></FONT><B> </B>The background color is used	when drawing transparent images using masked bitmaps. If you aren't using a masked	image list, the <TT>COLORREF</TT> value is ignored. <HR></BLOCKQUOTE><P>After adding the member function to the <TT>ImageListView.cpp</TT> file, add thesource code from Listing 17.2 to the <TT>CImageListView</TT> class, found in thefile <TT>ImageListView.h</TT>. Add the source code in the class implementation section,which is marked by the <TT>// Implementation</TT> comment. After the comment, thereis a <TT>protected:</TT> label inserted by AppWizard for user- supplied variablesand functions.<H4><FONT COLOR="#000077">TYPE: Listing 17.2. Source code to be added to the CImageListViewclass.</FONT></H4><PRE><FONT COLOR="#0066FF"><TT>protected:</TT><TT>    BOOL        AddBitmapToImageList( UINT nResourceID );</TT></FONT></PRE><P><TT>CImageList m_imageList;</TT> The actual work of creating the image list isdone when the view is constructed. The image list can be built at any time; however,it is costly to create an image list in terms of computing power. Creating the imagelist in the constructor lets you build it once, rather than each time it is used.Add the source code from Listing 17.3 to the constructor for <TT>CImageViewList</TT>.<H4><FONT COLOR="#000077">TYPE: Listing 17.3. The CImageListView constructor.</FONT></H4><PRE><FONT COLOR="#0066FF"><TT>CImageListView::CImageListView()</TT><TT>{</TT><TT>    m_imageList.Create( 32, 32, TRUE, 3, 1 );</TT><TT>    AddBitmapToImageList( IDB_CROSS );</TT><TT>    AddBitmapToImageList( IDB_CHECK );</TT><TT>    AddBitmapToImageList( IDB_BANG );</TT></FONT></PRE><P><TT>}</TT> The image list is created using one of the <TT>CImageList::Create</TT>functions. This version of <TT>Create</TT> is useful when an image list is used asa bitmap collection; I use other versions of <TT>Create</TT> in the following chapters.This version of <TT>Create</TT> has five parameters:<UL>	<LI>The height of each bitmap; in this case, 32 pixels<BR>	<BR>		<LI>The width of each bitmap; in this case, 32 pixels<BR>	<BR>		<LI>Whether or not the image list is masked for transparency; in this case, <TT>TRUE</TT><BR>	<BR>		<LI>The number of bitmaps stored initially in the image list; in this case, three<BR>	<BR>		<LI>The &quot;grow-by,&quot; or the number of bitmaps added when the image list is	expanded; in this case, one</UL><P><FONT COLOR="#000077"><B>New Term:</B></FONT><B> </B>A <I>masked image list</I>is an image list that contains two bitmaps for each image--the second bitmap is amask that is used when drawing transparent images. Parts of the image that are visibleare colored black in the mask, parts that are transparent are colored white in themask.<H3><FONT COLOR="#000077"><B>Displaying an Image List Using the <TT>CImageList::Draw</TT>Function</B></FONT></H3><P>Individual items stored in an image list can be drawn using the <TT>CImageList::Draw</TT>member function, as shown in Listing 17.4.<H4><FONT COLOR="#000077">TYPE: Listing 17.4. Using CImageList::Draw to display a

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产aⅴ综合色| 欧美成人欧美edvon| 欧美一区二区在线免费观看| 国产亚洲一区二区三区| 亚洲123区在线观看| 国产精品亚洲视频| 日韩欧美久久久| 一区二区三区精品在线| av成人动漫在线观看| 久久久精品国产免大香伊| 蜜臀av一区二区| 欧美高清一级片在线| 亚洲美女屁股眼交| 国产成人亚洲精品青草天美| 欧美电影免费观看高清完整版在 | 图片区小说区国产精品视频| k8久久久一区二区三区| 国产网站一区二区三区| 狠狠色狠狠色综合| 精品国产精品一区二区夜夜嗨| 亚欧色一区w666天堂| 欧美这里有精品| 一区二区高清在线| 在线影院国内精品| 一区二区在线看| 日韩网站在线看片你懂的| 日本成人在线看| 91精品国产综合久久久久久久久久| 亚洲一区免费观看| 欧美男生操女生| 日韩影院免费视频| 精品免费视频一区二区| 麻豆成人91精品二区三区| 欧美r级电影在线观看| 视频一区欧美精品| 日韩欧美精品三级| 久久99日本精品| 亚洲精品在线免费观看视频| 国产精品99久久久| 国产精品人妖ts系列视频 | 精彩视频一区二区三区| 日韩精品一区二区三区蜜臀| 激情图区综合网| 国产欧美一区二区精品久导航 | 中文字幕免费不卡| 成人免费黄色在线| 一级特黄大欧美久久久| 欧美日高清视频| 美女网站一区二区| 日韩精品亚洲一区| 欧美va亚洲va香蕉在线| 国产精品911| 亚洲欧美日韩在线播放| 制服丝袜在线91| 风间由美一区二区三区在线观看| 亚洲视频每日更新| 欧美一区日本一区韩国一区| 国产成人综合网站| 一区二区三区免费在线观看| 欧美一三区三区四区免费在线看 | 久久精品人人做| 91无套直看片红桃| 免费国产亚洲视频| 亚洲少妇30p| 这里只有精品电影| 成人av网站在线| 青青草原综合久久大伊人精品 | 黄色小说综合网站| 亚洲区小说区图片区qvod| 欧美一区日韩一区| aaa国产一区| 久久精品国产亚洲a| 日韩理论片在线| 久久综合九色综合97婷婷| 色婷婷国产精品| 国产91精品一区二区麻豆网站| 亚洲自拍另类综合| 国产精品免费av| 精品奇米国产一区二区三区| 91激情五月电影| 国产成人av电影在线| 奇米精品一区二区三区四区 | 中文字幕永久在线不卡| 欧美一区二区视频观看视频| 色综合久久天天| 国产精品18久久久久久久久久久久 | 色先锋久久av资源部| 国产mv日韩mv欧美| 免费成人深夜小野草| 亚洲午夜免费视频| 国产精品国产自产拍在线| 久久综合精品国产一区二区三区| 欧美福利一区二区| 欧美三电影在线| 色狠狠桃花综合| 91玉足脚交白嫩脚丫在线播放| 国产99精品视频| 国产成人8x视频一区二区 | 91成人免费电影| 色综合天天综合网天天看片| www.久久精品| 成人黄页在线观看| 国产suv精品一区二区883| 国产在线精品免费av| 喷水一区二区三区| 美女在线观看视频一区二区| 蜜桃一区二区三区在线观看| 同产精品九九九| 午夜精品成人在线视频| 亚洲国产成人高清精品| 亚洲成人在线网站| 图片区小说区国产精品视频| 无吗不卡中文字幕| 免费高清在线一区| 麻豆精品国产91久久久久久| 韩国视频一区二区| 国产九色精品成人porny| 国产成人av电影在线观看| 成人丝袜视频网| 色综合色综合色综合色综合色综合| av影院午夜一区| 欧美在线视频你懂得| 在线播放日韩导航| 日韩欧美国产wwwww| www欧美成人18+| 国产精品久久久久久久久免费相片| 国产精品福利av| 亚洲大尺度视频在线观看| 麻豆久久久久久久| 国产福利一区二区三区视频在线 | 国产综合色产在线精品| 国产一区二区三区高清播放| 成人在线视频一区二区| 欧洲国内综合视频| 欧美不卡一区二区| 国产女人18毛片水真多成人如厕| 1区2区3区精品视频| 亚洲高清在线精品| 久久机这里只有精品| 成人性生交大合| 欧美日韩大陆一区二区| 精品国产乱码久久久久久图片 | 国产日韩欧美精品在线| 一区二区免费看| 激情文学综合丁香| 在线观看国产91| 2020国产精品| 亚洲一区电影777| 国产一区二区三区免费观看| 色综合一区二区三区| 精品久久国产字幕高潮| 中文字幕一区二| 另类调教123区| 色8久久精品久久久久久蜜| 欧美精品一区二区三区一线天视频| 综合久久久久久| 精油按摩中文字幕久久| 在线观看日韩电影| 国产婷婷色一区二区三区| 偷拍与自拍一区| k8久久久一区二区三区| 精品久久久久久久久久久久包黑料 | 制服丝袜在线91| 亚洲欧洲成人精品av97| 国产在线乱码一区二区三区| 色成年激情久久综合| 久久精品视频一区二区三区| 午夜精品福利一区二区三区蜜桃| 成人蜜臀av电影| www久久精品| 免费成人在线观看视频| 欧美三级视频在线| 亚洲人吸女人奶水| 国产麻豆精品久久一二三| 在线综合视频播放| 亚洲成av人片在线| 欧洲精品在线观看| 亚洲美女视频在线观看| av电影在线观看不卡| 中文在线一区二区| 国产在线不卡视频| 欧美大片在线观看一区二区| 午夜激情一区二区| 欧美视频你懂的| 亚洲一区在线视频观看| 91色porny在线视频| 中文字幕第一区| 成人激情黄色小说| 中文av一区二区| 不卡一区二区在线| 亚洲欧洲日产国码二区| 成人黄页毛片网站| ...xxx性欧美| 99精品黄色片免费大全| 日韩一区在线看| 色呦呦国产精品| 亚洲综合久久久| 555夜色666亚洲国产免| 久久精品国产亚洲高清剧情介绍 | 2024国产精品|