资源描述
属性中的 Border 中的各个属性,分别表示什么Dialog Frame WS_CAPTION|WS_POPUP|WS_SYSMENU|WS_CLIPSIBLINGS|DS_MODALFRAMEWS_EX_DLGMODALFRAME|WS_EX_WINDOWEDGEThin比 Dialog Frame 缺少一个扩展属性 WS_EX_DLGMODALFRAMENone 比 Dialog Frame 缺少 WS_CAPTION|DS_MODALFRAME比 Dialog Frame 缺少扩展属性 WS_EX_DLGMODALFRAME|WS_EX_WINDOWEDGEResizing 比 Dialog Frame 多一个属性 WS_THICKFRAME:Creates a window with a thick frame that can be used to size the window.(可调整窗口大小)Button 里面的属性 owner draw,就是自己画按钮,是按钮变得多姿多彩删除一个导入的 ICON,按键盘的 delete 按钮CWnd*AfxGetMainWnd();使用 AfxGetMainWnd 函数获取 MFC 程序中的主框架类指针是一个常用作法。就是获得应用程序主窗口的指针,AfxGetMainWnd()-m_hWnd 是主窗口的句柄。隐藏工具栏和菜单栏void CMainFrame:HideMenuStatusToolBar(BOOL bflag)/跟 CStationSystemAppView 里面的OnInitialUpdate 函数联系起来一块用才能隐藏if(bflag)SetMenu(NULL);DrawMenuBar();ShowControlBar(&m_wndStatusBar,false,false);ShowControlBar(&m_wndToolBar,false,false);elseShowControlBar(&m_wndStatusBar,false,false);ShowControlBar(&m_wndToolBar,false,false);Public:CMainFrame*m_pMainFrame;在 C_VIEW 里的 OnInitialUpdate 里加上这两句m_pMainFrame=(CMainFrame*)AfxGetMainWnd();/这句也要加上m_pMainFrame-HideMenuStatusToolBar(true);/取消对话框中的菜单栏和状态栏SetMenuSetMenu 用法用法SetMenu-函数功能 函数功能:该函数分配一个到。函数原型:BOOL SetMenu(HWND hWnd,HMENU hMenu);参数:hWnd:菜单被分配到其中的窗口的句柄。HMenu:新菜单的句柄。如果菜单参数为 NULL,则窗口的当前菜单被删除。SetMenu-返回值 返回值:如果函数调用成功,返回非零值;如果函数调用失败,是零。若想获得更多的错误信息,请调用 GetLaSError 函数。备注:窗口被重画来反映菜单的修改。函数 SetMenu 替换原来的菜单(如果存在),但并不将其销毁。应用程序必须调用函数 DestroyMenu 来销毁菜单。DrawMenuBar为指定的窗口重画菜单。用 api 函数改变一个窗口菜单的内容时,就要用到这个函数ShowControlBar()可以用来控制是否显示该工具栏Invalidate()函数的作用是使整个窗口客户区无效,窗口客户无效即需要重绘,这时 Window 系统会发送一 WM_PAINT 消息放在应用程序的消息队列中,WM_PAINT 消息的优先级很低,所以不会立即重绘。如果需要立即重绘,那么就使用 UpdateWindow()函数,该函数可使WM_PAINT 被直接发送到目标窗口,从而导致窗口立即重绘。EnableWindow(false)表示禁用一个按钮,默认是 TRUEOnPaint 是 WM_PAINT 消息的消息处理函数,在 OnPaint 中调用 OnDraw,一般来说,用户自己的绘图代码应放在 OnDraw 中。OnPaint()是 CWnd 的类成员,负责响应 WM_PAINT 消息。OnDraw()是 CVIEW 的成员函数,没有响应消息的功能.当视图变得无效时(包括大小的改变,移动,被遮盖等等),Windows 发送 WM_PAINT 消息。该视图的 OnPaint 处理函数通过创建CPaintDC 类的 DC 对象来响应该消息并调用视图的 OnDraw 成员函数.OnPaint 最后也要调用 OnDraw,因此一般在 OnDraw 函数中进行绘制。ONERASEBKGND 实现双缓冲绘图,擦除背景的。CreateCompatibleDC该函数创建一个与指定设备兼容的内存设备上下文环境(DC)。通过 GetDc()获取的 HDC直接与相关设备沟通,而本函数创建的 DC,则是与内存中的一个表面相关联。BitBlt该函数对指定的源设备环境区域中的像素进行位块(bit_block)转换,以传送到目标设备环境。函数原型函数原型BOOL BitBlt(HDC hdcDest,int nXDest,int nYDest,int nWidth,int nHeight,HDC hdcSrc,int nXSrc,int nYSrc,DWORD dwRop);编辑本段编辑本段参数参数hdcDest:指向目标设备环境的句柄。nXDest:指定目标矩形区域左上角的 X 轴逻辑坐标。nYDest:指定目标矩形区域左上角的 Y 轴逻辑坐标。nWidth:指定源和目标矩形区域的逻辑宽度。nHeight:指定源和目标矩形区域的逻辑高度。hdcSrc:指向源设备环境的句柄。nXSrc:指定源矩形区域左上角的 X 轴逻辑坐标。nYSrc:指定源矩形区域左上角的 Y 轴逻辑坐标。dwRop:指定光栅操作代码。这些代码将定义源矩形区域的颜色数据,如何与目标矩形区域的颜色数据组合以完成最后的颜色。下面列出了一些常见的光栅操作代码:BLACKNESS:表示使用与物理调色板的索引 0 相关的色彩来填充目标矩形区域,(对缺省的物理调色板而言,该颜色为黑色)。DSTINVERT:表示使目标矩形区域颜色取反。MERGECOPY:表示使用布尔型的 AND(与)操作符将源矩形区域的颜色与特定模式组合一起。MERGEPAINT:通过使用布尔型的 OR(或)操作符将反向的源矩形区域的颜色与目标矩形区域的颜色合并。NOTSRCCOPY:将源矩形区域颜色取反,于拷贝到目标矩形区域。NOTSRCERASE:使用布尔类型的 OR(或)操作符组合源和目标矩形区域的颜色值,然后将合成的颜色取反。PATCOPY:将特定的模式拷贝到目标位图上。PATPAINT:通过使用布尔 OR(或)操作符将源矩形区域取反后的颜色值与特定模式的颜色合并。然后使用 OR(或)操作符将该操作的结果与目标矩形区域内的颜色合并。PATINVERT:通过使用 XOR(异或)操作符将源和目标矩形区域内的颜色合并。SRCAND:通过使用 AND(与)操作符来将源和目标矩形区域内的颜色合并。SRCCOPY:将源矩形区域直接拷贝到目标矩形区域。SRCERASE:通过使用 AND(与)操作符将目标矩形区域颜色取反后与源矩形区域的颜色值合并。SRCINVERT:通过使用布尔型的 XOR(异或)操作符将源和目标矩形区域的颜色合并。SRCPAINT:通过使用布尔型的 OR(或)操作符将源和目标矩形区域的颜色合并。WHITENESS:使用与物理调色板中索引 1 有关的颜色填充目标矩形区域。(对于缺省物理调色板来说,这个颜色就是白色)。dwRop ValuesFrom wingdi.h:#define BLACKNESS 0 x42#define DSTINVERT 0 x550009#define MERGECOPY 0 xC000CA#define MERGEPAINT 0 xBB0226#define NOTSRCCOPY 0 x330008#define NOTSRCERASE 0 x1100A6#define PATCOPY 0 xF00021#define PATINVERT 0 x5A0049#define PATPAINT 0 xFB0A09#define SRCAND 0 x8800C6#define SRCCOPY 0 xCC0020#define SRCERASE 0 x440328#define SRCINVERT 0 x660046#define SRCPAINT 0 xEE0086#define WHITENESS 0 xFF0062加载 zhujiemian 那页图void CSubstationSystemView:OnPaint()CPaintDC dc(this);/device context for painting/TODO:Add your message handler code here/Do not call CFormView:OnPaint()for painting messagesCDC memdc;CRect rect;GetWindowRect(&rect);/函数功能:该函数返回指定窗口的边框矩形的尺寸。该尺寸以相对于屏幕坐标左上角的屏幕坐标给出。CBitmap bitmap,*oldbitmap;bitmap.LoadBitmap(IDB_zhujiemian);memdc.CreateCompatibleDC(&dc);/该函数创建一个与指定设备兼容的内存设备上下文环境(DC)。通过 GetDc()获取的 HDC 直接与相关设备沟通,而本函数创建的 DC,则是与内存中的一个表面相关联。oldbitmap=memdc.SelectObject(&bitmap);dc.BitBlt(0,0,rect.right,rect.bottom,&memdc,0,0,SRCCOPY);memdc.SelectObject(oldbitmap);ReleaseDC(&memdc);一定要加上这些/这样照片才能显示出来void CSubstationSystemView:DoDataExchange(CDataExchange*pDX)CFormView:DoDataExchange(pDX);/AFX_DATA_MAP(CSubstationSystemView)/NOTE:the ClassWizard will add DDX and DDV calls hereDDX_Control(pDX,IDC_BTN_SANWEI,m_sanwei);DDX_Control(pDX,IDC_BTN_LIANXI,m_lianxi);DDX_Control(pDX,IDC_BTN_KAOSHI,m_kaoshi);DDX_Control(pDX,IDC_BTN_XUEXI,m_xuexi);DDX_Control(pDX,IDC_BTN_GUANLI,m_guanli);DDX_Control(pDX,IDC_BUTTON1,m_btn1);DDX_Control(pDX,IDC_BUTTON2,m_btn2);DDX_Control(pDX,IDC_BUTTON3,m_btn3);DDX_Control(pDX,IDC_BUTTON4,m_btn4);DDX_Control(pDX,IDC_BUTTON5,m_btn5);DDX_Control(pDX,IDC_BUTTON6,m_btn6);DDX_Control(pDX,IDC_BUTTON7,m_btn7);DDX_Control(pDX,IDC_BUTTON8,m_btn8);DDX_Control(pDX,IDC_BUTTON9,m_btn9);DDX_Control(pDX,IDC_BUTTON10,m_btn10);DDX_Control(pDX,IDC_BUTTON11,m_btn11);DDX_Control(pDX,IDC_BUTTON12,m_btn12);DDX_Control(pDX,IDC_BUTTON13,m_btn13);DDX_Control(pDX,IDC_BUTTON14,m_btn14);DDX_Control(pDX,IDC_BUTTON15,m_btn15);/一定要加上这些东西/AFX_DATA_MAP可以添加 CButton 类型的变量,如果是需要 CBitmapButton 或者 CImageButton 类型,则进行修改,在 dodatachange 中上述代码会自动添加上,所以说要在 Classward 中添加按钮的成员变量LoadBitmaps 的用法CBitmapButton:LoadBitmaps BOOL LoadBitmaps(LPCTSTR lpszBitmapResource,LPCTSTR lpszBitmapResourceSel=NULL,LPCTSTR lpszBitmapResourceFocus=NULL,LPCTSTR lpszBitmapResourceDisabled=NULL);BOOL LoadBitmaps(UINT nIDBitmapResource,UINT nIDBitmapResourceSel=0,UINT nIDBitmapResourceFocus=0,UINT nIDBitmapResourceDisabled=0);Return ValueNonzero if successful;otherwise 0.EnableWindow指定是否要启用或禁用窗口。如果此参数为 true,则窗口已启用。如果该参数为 FALSE,则窗口被禁用。Invalidate指定更新区域内的背景是否是要被擦除。CSize 类 类 CSize 是对 Windows 结构 SIZE 的封装,凡是能用 SIZE 结构的地方都可以用 CSize 代替。结构 SIZE 表示一个矩形的长度和宽度,其定义为:typedef struct tagSIZE LONG cx;LONG cy;SIZE;其中 cx、cy 分别是宽度和高度。CScrollView:SetScrollSizes这种方法称为视图进行更新时。若要调整滚动特性的 OnUpdate 方法的重写中调用它。例如此方法很有用,最初显示文档时,或当它更改大小。void SetScrollSizes(int nMapMode,SIZE sizeTotal,const SIZE&sizePage=sizeDefault,const SIZE&sizeLine=sizeDefault);该函数用于对滚动条进行设置。因为滚动条是附着在窗口之上的,而且它是用来对显示的文档进行操作的,因而我们应该在窗口和文档都创建完毕、窗口尚未显示之前对滚动条进行设置。因此可以在OnInitialUpdate(该函数调用 OnUpdate)中或 OnUpdate 函数中调用 SetScrollSizes 完成对滚动条的设置。当我们想得到一个窗口对象(CWnd 的派生对象)指针的句柄(HWND)时,最安全的方法是使用 GetSafeHwnd()函数,CWnd:GetParentFrame呼叫此成員函式以取得父框架視窗。RecalcLayout 是 CFrameWnd 定义的虚拟函数,边框窗口在必要的时候调用虚拟函数 RecalcLayout 来重新放置它的控制条和客户窗口,例如在创建窗口时、响应消息 WM_SIZE 时调用 ResizeParentToFit 函数令视图大小控制其框架窗口的大小。如果在 App 的 InitInstance 中有:m_pMainWnd-ShowWindow(SW_SHOWMAXIMIZED);要现将这一句改为 m_pMainWnd-ShowWindow(SW_SHOW);否则,在 MainFrame 的 PreCreateWindow 里面设置 cs 的 cx 与 cy 不起作用要弄一个应用程序配置文件,首先新建一个 text 文档,然后更名为.config 格式的,然后你想显示的东西写在里面,CFile file(F:张悦祎SubstationSystemsystem.config,CFile:modeRead);int nlen=file.GetLength();char*buf;buf=new charnlen+1;memset(buf,0,nlen+1);file.Read(buf,nlen);file.Close();m_pMainWnd-SetWindowText(buf);这样之后你以后要修改的话,只需要去.config 那个文件中去修改就可以了Cstdiofile 类继承自 CFile 类参数内容:第一个参数为路径+文件名,最后一个为错误出现的结构.现在解释下第二个参数CFile:modeCreate Directs the constructor to create a new file.If the file exists already,it is truncated to 0 length.指定构造器创建一个新的文件,如果文件已经存在,则内容截 0.CFile:modeNoTruncate Combine this value with modeCreate.If the file being created already exists,it is not truncated to 0 length.Thus the file is guaranteed to open,either as a newly created file or as an existing file.This might be useful,for example,when opening a settings file that may or may not exist already.This option applies to CStdioFile as well.modeNoTruncate假如你不用这个参数的话,用 modeCreate 模式创建和打开一个文件,假如这个文件已经存在,则会清空这个已经存在的文件,加上 modeNoTruncate 的话,就不会清空这个文件了CFile:modeRead Opens the file for reading only.只是以读取方式打开CFile:modeReadWrite Opens the file for reading and writing.读与写同时CFile:modeWrite Opens the file for writing only.只写CFile:modeNoInherit Prevents the file from being inherited by child processes.阻止这个文件被子进程继承CFile:shareDenyNone Opens the file without denying other processes read or write access to the file.Create fails if the file has been opened in compatibility mode by any other process.打开这个文件同时允许其它进程读写这个文件。如果文件被其它进程以 incompatibility 模式打开,这是 create 操作会失败。CFile:shareDenyRead Opens the file and denies other processes read access to the file.Create fails if the file has been opened in compatibility mode or for read access by any other process.打开文件拒绝其它任何进程读这个文件。如果文件被其它进程用 compatibility 模式或者是读方式打开,create 操作失败。CFile:shareDenyWrite Opens the file and denies other processes write access to the file.Create fails if the file has been opened in compatibility mode or for write access by any other process.打开文件拒绝其它任何进程写这个文件。如果文件被其它进程用 compatibility 模式或者是写方式打开,create 操作失败。CFile:shareExclusive Opens the file with exclusive mode,denying other processes both read and write access to the file.Construction fails if the file has been opened in any other mode for read or write access,even by the current process.以独占方式打开这个文件,不允许其它进程读写这个文件。CFile:shareCompat This flag is not available in 32 bit MFC.This flag maps to CFile:shareExclusive when used in CFile:Open.这个标志在 32 位的 MFC 中无效。CFile:typeText Sets text mode with special processing for carriage returnlinefeed pairs(used in derived classes only).CFile:typeText 设置成对回车换行对有特殊处理的文本模式(仅用在派生类中)CFile:typeBinary 设置二进制模式(仅用在派生类中)CStdioFile 继承自 CFile,一个 CStdioFile 对象代表一个用运行时函数 fopen 打开的 C 运行时流文件。流式文件是被缓冲的,而且可以以文本方式(缺省)或二进制方式打开。文本方式提供对硬回车换行符对的特殊处理。当你将一个换行符(0 x0A)写入一个文本方式的 CStdioFile 对象时,字节对(0 x0D,0 x0A)被发送给该文件。当你读一个文件时,字节对(0 x0D,0 x0A)被翻译为一个字节(0 x0A)。CStdioFile 不支持 Duplicate,LockRange,和 UnlockRange 这几个CFile 函数。如果在 CStdioFile 中调用了这几个函数,将会出现CNoSupported 异常。CStdioFile:ReadString(LPTSTR lpsz,UINT nMax);读取一行文本到缓冲区,遇到“0 x0D,0 x0A”时停止读取,并且去掉硬回车“0 x0D”,保留换行符“0 x0A”,在字符串末尾添加“/0”(0 x00)。nMax 个字符里包含0 x00 这个字符。分析如下:1)如果 nMax 字符数,读取 nMax 个字符+0 x0A+0 x00 CStdioFile:ReadString(CString&rString);(重载)读取一行文本到 rString,遇到回车换行符停止读取。回车和换行符不读到rString,而且末尾也没有添加“/0”。CStdioFile:WriteString(LPCTSTR lpsz);(不支持 CString 直接写入)将一个缓冲区中的数据写入与 CStdioFile 对象关联的文件中。结束的空字符(“/0”)不被写入该文件。lpsz 中的所有换行符都被以一个硬回车换行符对写入该文件,即“/n”被转化成“/r/n”写入到文件里。CFile 的派生类 CStdioFile 提供了对文件进行流式的操作功能。其中函数void CStdioFile:WriteString(LPCTSTR lpsz)写入一个字符串,需要给字符串lpsz 的末尾加上换行标志”/r/n”;函数 bool CStdioFile:ReadString(CString&rString)从文件中读取一行,如果文件未读完返回 true,否则返回 false。当 CStdioFile.WriteString 无法处理中文时,把工程的字符集属性 改成 使用多字节字符集 就可以了,具体设置方法如:打开项目属性-配置属性-常规-字符集-改成 使用多字节字符集 要注意的是 CStdioFile 在_MSBC 环境下读取任何 ANSI 文本数据都没问题,在 UNICODE 环境下读取 ANSI 文本中的中文时就会显示乱码。其原因是由于CStdioFile 读取 ANSI 文本数据时按 char 类型读取,在_MSBC 下可以直接填充到 CString,在 UNICODE 环境下要先将 char 转换成宽字符 WCHAR,然后再填充到 CString,即一个汉字的两个 char 将变成两个 UNICODE 字符WCHAR。那么问题如何解决呢?实际上在 UNICODE 环境下,file.ReadString(strLine)取得的数据是 char 类型,但是存储在 UNICODE 字符串中。为了取得真实数据,必须对 strLine 进行处理。在 CFile 类中提供了 2 种模式,typeBinary 和 typeText。如果是 CTextFile 类的话当然要强制使用 typeText 类型了。那么 CStdioFile 是怎么做的呢?BOOL CStdioFile:Open(LPCTSTR lpszFileName,UINT nOpenFlags,CFileException*pException)/调用基类打开文件,注意通过 nOpenFlags&typeText 过滤了文件的文本属性 if(!CFile:Open(lpszFileName,(nOpenFlags&typeText),pException)return FALSE;/转换找开模式if(nOpenFlags&typeBinary)szModenMode+=b,nFlags=_O_TEXT;else szModenMode+=t;/open a C-runtime low-level file handle int nHandle=_open_osfhandle(UINT_PTR)m_hFile,nFlags);/open a C-runtime stream from that handle if(nHandle!=-1)m_pStream=_fdopen(nHandle,szMode);由上面的代码可以看出,CStdioFile 强制过滤了 typeText 标志,使得文件打开模式可以是二进制模式。这已经可以证明 CStdioFile 不是一个纯粹TextFile 类。再仔细看上面的代码,在调用基类打开后,又使用_open_osfhandle 和_fdopen 做了奇怪的转换,察看 m_pStream 的类型 FILE*m_pStream;/stdio FILE 这是一个标准 I/O 的 FILE 结构。如果再进一步的研究 CStdioFile 的源码,还会发现它都是调用标准 I/O 的函数来操作的,比如用_fputts/_fgetts 来实现WriteString/ReadString,用 fread/fwrite/fseek 来替代 Read/Write/Seek。注意CStdioFile 并没有使用 CFile 的 Read/Write/Seek 函数,如果在 Open 里将使用 fopen 直接打开的话,CStdioFile 甚至可以说和 CFile 没有任何的关系。,由此这个类叫做 CStdioFile 就不奇怪了。为什么要研究这个问题呢?前一段在 上看到不少人问为什么UNICODE 的文本文件处理出现乱码?他们很惊异发现平常作为 TextFile 的处理类用得 CStdioFile 竟然失效了。真的是它失效了吗?其实是标准的 I/O 操作并不支持 UNICODE 的模式而已。CArchive百科名片百科名片CArchive 对象提供了一个类型安全缓冲机制,用于将可序列化对象写入 CFile 对象或从中读取可序列化对象。通常,CFile 对象表示磁盘文件;但是,它也可以是表示“剪贴板”的内存文件(CSharedFile 对象)。不要用死路径,用:GetCurrentDirectory 获取当前程序所在的目录,找到那个文件读取对类似于记事本的文件进行逐行读取时,用 CStdioFilechar buf256;:GetCurrentDirectory(255,buf);CString str_path;str_path.Format(%s,buf);str_path+=;/str_path+=system_3D.cfg;str_path+=system.config;CStdioFile file;CString temp;CString zhanming;if(file.Open(str_path,CFile:modeRead)int i=1;while(file.ReadString(temp)int index=temp.Find(,0);int len=temp.GetLength();if(i=0)zhanming=temp.Mid(index+1,len);if(i=1)zhanming=temp.Mid(index+1,len);if(i=2)zhanming=temp.Mid(index+1,len);i-;m_pMainWnd-SetWindowText(zhanming);要把窗口显示完整,这句话是必不可少的:SetWindowPos(m_pMainWnd-m_hWnd,HWND_TOP,0,0,1024,750,SWP_SHOWWINDOW);MFC 中点击按钮弹出对话框1.在资源视图中找到 dialog,新建 dialog,命名为 DLG(名字随意),这个 dialog 就是你要点击后出来的对话框,楼主自己对这个对话框进行设计。2.找到你要点击的按钮,双击,在显示的函数中添加一下代码:DLG dlg;dlg.DoModal();3.在当前的文件中的最前面添加#includeDLG.h4.运行程序。CListCtrl 的用法CListCtrl 类封装了“列表视图控件”功能,显示每个包含图标(列表视图中)和标签的收集。除图标和标签外,每一项还能有显示在图标和标签右边列中的信息。此控件(以及 CListCtrl 类)只适用于运行于 Windows 95 和 Windows NT 3.51 及更高版本的程序。视图视图列表视图控件可用四种不同方式显示其内容,称之为“视图”。图标视图图标视图:每一项以全尺寸图标(3232 像素)出现,下面有一个标签。用户可在列表视图窗口拖动项到任意位置。小图标小图标:视图每一项以小图标(1616 像素)出现,右边有一个标签。用户可在列表视图窗口拖动项到任意位置。列表视图列表视图:每一项以小图标出现,下面有一个标签。项按列排列,不能拖动到列表视图窗口的任何位置。报表视图报表视图:每一项在本行上出现,右边有排列成列的附加信息。最左边的列包含小图标和标签,下一列包含应用指定的子项。嵌入标题控件实现这些列。要了解报表视图标题控件和列的更多信息,请参阅联机文档“Visual C+程序员指南”中的“使用 CListCtrl:给控件添加列(报表视图)”。控件的当前列表视图风格指定当前视图。要了解这些风格及其用法的更多信息,请参阅联机文档“Visual C+程序员指南”中的“使用 CListCtrl:改变列表控件风格”。扩展风格扩展风格逗留选择逗留选择:有效时,若光标保持在某项上一段时间,则允许自动选择该项。虚列表视图虚列表视图:如果有效,允许控件支持 DWORD 项。通过把管理应用项数据放在最顶上而成为可能。除了项选择和焦点信息,所有项信息必须由应用管理。要了解更多信息,请参阅联机文档“Visual C+程序员指南”中的“使用 CListCtrl:虚列表控件”。单击或双击激活单击或双击激活:如果有效,允许热跟踪(项文本自动高亮显示)和高亮显示项的单击和双击激活。拖放列表命令拖放列表命令:如果有效,允许拖放列表视图控件中列的记录。只对报表视图有效。要了解使用新扩展风格的更多信息,请参阅联机文档“Visual C+程序员指南”中的“使用CListCtrl:改变列表控件风格”。项和子项项和子项列表视图控件中的每一项含有一个图标、一个标签、一个当前状态和应用定义值(称为“项数据”)。一个或更多子项还可与每一项联系。一个“子项”是一个字符串,在报表视图中可显示在项图标和标签右边的列里。列表视图控件中的每一项都必须与子项数目相同。类 CListCtrl 提供一些函数来插入、删除、查找和更改这些项。要了解更多信息,请参阅“Visual C+程序员指南”中的“使用 CListCtrl:列表控件中的滚动、排列、排序和查找”。同时请参阅 CListCtrl:GetItem,CListCtrl:InsertItem 和 CListCtrl:FindItem。缺省时,列表视图控件负责存储一个项的图标和文本属性。然而,除了这些项类型外,类CListCtrl 支持“回调项”。一个“回调项”是一个列表视图项,每个应用枣而不是控件枣存储文本,图标或两者。回调掩码用于指定哪个项的属性(文本和/或图标)由应用提供。如果应用使用回调项,它必须可以提供按需要提供文本和/或图标属性。回调项在你的应用已有部分这种信息时很有帮助。要了解更多信息,请参阅 CListCtrl:GetCallBackMask 和“使用CListCtrl:回调项和回调掩码”。图象列表图象列表图标、标题项图象和应用定义的列表视图项状态包含在一些图象列表中(由类 CImageList实现),可创建和指派到列表视图控件中。每个列表视图控件可有四个以上的图象列表类型:大图标大图标:在图标视图中使用,得到全尺寸图标。小图标小图标:用于小图标、列表和报表视图中,得到图标视图中使用的小版本的图标。应用定义的状态应用定义的状态:包含状态图象,在项图标旁显示以指示一个应用定义状态。标题项标题项:用于在报表视图中,得到出现在每个标题控件项中的小图象。缺省时,列表视图控件删除指派给它的图象列表(当它删除时);然而,开发者可通过删除由应用定义的不再使用的图象列表。#include 请参阅:CImageList构造函数构造函数CListCtrl 类的成员构造函数构造函数ClistCtrl 构造一个 CListCtrl 对象。Create 创建列表控件并将其附加给 CListCtrl 对象。属性属性GetBkColor 获取列表视图控件的背景色。SetBkColor 设置列表视图控件的背景色。GetImageList 获取用于绘制列表视图项的图象列表的句柄。SetImageList 指定一个图象列表到列表视图控件。GetItemCount 获取列表视图控件中的项的数量。GetItem 获取列表视图项的属性。GetCallbackMask 获取列表视图控件的回调掩码。SetCallbackMask 设置列表视图控件的回调掩码。GetNextItem 查找指定特性和指定指定项关系的列表视图项。GetFirstSeletedItem
展开阅读全文