亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
欧美成人激情免费网| 91啪九色porn原创视频在线观看| 久久综合九色欧美综合狠狠 | 91黄色激情网站| 久久成人精品无人区| 亚洲成人在线免费| 亚洲国产wwwccc36天堂| 亚洲日穴在线视频| 国产精品久久久久9999吃药| 久久精品夜色噜噜亚洲a∨| 欧美一区二区三区四区在线观看| 日本电影亚洲天堂一区| 成人教育av在线| 免费人成网站在线观看欧美高清| 亚洲成人在线网站| 日韩精品成人一区二区三区| 一区二区免费在线播放| 一区二区三区视频在线观看| 国产精品久久久久久久久快鸭| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 色域天天综合网| 欧美中文字幕不卡| 欧美电影一区二区| 欧美一区二区三区男人的天堂| 欧美一区二区三区小说| 精品国产污网站| 国产视频911| 亚洲最大色网站| 国产高清一区日本| 国产91丝袜在线18| 色婷婷精品久久二区二区蜜臂av | 欧美激情一区二区三区四区| 亚洲欧洲av一区二区三区久久| 亚洲一区二区免费视频| 国产一区二区在线看| 在线精品视频小说1| 久久久久国产成人精品亚洲午夜| **网站欧美大片在线观看| 日本三级亚洲精品| 成人国产一区二区三区精品| 欧美精品色一区二区三区| 久久精品免视看| 视频一区在线播放| 在线亚洲+欧美+日本专区| 精品奇米国产一区二区三区| 亚洲一二三四在线观看| 成人性视频网站| 日韩欧美国产电影| 一区二区三区在线看| 国产99久久久国产精品潘金网站| 欧美美女直播网站| 亚洲免费三区一区二区| 久久99久久久久久久久久久| 欧美日韩免费观看一区三区| 欧美va亚洲va国产综合| 亚洲成a人v欧美综合天堂下载| 成人av网在线| 亚洲国产精品ⅴa在线观看| 五月激情丁香一区二区三区| 在线免费视频一区二区| 久久久亚洲国产美女国产盗摄| 久久爱另类一区二区小说| 欧美日韩精品免费| 亚洲成人av福利| 欧美乱妇23p| 免费成人av在线播放| 欧美一区二区三区人| 亚洲444eee在线观看| 欧美视频一区二区在线观看| 亚洲国产综合色| 欧美精品一级二级| 美女mm1313爽爽久久久蜜臀| 亚洲精品一区二区三区福利 | 国产激情一区二区三区| 国产精品电影一区二区三区| 99视频一区二区| 视频一区在线视频| 日韩精品一区二区三区在线观看| 日韩黄色免费电影| 精品国产免费人成电影在线观看四季| 日韩成人dvd| 欧美国产精品一区二区| 99久免费精品视频在线观看| 亚洲人精品一区| 欧美大片国产精品| 99精品在线免费| 全国精品久久少妇| 综合久久给合久久狠狠狠97色| 欧美三级日本三级少妇99| 国模大尺度一区二区三区| 国产精品乱码一区二三区小蝌蚪| 欧美精品乱码久久久久久按摩| 日本成人在线看| 亚洲日本一区二区三区| 精品久久一区二区三区| 欧美三级三级三级爽爽爽| 激情图片小说一区| 亚洲一卡二卡三卡四卡 | 亚洲精品你懂的| 午夜欧美在线一二页| 亚洲欧美成人一区二区三区| 亚洲欧洲国产日本综合| 亚洲午夜在线观看视频在线| 777xxx欧美| 欧美日韩一区小说| fc2成人免费人成在线观看播放| 视频在线观看一区二区三区| 亚洲欧美国产毛片在线| 国产欧美日韩亚州综合| 7777精品伊人久久久大香线蕉完整版| 东方欧美亚洲色图在线| 国内精品久久久久影院薰衣草| 韩国精品免费视频| 蜜桃视频一区二区三区在线观看| 麻豆一区二区三区| 大陆成人av片| 色呦呦国产精品| 欧美在线看片a免费观看| 欧美亚洲动漫精品| 91麻豆精品国产无毒不卡在线观看 | 国产呦萝稀缺另类资源| 国产一区二区不卡在线| 韩国一区二区在线观看| 国产黄色精品网站| 色综合久久久久久久久久久| 欧美日韩中文字幕精品| 国产精品一线二线三线| 日精品一区二区三区| 成人性视频免费网站| 欧美xxxxx牲另类人与| 亚洲成人免费在线观看| 国产毛片一区二区| 日本黄色一区二区| 久久久99精品免费观看| 一区二区三区日韩精品视频| 日本视频在线一区| 成人高清免费观看| 欧美精品一卡二卡| 欧美国产日韩亚洲一区| 亚洲已满18点击进入久久| 日本最新不卡在线| 色综合网站在线| 国产亚洲精品超碰| 久久激五月天综合精品| 色综合久久久久综合体| 日韩精品最新网址| 图片区小说区区亚洲影院| 丁香一区二区三区| 精品久久久久久久人人人人传媒 | 国产精品性做久久久久久| 成人福利视频网站| 欧美在线不卡一区| 亚洲国产成人在线| 日韩成人伦理电影在线观看| jizzjizzjizz欧美| 26uuu亚洲| 久久99精品国产.久久久久| 91精品国产91久久久久久一区二区| 一区二区三区免费网站| 欧美日韩精品三区| 奇米777欧美一区二区| 欧美三级资源在线| 欧美96一区二区免费视频| 欧美一区二区三区公司| 亚洲美女淫视频| 99r精品视频| 综合亚洲深深色噜噜狠狠网站| 国产精品白丝jk黑袜喷水| 亚洲精品一区二区精华| 亚洲少妇最新在线视频| 成人av网站在线| 国产日韩欧美在线一区| 日韩国产精品久久| 欧美精品aⅴ在线视频| 亚洲不卡一区二区三区| 岛国精品在线播放| 国产网红主播福利一区二区| 精品制服美女丁香| 欧美精品一区二区三区蜜桃视频| 午夜视频在线观看一区二区三区| 欧美绝品在线观看成人午夜影视| 国产精品欧美一区喷水| 成人黄色一级视频| 亚洲欧美色综合| 在线观看日产精品| 免费观看一级欧美片| 日韩免费一区二区三区在线播放| 首页国产欧美久久| 亚洲国产精品v| aaa亚洲精品| 午夜精品久久久久久久| 2024国产精品视频| 丁香一区二区三区| 一区二区三区波多野结衣在线观看| 欧美日本一区二区在线观看| 国产一区福利在线| 亚洲六月丁香色婷婷综合久久| 欧美精品一级二级| 成人黄色电影在线| 免费av网站大全久久|