如何使得VC++6.0时刻显示行号
VC6.0常用控件使用方法
VC6.0常用控件使用方法 26、List Box---------------列表框控件--类CListBox(1)插入项m_list.AddString(string);(2)设置当前选择项m_list.SetCurSel(项索引);(3)获取当前选择项int nIndex = m_list.GetCurSel();m_list.GetText(nIndex, string);(4)删除一项m_list.DeleteString(项索引);(5)删除所有项m_list.ResetContent();(6)获取总项数m_list.GetCount()(7)List Box的选项前面加复选框(Check Box)a.风格声明时用类CCheckListBox代替CListBox,即CCheckListBox m_list;而不是CListBox m_list;属性对话框->Styles->Owner draw设为Fixed属性对话框->Styles->勾选Has stringsb.设置选择void SetCheck( int nIndex, int nCheck );ParametersnIndexIndex of the item whose check box is to be set.nCheckState of the check box: 0 for clear, 1 for checked, and 2 for indeterminate.c.获取选择int GetCheck( int nIndex );ParametersnIndexIndex of the item whose check status is to be retrieved.Return ValueZero if the item is not checked, 1 if it is checked, and 2 if it is indeterminate.7、List Control----------列表框扩展控件--类CListCtrl(1)样式:属性对话框框->Styles->Format有4,分别是Icon/Small Icon/List/Report;(2)Report格式设置扩展风格DWORD dwStyle = m_list.GetExtendedStyle();dwStyle |= LVS_EX_FULLROWSELECT; // 选中某行使整行高亮(只适用与report风格的listctrl)dwStyle |= LVS_EX_GRIDLINES; // 网格线(只适用与report风格的listctrl)m_list.SetExtendedStyle(dwStyle);(3)Report格式插入列m_list.InsertColumn(1, "列一", LVCFMT_RIGHT, 150);m_list.InsertColumn(2, "列二", LVCFMT_LEFT, 100);m_list.InsertColumn(3, "列三", LVCFMT_LEFT, 100);m_list.InsertColumn(4, "列四", LVCFMT_LEFT, 200);m_list.InsertColumn(5, "ID", LVCFMT_CENTER, 0);(4)Report格式插入一行数据int nIndex = m_list.GetItemCount();m_list.InsertItem(nIndex, s1);m_list.SetItemText(nIndex, 1, s2);m_list.SetItemText(nIndex, 2, s3);m_list.SetItemText(nIndex, 3, s4);m_list.SetItemText(nIndex, 4, s5);(5)Report格式删除所有行m_list.DeleteAllItems();(6)Report格式获取某行某列数据CString sID = m_list.GetItemText(行索引,列索引);(7)Report格式删除选择行,多选时可用循环。
vc++6.0cmd
notepad 文件名.c
7、在打开的记事本窗口中输入源程序。
8、存放编辑过的文件。在notepad的窗口中:
(1)、点击[文件]菜单
(2)、点击[保存]项
9、查看当前目录中的内容(文件名.c),在命令行窗口中发DOS命令:
dcl进入VC++6.0命令行窗口
1、打开Windows Explorer,即“我的电脑“。
2、在学生用磁盘(最后一个磁盘,F盘或E盘)创立一个自己的子目录(文件夹),建议用自己的学号或名字作目录名。
(1)、选中磁盘
(2)、在右边的文件框中,右击鼠在当前目录下创建一个子目录
rmdir 子目录名 删除子目录
cd 子目录名 进入子目录
del 文件名 删除文件
(4)、在子菜单中点击[文件夹]项
(5)、在心创建的文件夹上,输入目录名
3、将桌面上的vc++60cmd.bat文件移入这个目录
4、双击vc++60cmd.bat文件,打开VC++6.0的命令行窗口。
5、查看当前目录中的内容,在VC++6.0的命令行窗口中发DOS命令:
dir
编辑源程序文件
dir
编译源程序
10、在命令行窗口中编译源程序。发命令:
cl /c 文件名.c
11、如果有错(error),回到7修改.
12、查看当前目录中的内容(文件名.obj),在命令行窗口中发DOS命令:
dir
连接目标模块
13、在命令行窗口中目标模块和库函数。发命令:
VC6.0的快捷键使用技巧
现象:经常会碰到想要同时打开两个或者更多的*.dsw文件,但是你打开第二个的时候就会把第一个覆盖掉,非常的烦人!解决得方法:找到“控制面板”,打开“文件夹选项”, 然后打开“文件类型选项” 在已注册的文件类型中找到DSW Project Workspace选中,然后点击高级选项,进入“编辑文件类型”,点击"编辑",取消"使用DDE"复选框。
就可以了。
VC++ 6.0实用技巧汇总1.检测程序中的括号是否匹配把光标移动到需要检测的括号(如大括号{}、方括号[]、圆括号()和尖括号<>)前面,键入快捷键“Ctrl+]”。
如果括号匹配正确,光标就跳到匹配的括号处,否则光标不移动,并且机箱喇叭还会发出一声警告声。
2:定位预处理指定,如何在源文件中定位光标到对称的#if, #endif ?使用Ctrl+K快捷键。
本文来自Yowsah资料库3.格式化一段乱七八糟的源代码选中那段源代码,按ATL+F8。
4.在编辑状态下发现成员变量或函数不能显示删除该项目扩展名为.ncb文件,重新打开该项目。
5.如何整理ClassView视图中大量的类可以在classview 视图中右键新建文件夹(new folder),再把具有相近性质的类拖到对应的文件夹中,使整个视图看上去清晰明了.7.如何添加系统中Lib到当前项目在Project | Settings | Link | Object/library modules:输入Lib名称,不同的Lib之间用空格格开.8.如何添加系统中的头文件(.h)到当前项目.#include <FileName.h>,告诉编译到VC系统目录去找;使用#include "FileName.h",告诉编译在当前目录找.9.如何在Studio使用汇编调试在WorkBench的Debugger状态下按CTRL+F7.10.怎样处理ClassZiard找不到的系统消息如果要在ClassWizard中处理WM_NCHITTEST等系统消息,请在ClassWizard中Class Info页中将Message filter改为Window就有了.11.如何干净的删除一个类先从Workspace中的FileView中删除对应的.h和.cpp文件,再关闭项目,从实际的文件夹中删除对应的.h和.cpp文件与.clw文件。
vc++6.0调试方法(附有快捷键)
调试程序可以帮助了解程序是怎样运行的。
1、如何快速地规范代码缩进格式选中所需要规范的代码,按shift+F82、如何在Release状态下进行调试Project->Setting…->Project Settings对话框,选择Release状态。
“C/C++”标签页中的Category选General,Optimizations选Disable(Debug),Debug info选Program Database。
在“Link”标签页中选中Generate debug info复选框。
注:只是一个介乎Debug和Release的中间状态,所有的ASSERT、VERIFY都不起作用,函数调用方式已经是真正的调用,而不查表,但是这种状态下QuickWatch、调用队列跟踪功能仍然有效,和Debug版一样。
3、Release和Debug有什么不同。
Release版称为发行版,Debug版称为调试版。
Debug中可以单步执行、跟踪等功能,但生成的可执行文件比较大,代码运行速度较慢。
Release版运行速度较快,可执行文件较小,但在其编译条件下无法执行调试功能。
Release的exe文件链接的是标准的MFC DLL(Use MFC in a shared or static dll),比如MFC42.DLL。
这些DLL在安装Windows的时候,已经配置,所以这些程序能够在没有安装Visual C++ 6.0的机器上运行。
而Debug版本的exe链接了调试版本的MFC DLL文件,如MFC42D.DLL。
在没有安装Visual C++6.0的机器上不能运行,因为缺MFC42D.DLL等,除非选择use static dll when link。
4、ASSERT和VERIFY有什么区别ASSERT里面的内容在Release版本中不编译,VERIFY里面的内容仍然编译,但不再判断真假。
所以后者更安全一点。
绍VC6.018个实用小技巧
绍VC6.0的18个实用小技巧[关键字:vc6.0技巧,宏的定义,格式化代码,整理视图,添加lib,添加头文件]1.检测程序中的括号是否匹配把光标移动到需要检测的括号(如大括号{}、方括号[]、圆括号()和尖括号<>)前面,键入快捷键“Ctrl+]”。
如果括号匹配正确,光标就跳到匹配的括号处,否则光标不移动,并且机箱喇叭还会发出一声警告声。
2.查看一个宏(或变量、函数)的宏定义把光标移动到你想知道的一个宏上,就比如说最常见的DECLARE_MAP_MESSAGE上按一下F12(或右键菜单中的Go To Defition Of …),如果没有建立Browse files,会出现提示对话框,确定,然后就会跳到定义那些东西的地方。
相当可喜的是,它也可以看到Microsoft定义的系统宏,非常good.3.格式化一段乱七八糟的源代码选中那段源代码,按ATL+F8。
4.在编辑状态下发现成员变量或函数不能显示删除该项目扩展名为.ncb文件,重新打开该项目。
5.如何整理ClassView视图中大量的类可以在classview 视图中右键新建文件夹(new folder),再把具有相近性质的类拖到对应的文件夹中,使整个视图看上去清晰明了.6.定位预处理指定在源文件中定位光标到对称的#if, #endif,使用Ctrl+K.7.如何添加系统中Lib到当前项目在Project | Settings | Link | Object/library modules:输入Lib名称,不同的Lib之间用空格格开.8.如何添加系统中的头文件(.h)到当前项目.#include <FileName.h>,告诉编译到VC系统目录去找;使用#include "FileName.h",告诉编译在当前目录找.9.如何在Studio使用汇编调试在WorkBench的Debugger状态下按CTRL+F7.10.怎样处理ClassZiard找不到的系统消息如果要在ClassWizard中处理WM_NCHITTEST等系统消息,请在ClassWizard中Class Info页中将Message filter改为Window就有了.11.如何干净的删除一个类先从Workspace中的FileView中删除对应的.h和.cpp文件,再关闭项目,从实际的文件夹中删除对应的.h和.cpp文件与.clw文件。
Visual Baisc 6.0操作Excel2003-最全使用说明
预备知识和操作在VB中要想调用Excel,需要打开VB编程环境“工程”菜单中的“引用”项目,并选取项目中的“Microsoft Excel 11.0 object library”项。
由于你的Excel版本不同,所以这个选项的版本号也是不同的。
因为EXCEL是以层次结构组织对象的,其对象模型中含有许多不同的对象元素。
第一层:Application对象,即Excel本身;第二层:workbooks对象集,指Excel的工作簿文件第三层:worksheets对象集,表示的是Excel的一个工作表;第四层:Cells和Range对象,指向Excel工作表中的单元格。
1从"工程"菜单中选择"引用"栏;选择Microsoft Excel 11.0 Object Library(EXCEL2003),然后选择" 确定"。
2关键代码Dim newxls As Excel.ApplicationDim newbook As Excel.WorkbookDim newsheet As Excel.WorksheetSet newxls=CreatObject("Excel.Application")Set newbook=newxls.Worksbooks.AddSet newsheet=newbook.Worksheets(1)newxls.Visible = True '这一句很关键,编程语言中show和visible应该还起初始化的作用。
newxls.Workbooks.Open FileName:=App.Path & "备件库存查询" + mydate + ".xls"3 newxls.Visible := True '显示当前窗口4 newxls.Caption := "应用程序调用Microsoft Excel" '更改Excel 标题栏5 newxls.Workbooks.Add '添加新工作簿6 newxls.Workbooks.Open("C:\Excel\Demo.xls") '打开已存在的工作簿newxls.Workbooks.Open FileName:=App.Path & "备件库存查询" + mydate + ".xls"7 newxls.WorkSheets[2].Activate '设置第2个工作表为活动工作表newxls.WorkSheets["Sheet2"].Activate8 newxls.Cells[1,4].Value := "第一行第四列" '给单元格赋值newsheet.Cells(1, 4) = "备件名称"9 newxls.ActiveSheet.Columns[1].ColumnsWidth := 5'设置指定列的宽度单位:字符个数以第一列为例10 newxls.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米设置指定行的高度,单位为磅,1磅=0.035厘米,以第二行为例11 在第8行之前插入分页符newxls.WorkSheets[1].Rows[8].PageBreak := 1在第4列之前删除分页符newxls.ActiveSheet.Columns[4].PageBreak := 012 关键代码Visual Basic6.0在excel中的range方法Sub Random()Dim myRange As RangeSet myRange = Worksheets("Sheet1").Range("A1:D5") '注意区域Range为二四象限对角线区域myRange.Formula = "=RAND()"myRange.Font.Bold = TrueEnd Sub13 关键代码Row = ActiveSheet.Range("A1:A679").Find("1-101").Row如果找不到1-101会崩溃Dim c As RangeSet c=ActiveSheet.Range("A1:A679").Find("1-101")If Not c Is Nothing Then '找到Set Row=c.RowElse '找不到'加入自已要处理的语句End If14 newxls.ActiveSheet.Range["B3:D4"].Borders[2].Weight := 3 '指定边框线宽度1-左2-右3-顶4-底5-斜( \ ) 6-斜( / )15 newxls.ActiveSheet.Cells[1,4].ClearContents '清除第一行第四列单元格公式16 newxls.ActiveSheet.Rows[1] := '隶书' '设置第一行字体属性:newxls.ActiveSheet.Rows[1].Font.Color := clBluenewxls.ActiveSheet.Rows[1].Font.Bold := Truenewxls.ActiveSheet.Rows[1].Font.UnderLine := True17 进行页面设置a.页眉newxls.ActiveSheet.PageSetup.CenterHeader := "报表演示"b.页脚newxls.ActiveSheet.PageSetup.CenterFooter := "第&P页"c.页眉到顶端边距2cm:newxls.ActiveSheet.PageSetup.HeaderMargin := 2/0.035d.页脚到底端边距3cm:newxls.ActiveSheet.PageSetup.HeaderMargin := 3/0.035e.顶边距2cm:newxls.ActiveSheet.PageSetup.TopMargin := 2/0.035f.底边距2cm:newxls.ActiveSheet.PageSetup.BottomMargin := 2/0.035g.左边距2cm:newxls.ActiveSheet.PageSetup.LeftMargin := 2/0.035h.右边距2cm:newxls.ActiveSheet.PageSetup.RightMargin := 2/0.035i.页面水平居中:newxls.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035j.页面垂直居中:newxls.ActiveSheet.PageSetup.CenterV ertically := 2/0.035k.打印单元格网线:newxls.ActiveSheet.PageSetup.PrintGridLines := True '这一条要注意使用18 拷贝操作a.拷贝整个工作表:ed.Range.Copyb.拷贝指定区域:newxls.ActiveSheet.Range["A1:E2"].Copyc.从A1位置开始粘贴:newxls.ActiveSheet.Range.["A1"].PasteSpeciald.从文件尾部开始粘贴:newxls.ActiveSheet.Range.PasteSpecial19 插入一行或一列a. newxls.ActiveSheet.Rows[2].Insertb. newxls.ActiveSheet.Columns[1].Insert20 删除一行或一列a. newxls.ActiveSheet.Rows[2].Deleteb. newxls.ActiveSheet.Columns[1].Delete21 打印预览工作表newxls.ActiveSheet.PrintPreview '这一条要注意使用22 打印输出工作表newxls.ActiveSheet.PrintOut '这一条要注意使用23 工作表保存If not newxls.ActiveWorkBook.Saved thennewxls.ActiveSheet.PrintPreviewEnd if24 工作表另存为newxls.SaveAs("C:\Excel\Demo1.xls")25 存盘ExcelID.ActiveWorkBook.Saved := True26 关闭工作簿ExcelID.WorkBooks.Close27 退出ExcelExcelID.Quit28 设置工作表密码ExcelID.ActiveSheet.Protect "123", DrawingObjects:=True, Contents:=True, Scenarios:=True29 EXCEL的显示方式为最大化ExcelID.Application.WindowState = xlMaximized30 工作薄显示方式为最大化ExcelID.ActiveWindow.WindowState = xlMaximized31 设置打开默认工作薄数量ExcelID.SheetsInNewWorkbook = 332 关闭时是否提示保存(true 保存;false 不保存)ExcelID.DisplayAlerts = False33 设置拆分窗口,及固定行位置ExcelID.ActiveWindow.SplitRow = 1ExcelID.ActiveWindow.FreezePanes = True34 设置打印时固定打印内容ExcelID.ActiveSheet.PageSetup.PrintTitleRows = "$1:$1"35 设置打印标题ExcelID.ActiveSheet.PageSetup.PrintTitleColumns = ""36 设置显示方式(分页方式显示)ExcelID.ActiveWindow.View = xlPageBreakPreview37 设置显示比例ExcelID.ActiveWindow.Zoom = 10038 让Excel 响应DDE 请求Ex.Application.IgnoreRemoteRequests = False编程例子用VB操作EXCELPrivate Sub Command3_Click()On Error GoTo err1Dim i As LongDim j As LongDim objExl As Excel.Application '声明对象变量Me.MousePointer = 11 '改变鼠标样式Set objExl = New Excel.Application '初始化对象变量objExl.SheetsInNewWorkbook = 1 '将新建的工作薄数量设为1objExl.Workbooks.Add '增加一个工作薄objExl.Sheets(1).Name = "book2" '修改工作薄名称objExl.Sheets("book2").Select '选中工作薄<book2>For i = 1 To 50 '循环写入数据For j = 1 To 5If i = 1 ThenobjExl.Selection.NumberFormatLocal = "@" '设置格式为文本objExl.Cells(i, j) = " E " & i & jElseobjExl.Cells(i, j) = i & jEnd IfNextNextobjExl.Rows("1:1").Select '选中第一行objExl.Selection.Font.Bold = True '设为粗体objExl.Selection.Font.Size = 24 '设置字体大小objExl.Cells.EntireColumn.AutoFit '自动调整列宽objExl.ActiveWindow.SplitRow = 1 '拆分第一行objExl.ActiveWindow.SplitColumn = 7 '拆分前七列objExl.ActiveWindow.FreezePanes = True '固定拆分objExl.ActiveSheet.PageSetup.PrintTitleRows = "$1:$1" '设置打印固定行objExl.ActiveSheet.PageSetup.PrintTitleColumns = "" '打印标题objExl.ActiveSheet.PageSetup.RightFooter = "打印时间: " & _Format(Now, "yyyy年mm月dd日hh:MM:ss")objExl.ActiveWindow.View = xlPageBreakPreview '设置显示方式objExl.ActiveWindow.Zoom = 100 '设置显示大小objExl.ActiveSheet.Protect "123", DrawingObjects:=True, _Contents:=True, Scenarios:=TrueobjExl.Application.IgnoreRemoteRequests = FalseobjExl.Visible = True '使EXCEL可见objExl.Application.WindowState = xlMaximized 'EXCEL的显示方式为最大化objExl.ActiveWindow.WindowState = xlMaximized '工作薄显示方式为最大化objExl.SheetsInNewWorkbook = 3 '将默认新工作薄数量改回3个Set objExl = Nothing '清除对象Me.MousePointer = 0 '修改鼠标Exit Suberr1:objExl.SheetsInNewWorkbook = 3objExl.DisplayAlerts = False '关闭时不提示保存objExl.Quit '关闭EXCELobjExl.DisplayAlerts = True '关闭时提示保存Set objExl = NothingMe.MousePointer = 0End Sub。
VC++6.0操作简介
VC++6.0操作简介一、 VC++6.0VC++6.0二、 VC++6.0环境的基本操作1. 建立应用程序操作步骤如下:(1) 关闭 当前工作区:【文件】→【关闭 工作区】 (必要时)(2) 建立工程:【文件】→【新建】(出现“新建”对话框)在“新建”对话框中选中“工程”选项卡→选中其中的“Win32 Console Application”项→选择存储“位置”→输入工程名→单击“确定”按钮(出现“Win32Console Application”对话框)在“Win32 Console Application”对话框中选择“An empty project”选项→单击“完成”按钮注意:在操作过程中,如果出现提示性对话框,可根据具体情况按“确定”或“取消”按钮。
至此,一个新的工程已经建立,接下来,可以在该工程中建立文件或(和)将已经存在的文件添加到工程中:在工程中新建文件:【工程】→【添加工程】→【新建】(出现“新建”对话框)在“新建”对话框中选中“文件”选项卡→选中其中的“C++ Source File”或者“C/C++ Header File”项→选择新建的置(目录)→输入文件名→单击“确定”按钮→输入文件内容。
例如,新建的名为M1.cpp的源文件内容如下:向工程中添加文件【工程】→【添加工程】→【Files…】(出现“插入文件到工程”对话框)在“插入文件到工程”对话框中选中要插入的文件→选择文件要插入的工程(插入到)→单击“确定”按钮2.编辑文件操作步骤如下:在“工作区”窗口中选择“FileView”选项卡→展开相应工程的文件分支(工程名files)→双击类要编辑的文件名(此时,相应文件的内容已经显示在编辑窗口中)→对文件进行编辑3.编译、构建与运行应用程序编译源文件:在“工作区”窗口选择“FileView”选项卡→选择要编译的源文件→【编译】→【编译xx】构建可执行文件:设置活动工程(工作区中有多个工程时):【工程】→【设置活动工程】→【xx (工程名)】【编译】→【构建xx.exe】运行应用程序:设置活动工程(工作区中有多个工程时):【工程】→【设置活动工程】→【xx (工程名)】【编译】→【执行xx.exe】4.在工程中新建类(1)新建类:设置活动工程(工作区中有多个工程时需要此步)。
Microsoft_Visual__Visual_C++6.0使用方法,绝对实用!
3
[Edit]编辑菜单
[Edit]菜单分成7组:
1、撤销编辑结果,或重复前次编辑过程。 2、提供常见的编辑功能。 3、字符串查找和替换。 4、Go to和Bookmark编辑行定位和书签定位。 5、Advanced(高级),一些其他编辑手段。 6、Breakpoints,与调试有关,主要用于设置断点。 7、成员列表、函数参数信息、类型信息,及自动完成功能。
25
用VC++开发程序的过程
• • • • 用App Wizard新建一个工程 编辑代码 编译代码 调试和执行程序
26
App Wizard
• App Wizard(应用程序生成器)是Visual C++自带的 一个工具,通过它,可以方便地生成各种类型的程序 的框架。 • 选择菜单中的File---->New…,即可以使用App Wizard来新建程序。 • 可以新建的内容包括File、Project、Workspaces、 Other Documents四个页面,每个页面下有各种类型的 工程或文件。 • 选定类型之后,即进入Wizard(向导),让用户选择 一些可选项,完成之后,程序的框架即生成。
17
编辑窗口
编辑窗口为开发者提供了编辑文件和资源的手 段。通过编辑窗口,开发者可以编辑和修改源 程序和各种类型的资源。
18
资源
资源包括菜单、对话框、图标、字体、快捷键等。 开发者可以通过编辑资源来定义WINDOWS程序的 界面部分。 资源的定义是以文本的形式存放在资源定义文件 中,并由编译器编译为二进制代码。 在VC++中,提供了一个资源编辑器,使开发者能 在图形方式下对各种资源进行编辑。
12
Visual C++组件一览
Vc++ 6.0 菜单的基本操作
Vc++ 6.0 菜单的基本操作凡是从CWnd派生的类,它们既可以接收标准消息,也可以接收命令消息和通告消息。
而对于那些从CCmdTarget派生的类,则只能接收命令消息和通告消息,不能接收标准消息。
响应菜单项命令的顺序依次是:视类,文档类,框架类,最后才是应用程序类。
基本菜单操作:1. 标记菜单:可以通过CWnd的成员函数:GetMenu来获得指向菜单栏的指针,在框架类的OnCreate函数中,加入以下代码GetMenu()->GetSubMenu(0)->CheckMenuItem(0,MF_BYPOSITION|MF_C HECKED);2. 默认菜单项:分隔栏在子菜单中占据索引位置,一个子菜单只有一个默认菜单项GetMenu()->GetSubMenu(0)->SetDefaultItem(1,TRUE);3. 图形标记菜单:m_bitmap.LoadBitmap(IDB_BITMAP1);GetMenu()->GetSubMenu(0)->SetMenuItemBitmaps(0,MF_BYPOSITION ,&m_bitmap,&m_bitmap);图形标记菜单上显示的位图的尺寸有固定的标准,我们创建的位图太大了,只显示了当前位图左上角的一小部分内容,通过GetSystemMetrics函数可以得到图形标记菜单上显示的位图的尺寸。
当该参数的值为SM_XMENUCHECK or SM_CYMENUCHECK时,这个函数将获取标记菜单项上标记图形的默认尺寸。
CString类提供了一个名为Format的函数,这个函数可以按照一定的格式把内容格式,然后将结果保存到CString类型的字符串对象中。
4. 禁用菜单项一旦在CMainFrame类的构造函数中把成员变量m_bAutoMenuEnable设置为FALSE后,就不需要对ON_UPDATE_COMMAND_UI或ON_COMMAND消息进行响应处理了,CMenu 类的EnableMenuItem函数将能够正常工作。
VC++6.0入门教程
VC++6.0使用入门教程1、双击桌面快捷方式打开VC++6.02、或者是从电脑的“开始菜单”中,选择“所有程序”,在“Microsoft Visual C++ 6.0”目录中选择“Microsoft Visual C++ 6.0”来打开VC++6.03、打开程序会出现如下界面4、打开程序后界面如下:5、将每日提示关闭即可,可以将启动时显示提示前的勾去掉。
6、新建CPP源文件6.1、点击文件菜单,选择新建选项6.2、选择文件标签,选择C++ Source File,在文件名处的编辑框输入你要新建的C++程序源文件的文件名,文件类型为CPP。
6.3、点击上图位置编辑框后面的按钮选择要新建的C++源文件的存放位置。
驱动器下拉框用来选择要存放的磁盘。
点击确定来确定存放位置。
7、返回6.2的窗口时,点击确定,进入源文件编辑页面。
8、在上面的编辑框内输入你要调试的C语言程序。
9、编译运行你刚才所编辑的C语言程序点击上图中按钮,对你编写的C语言程序进行调试,看看有没有错误,有的话改正,没有的话就可以再按连接按钮检查连接(多文件工程时常用,检查文件间是否正常连接),最后,点运行按钮,就可以运行了。
10、运行成功就会弹出如下窗口拓展阅读:文件扩张名是.h,代表的是头文件,一般是书写一些函数原型,以及一些在整个程序中常用到的结构体,频繁使用的函数说明,定义等等;文件扩张名为.cpp的,是C++的源文件,也是最常用到的文件,每建立一个工程都要至少一个源文件(至少要有一个函数入口——主函数main() ),包含了核心代码;1、推荐大家看一本书:《高质量C++/C编程指南》(林锐)图书馆估计有借的,养成一个良好的编程风格是很有必要的。
附:《高质量C++/C编程指南》下载地址:/topics/2821196/2、对于那些想提高下自己对C++编程理解的同学,推荐大家在C语言学习了差不多的时候看下《Thinking in C++》这本书,这本书博大精深,值得大家仔细研读,会很有收获。
VC++6.0使用手册(史上最全)
图1-1Visual C++界面开项目工作区文件时其他文件随即会自动打开。
在此文件夹下还会创建 Res(资源)、Debug(调试)、Release(发行)等子文件夹。
2.2编辑 在编辑窗口打开、浏览文件、输入、修改、复制、剪切、粘贴、查找、替换、撤销等操作,可以通过菜单完成,也可以通过工具栏按钮完成,这些与 Word 之类的 windows 编辑器用法完全相同,这里就不再重复叙述了。
2.3辅助VC 不仅提供了“语法着色”帮助我们阅读程序,还可以通过一些快捷键检查常见的括号不匹配错误。
MSDN 也可以在编辑过程中提示存在的变量名、函数名。
很多程序员借助类似 Visual Assist X 的工具辅助开发,减少程序出错的可能性。
3.开发 C 程序3.1开发单个 C 语言程序1. 创建一个工作文件夹。
由于开发过程会产生一系列文件,建议每开发一个新的 C 程序都创建一个工作文件夹。
还可以将所有工作文件夹集中到一起,如E:\LXH\EX01-01 、E:\LXH\EX03-02 等。
2. 启动 Visual C++。
3. 新建一个 C 语言源程序。
选择菜单:File 下的 New 菜单项,出现如图 1-2 所示 new(新建)对话框。
图1-2选择菜单File下的New菜单项选择 Files标签下的 C++Source File 在“E:\LXH\EG01-01”文件夹中创建C 程序:eg01-01.c,如图 1-3 所示。
图1-3Files标签4. 输入、编辑源程序。
注意不要输入中文标点符号,要及时按 Ctrl+S 保存文件,如图 1-4 所示。
图1-4输入源程序5.编译、连接。
点击“BuildMiniBar”工具栏上的“Build”按钮进行编译、连接。
也可以选择菜单 Build 下的 Build (F7) 菜单项或Rebuild All菜单项。
更简捷的方法是直接按 F7 功能键。
Visual C++将提示创建默认工作区,如图 1-5 所示。
VC++6.0使用说明(快捷键)
V C++6.0使用说明(快捷键)F1 显示帮助,如果光标停在代码的某个字符上,显示MSDN中相应的帮助内容F2 书签功能: C trl+F2 –在某行设置一个书签(再按一次次是取消)F2 –跳到下一个书签位置Shift+F2 –跳到上一个书签位置C trl+Shift+F2 –删除所有书签F3 查找: C trl+F3 –在文件中查找,如果当前光标在一个字符串上,那么自动查找此字符串.相似的有C trl+FF3 –查找文件中下一个串Shift+F3 –查找文件中上一个串F4 - 如果是编译后或者Find in Files后,可以逐条定位.C trl+F4 –关闭文件Alt+F4 –关闭V C(跟WINDOWS定义的一样)F5编译并执行F5 –编译并通过V C执行C trl+F5 –不经过V C,直接执行编译后的exeShift+F5 –F5运行后,直接从V C中停止程序(可以模拟当机情况)C trl+Shift+F5 –重新开始运行F6切换窗口SplitWindow后,可以转换光标所在的窗口F7编译F7 编译工程C trl+F7 编译当前文件Alt+F7 工程设置对话框F8选择的粘滞键其实更常用的是按住Shift+方向键Alt+F8 选中的代码书写格式对齐F9设置断点C trl+F9删除所有断点Alt+F9 显示编辑断点的对话框C trl+F9断点无效F10单步执行(Debug时)C trl+F10执行到光标所在行(试试看Shift+F10什么效果)F11跟踪时进入函数内部Shift+F11跳到上一层调用栈F12跳到函数定义初(需要带Browse Info选项编译,建议不选,生成文件很大)编辑常用C trl+W 显示C lassWizard,边界面程序用的比较多C trl+Z/C trl+Y Undo/RedoC trl+U 字母转化为小写(有的V C没有设置)C trl+Shift+U 字母转化为大写(有的V C没有设置)C trl+S 保存(强烈建议编码时经常按两下,省得掉电死机时后悔,呵呵,该键在多数编辑软件都适用)C trl+D 查找(嗯,如果有SOFTI C E,那么就是呼叫它了)C trl+F 正宗的查找快捷键C trl+G 跳到文件中第n行C trl+Shift+G 光标在一个文件名上,直接跳到指定文件C trl+H 替换C trl+J,K #ifdef…#endif查找配对C trl+L 剪切一行C trl+} 匹配括号(),{}调试常用Shift+F9 Qui c kWat c h,并显示关标所在处的变量值Alt+3 Wat c h 查看窗口Alt+4 Variables 监视变量(常用)Alt+5 显示寄存器Alt+6显示内存(常用)Alt+7 显示堆栈情况(当机了多看看)Alt+8 显示汇编码还有一些常用的C trl+TAB 切换打开的文件视图,(如果按住C trl,顺序向后切换)C trl+Shift+TAB切换打开的文件视图,(如果按住C trl,顺序向前切换)TAB 选中后,整体后移一个制表符,Shift+TAB 选中后,整体前移一个制表符,Alt+0将焦点移到工作区(ES C回编辑区)Alt+2 将焦点移到输出区(ES C回编辑区)C trl+PgUp 逆序切换工作区视图C trl+PgDn 顺序切换工作区视图另外,V C没有设置打开,关闭工作区,和打开关闭输出区的快捷键,如果觉得不方便, 可以自己注册(我设置的是C trl+,和C trl+/).注册在Tools => C ustomize => KeyBoard。
VC++6.0函数查询简明手册
1.1_chgsign——求参数的相反数 11.2_copysign——复制数据 11.3_hypot——求直角三角形斜边长度 21.4_max——求两个数中的大数 31.5_min——求两个数中的小数 41.6_scalb——求参数的(2^exp)倍数 41.7abs——求整数的绝对值 51.8acos——求反余弦 61.9asin——求反正弦 61.10atan——求反正切71.11atan2——求x/y的反正切值81.12ceil——求不小于x的最小整数91.13cos——求余弦的函数91.14cosh——求双曲余弦的函数101.15div——求两个数的商和余数111.16exp——求双精度数的指数函数值111.17fabs——求双精度数的绝对值121.18floor——求不大于x的最大整数131.19fmod——求x/y的余数131.20frexp——把参数x调整到0.5~1之间141.21labs——求长整型参数的绝对值151.22ldexp——求参数的(2^exp)倍数161.23ldiv——求两个长整型数相除的商和余数161.24log——自然对数171.25log10——求以10为底的对数181.26modf——求双精度数的小数部分181.27pow——求x的y次方的值19第2章字符函数和字符串函数212.1__isascii——ASCII码是否在0~127之间212.2__iscsym——是否为大、小写字母,下划线或字符0~921 2.3_strdup——将字符串存入内存中222.4_stricmp——比较两个字符串232.5_strlwr——大写字母转换成小写字母242.6_strnicmp——比较特定长度的字符串242.7_strnset——把特定长度的字符设定成某个特定字符252.8_strrev——将字符串倒序排列262.9_strset——把字符设定成某个特定字符272.10_strupr——小写字母转换成大写字母272.11__toascii——将字符转换成ASCII码282.12isalnum——是否为大小写字母或数字0~9292.13isalpha——是否为大小写字母292.14iscntrl——是否为控制字符302.15isdigit——是否为字符0~9312.16isgraph——ASCII码是否在33~126之间322.17islower——是否为小写字母322.18isprint——ASCII码是否在32~126之间332.19isspace——是否为空格、制表符或换行符342.20isupper——是否为大写字母352.21strcat——字符串连接函数352.22strchr——找出给定字符串里的特定字符362.23strcmp——对两个字符串进行比较372.24strcpy——对字符串进行复制382.25strcspn——查找第一个是另一个字符串中的字符位置38 2.26strlen——求字符串的长度392.27strncat——特定数目的字符串连接到另一个字符串40 2.28strncmp——比较特定长度的字符串412.29strncpy——复制特定长度字符串到另一个字符串中41 2.30strpbrk——从第一个是另一个字符串中字符开始输出42 2.31strrchr——找出字符在字符串中最后出现的位置432.32strspn——查找第一个不是另一个字符串中字符位置44 2.33strstr——获得第一次包含另一字符串的位置指针452.34strtok——根据字符串中的字符截断另一个字符串45 2.35strxfrm——把特定长度的字符串转换给另一个字符串46 2.36tolower——大写字符转换为小写字符472.37toupper——小写字符转换为大写字符47第3章时间日期函数493.1_ftime——读取当前时间493.2_strdate——将当前日期格式化写入字符串493.3_strtime——将当前时间格式化写入字符串503.4asctime——以字符串显示时间513.5clock——当前程序所使用的处理时间523.6ctime——将time_t型转为字符型523.7difftime——求两次系统时间差533.8gmtime——以tm结构表示的时间543.9localtime——以tm结构表示的时间553.10mktime——改变tm结构变量改变时间553.11strftime——将tm结构类型时间格式化写入字符串56 3.12time——获得时间57第4章类型转换函数594.1_ecvt——将浮点数转换成字符串594.2_fcvt——将浮点数转换成字符串604.3_itoa——将整型数转换成字符串614.4_ltoa——将长整型数转换成字符串614.5_ultoa——将无符号长整型数转换成字符串624.6atof——将字符串转换成双精度数634.7atoi——将字符串转换成整型数644.8atol——将字符串转换成长整型数654.9strtod——将字符串转换为双精度数654.10strtol——将字符串转换为长整型数664.11strtoul——将字符串转换为无符号长整型数67第5章文件目录操作函数695.1_chdir——改变当前的工作目录695.2_findclose——关闭句柄,释放资源705.3_findfirst——搜索第一个文件715.4_findnext——搜索下一个文件725.5_getcwd——获得当前路径名735.6_mkdir——创建指定名称的目录735.7_mktemp——创建惟一的文件名745.8_rmdir——删除目录755.9_searchenv——搜索文件路径765.10_tempnam——生成一个临时文件名77第6章内存操作函数786.1_alloca——在堆栈上分配内存空间786.2_expand——改变内存区域的字节数786.3_heapadd——把内存区域添加到堆中796.4_heapchk——检查堆的连续性806.5_heapmin——释放没有使用的堆空间806.6_heapset——检查堆的最小连续性816.7_heapwalk——返回堆中下一个项目信息82 6.8_msize——返回堆中内存区域的字节长度83 6.9calloc——在内存中取得一块数组空间836.10free——释放内存区块846.11malloc——获取内存区块846.12realloc——重新分配内存85第7章输入/输出函数877.1_access——检查文件状态877.2_chmod——改变文件访问模式887.3_creat——创建文件887.4_eof——文件指针是否在结尾907.5_fcloseall——关闭所有文件907.6_filelength——获得文件长度917.7_getw——从文件流中读取一个整数927.8_putw——将一个整数写入文件流中937.9fclose——关闭文件947.10feof——文件流是否在结尾947.11ferror——文件流是否有错误957.12fflush——将缓冲区内容写入文件967.13fgetc——从文件流读出一个字符977.14fgets——从文件流中读出一行字符987.15fopen——打开文件997.16fprintf——向文件流写入格式化数据1007.17fputs——向输出流写入一个字符串1017.18fread——从文件流读取数据1017.19freopen——为文件指针重新分配文件1027.20fscanf——从文件流中读取格式化数据1037.21fseek——设置文件操作指示器位置1047.22ftell——获取文件操作指示器位置1047.23fwrite——向文件流写入数据1057.24getc——从文件流读出一个字符1067.25getchar——从输入流读取一个字符1077.26gets——从输入流中读出一行字符1087.27printf——将格式化数据写入标准输出流1097.28putc——将一个字符写入文件流中1107.29putchar——将一个字符写入输出流中1117.30puts——将字符串写入输出流中1117.31rewind——将文件指针移动到起始位置1127.32scanf——从输入流读出格式化数据1137.33sprintf——向字符串中写入格式化数据1147.34sscanf——从字符串中读出格式化数据114第8章简单数据类1168.1CPoint类——坐标点类1168.1.1CPoint构造函数——构造坐标点类对象1168.1.2Offset方法——增加坐标点偏移值1168.2CRect类——矩形类1178.2.1BottomRight方法——获得矩形右下角坐标1178.2.2CenterPoint方法——计算矩形中心点坐标1178.2.3CopyRect方法——复制矩形区域1188.2.4DeflateRect方法——缩小矩形区域1188.2.5EqualRect方法——判断矩形是否相等1198.2.6Height方法——获得矩形高度1208.2.7InflateRect方法——扩大矩形区域1208.2.8IntersectRect方法——获得两个矩形的交集1218.2.9IsRectEmpty方法——判断矩形区域是否为空121 8.2.10IsRectNull方法——判断矩形4条边是否都为0122 8.2.11NormalizeRect方法——使高度和宽度均为正122 8.2.12OffsetRect方法——移动矩形1238.2.13PtInRect方法——判断点是否在矩形区域内124 8.2.14SetRect方法——设置矩形左上角和右下角坐标124 8.2.15SetRectEmpty方法——设置空矩形1258.2.16Size方法——计算矩形的大小1258.2.17SubtractRect方法——两个矩形相减的矩形差126 8.2.18TopLeft方法——获得矩形的左上角坐标1278.2.19UnionRect方法——包含两个矩形的最小矩形127 8.2.20Width方法——获得矩形宽度1288.3CSize类——尺寸类128CSize构造函数——构造CSize类对象1288.4CTime类——绝对时间类1298.4.1CTime构造函数——构造CTime类对象1298.4.2Format方法——创建日期/时间值的格式化表达式130 8.4.3FormatGmt方法——生成对应的格式化字符串131 8.4.4GetAsSystemTime方法——转换SYSTEMTIME131 8.4.5GetCurrentTime方法——获得系统当前时间1328.4.6GetDay方法——获得CTime对象中的日期信息133 8.4.7GetDayOfWeek方法——获得星期信息1338.4.8GetGmtTm方法——获取时间结构1348.4.9GetHour方法——获得小时信息1358.4.10GetMinute方法——获得分钟信息1358.4.11GetMonth方法——获得月份信息1368.4.12GetSecond方法——获得秒钟信息1368.4.13GetTime方法——返回time_t值1368.4.14GetYear方法——获得年份信息1378.5CtimeSpan类——相对时间类1378.5.1CtimeSpan构造函数——构造CtimeSpan类对象137 8.5.2Format方法——格式化的时间字符串1388.5.3GetDays方法——获取完整的天数1398.5.4GetHours方法——获得时间段中的小时数1398.5.5GetMinutes方法——获得时间段中的分钟数1398.5.6GetSeconds方法——获得时间段中的秒数1408.5.7GetTotalHours方法——获得所有小时数1408.5.8GetTotalMinutes方法——获得所有分钟数1418.5.9GetTotalSeconds方法——获得所有的秒数1418.6CString类——字符串类1428.6.1AllocSysString方法——OLE自动化返回字符串142 8.6.2AnsiToOem方法——ANSI转换为OEM字符集143 8.6.3Collate方法——字符串比较1438.6.4CollateNoCase方法——字符串比较1448.6.5Compare方法——比较字符串1458.6.6CompareNoCase方法——比较字符串1458.6.7CString方法——构造CString类对象1468.6.8Delete方法——删除一个或多个字符1478.6.9Empty方法——设置空字符串1488.6.10Find方法——搜索第一个匹配字符1488.6.11FindOneOf方法——查找相匹配第一个字符1498.6.12Format方法——将格式化数据写入到字符串中1498.6.13FreeExtra方法——释放额外的内存1508.6.14GetAt方法——获得由索引号指定的单个字符1518.6.15GetBuffer方法——获得指向字符缓冲区的指针1518.6.16GetBufferSetLength方法——字符缓冲区指针1528.6.17GetLength方法——获取字符串中的字节数1528.6.18Insert方法——插入单个字符或子字符串1528.6.19IsEmpty方法——判断字符串是否为空1538.6.20Left方法——提取最前面的字符1548.6.21LoadString方法——读取Windows字符串资源1548.6.22LockBuffer方法——为缓冲区内字符串加锁1558.6.23MakeLower方法——字母全部转换成小写字母1558.6.24MakeReverse方法——字符倒序排列1568.6.25MakeUpper方法——字母全部转换成大写字母1568.6.26Mid方法——截取一个字符串1578.6.27OemToAnsi方法——OEM转换为ANSI字符集1578.6.28ReleaseBuffer方法——结束对缓冲区的使用1588.6.29Remove方法——从字符串中移走指定的字符1588.6.30Replace方法——替换字符串1598.6.31ReverseFind方法——反向查找字符1608.6.32Right方法——从字符串末尾提取字符1608.6.33SetAt方法——向指定位置重写字符1618.6.34SpanExcluding方法——截取字符串1618.6.35SpanIncluding方法——截取字符串1628.6.36TrimLeft方法——删除换行符、空格和tab1638.6.37TrimRight方法——删除一个或多个字符1638.6.38UnlockBuffer方法——解锁缓冲区164第9章基类1659.1CObject类——MFC类库主要基类1659.1.1AssertValid方法——验证对象的完整性1659.1.2Dump方法——输出诊断信息1669.1.3GetRuntimeClass方法——获取运行时类信息1679.1.4IsKindOf方法——判断对象所属类1689.1.5IsSerializable方法——对象是否能够被序列化1699.1.6Serialize方法——向CArchive对象写入对象信息1699.2CCmdTarget类——MFC消息映射类的基类1719.2.1BeginWaitCursor方法——使鼠标光标呈现沙漏状1719.2.2EnableAutomation方法——对象设置OLE自动功能1719.2.3EndWaitCursor方法——恢复鼠标指针的形状1729.2.4FromIDispatch方法——获取与IDispatch相关的对象指针172 9.2.5GetIDispatch方法——获取对象关联的IDispatch接口指针173 9.2.6OnCmdMsg方法——分派并处理命令消息1739.2.7OnFinalRelease方法——释放Ole引用对象1749.2.8RestoreWaitCursor方法——重新设置鼠标光标为沙漏状1749.3CWnd类——MFC中窗口类的基类1759.3.1Attach方法——附加窗口句柄到CWnd对象上1759.3.2CenterWindow方法——居中窗口1769.3.3ChildWindowFromPoint方法——在窗口的指定位置获取子窗口1779.3.4ClientToScreen方法——将客户区域坐标转换为屏幕区域坐标1789.3.5CreateEx方法——使用扩展风格创建窗口1799.3.6DeleteTempMap方法——删除临时的CWnd对象1809.3.7DestroyWindow方法——销毁窗口1819.3.8Detach方法——分离Windows窗口句柄1819.3.9EnableToolTips方法——启动或禁止窗口的工具条提示1829.3.10EnableWindow方法——设置窗口是否可用1839.3.11FindWindow方法——根据类名或窗口标题查找窗口1849.3.12FromHandle方法——根据窗口句柄获取窗口指针1849.3.13FromHandlePermanent方法——根据窗口句柄获取窗口指针1859.3.14GetActiveWindow方法——获取当前活动窗口1859.3.15GetClientRect方法——获取窗口的客户区域1869.3.16GetDC方法——获取与窗口关联的设备上下文指针1879.3.17GetDesktopWindow方法——获取系统桌面窗口1879.3.18GetDlgCtrlID方法——获取控件ID1889.3.19GetDlgItem方法——根据控件ID获取一个窗口指针1889.3.20GetDlgItemInt方法——转换控件文本为一个整数值1899.3.21GetDlgItemText方法——根据控件ID获取控件文本信息1909.3.22GetExStyle方法——获取窗口的扩展风格1919.3.23GetFocus方法——获取当前获得输入焦点的窗口对象1919.3.24GetFont方法——获取当前窗口的字体1929.3.25GetMenu方法——获取窗口关联的菜单指针1929.3.26GetNextWindow方法——获取窗口管理器列表中的上一个或下一个窗口193 9.3.27GetOwner方法——获取当前窗口的拥有者窗口1949.3.28GetParent方法——获取当前窗口的父窗口1959.3.29GetScrollInfo方法——获取窗口的滚动条信息1959.3.30GetScrollLimit方法——获取滚动条的最大滚动范围1969.3.31GetScrollPos方法——获取滚动条中当前滚动块的位置1969.3.32GetScrollRange方法——确定滚动条可以滚动的范围1979.3.33GetStyle方法——获取窗口的普通风格1979.3.34GetTopWindow方法——获取对话框中顶层的子窗口1989.3.35GetUpdateRect方法——获取窗口最小封闭的更新区域1989.3.36GetWindow方法——获取与窗口有一定关系的其他窗口1989.3.37GetWindowDC方法——返回整个窗口的设备上下文2009.3.38GetWindowRect方法——获取窗口对象的整个窗口区域2009.3.39GetWindowText方法——获取窗口的标题或文本信息2019.3.40Invalidate方法——更新整个窗口的客户区域2029.3.41InvalidateRect方法——更新窗口的某一个区域2029.3.42InvalidateRgn方法——更新窗口的某一个选区2039.3.43IsChild方法——判断某一个窗口是否是一个子窗口2049.3.44IsWindowEnabled方法——判断对话框是否可用2049.3.45IsWindowVisible方法——判断窗口是否可见2059.3.46KillTimer方法——结束计时器2059.3.47LockWindowUpdate方法——锁定一个窗口2069.3.48MapWindowPoints方法——将某个窗口的区域坐标转换为另一个窗口的区域坐标2069.3.49MessageBox方法——显示一个消息对话框2079.3.50ModifyStyle方法——修改窗口的普通风格2079.3.51ModifyStyleEx方法——修改窗口的扩展风格2089.3.52MoveWindow方法——移动窗口到指定的位置2099.3.53OnActivate方法——在窗口对象激活或失去激活状态时触发2109.3.54OnClose方法——在对话框关闭时由框架调用2109.3.55OnCreate方法——在窗口被创建时由框架调用2119.3.56OnCtlColor方法——在子控件即将被绘制时由框架自动调用2129.3.57OnDestroy方法——在窗口即将被释放时由框架调用2139.3.58OnEraseBkgnd方法——在窗口的背景需要擦除时由框架调用2139.3.59OnHScroll方法——在用户单击窗口的水平滚动条时由框架调用2149.3.60OnKeyDown方法——在键盘的非系统键按下时由框架调用2169.3.61OnKeyUp方法——在用户释放非功能按键时由框架调用2169.3.62OnKillFocus方法——在用户失去焦点时由框架调用2179.3.63OnLButtonDblClk方法——在用户双击鼠标左键时由框架调用2179.3.64OnLButtonDown方法——在用户按下鼠标左键时由框架调用2189.3.65OnLButtonUp方法——在用户释放按下的鼠标左键时由框架调用2199.3.66OnMouseMove方法——在鼠标指针移动时由框架调用2199.3.67OnMouseWheel方法——在鼠标滚轮滚动时由框架调用2209.3.68OnMove方法——在窗口被移动后由框架调用2209.3.69OnNcLButtonDblClk方法——在窗口的非客户区域双击鼠标左键时由框架调用2219.3.70OnNcLButtonDown方法——在窗口的非客户区域单击鼠标左按钮时由框架调用2229.3.71OnNcLButtonUp方法——在窗口的非客户区域释放鼠标左键时由框架调用2239.3.72OnPaint方法——在窗口需要绘制时由框架调用2239.3.73OnSetFocus方法——在窗口获得输入焦点时由框架调用2249.3.74OnSize方法——在窗口大小改变后由框架调用2259.3.75OnSizing方法——在窗口大小正在改变时由框架调用2269.3.76OnTimer方法——在用户调用SetTimer方法后由框架根据指定的时间间隔来调用2279.3.77OnVScroll方法——在用户触发窗口的垂直滚动消息时由框架调用2289.3.78OnWindowPosChanged方法——在窗口大小、位置或Z轴顺序改变时由框架调用2299.3.79OnWindowPosChanging方法——在窗口大小、位置或Z轴顺序即将改变时由框架调用229 9.3.80OnWndMsg方法——被窗口过程WindowProc或消息映射调用2309.3.81PostMessage方法——投递一个窗口消息到线程的消息队列中2309.3.82PreCreateWindow方法——在窗口被创建之前由框架调用2319.3.83PreSubclassWindow方法——在窗口被子类化之前由框架调用2329.3.84PreTranslateMessage方法——在窗口消息被分派到窗口过程之前由框架调用2329.3.85RedrawWindow方法——更新窗口指定的客户区域2339.3.86ReleaseDC方法——释放窗口的设备上下文2349.3.87RepositionBars方法——重新设置窗口客户区域中控制条的位置2349.3.88ScreenToClient方法——将屏幕坐标转换为窗口的客户坐标2359.3.89ScrollWindow方法——滚动窗口的客户区域2369.3.90SendDlgItemMessage方法——向控件发送一个消息2369.3.91SendMessage方法——向窗口的窗口过程发送消息2379.3.92SetCapture方法——设置鼠标捕捉2379.3.93SetDlgCtrlID方法——设置窗口控件的控件ID2389.3.94SetDlgItemInt方法——设置对话框中指定控件的文本整数值2399.3.95SetDlgItemText方法——设置对话框中指定控件的字符串文本2399.3.96SetFocus方法——为窗口设置焦点2409.3.97SetFont方法——设置对话框的字体2409.3.98SetIcon方法——设置对话框显示的图标2419.3.99SetMenu方法——设置对话框显示的菜单2429.3.100SetParent方法——设置窗口的父窗口2429.3.101SetScrollPos方法——设置滚动条的滚动位置2439.3.102SetScrollRange方法——设置滚动条的滚动范围2439.3.103SetTimer方法——开始一个计时器2449.3.104SetWindowPos方法——设置窗口的大小、位置和Z轴顺序2449.3.105SetWindowRgn方法——设置窗口的显示区域2459.3.106SetWindowText方法——设置窗口标题或文本2469.3.107ShowScrollBar方法——显示或隐藏窗口滚动条2479.3.108ShowWindow方法——设置窗口的显示状态2489.3.109SubclassDlgItem方法——动态子类化一个窗口控件2489.3.110UnlockWindowUpdate方法——解除由LockWindowUpdate方法对窗口锁定更新249 9.3.111UpdateData方法——进行对话框数据交换2499.3.112UpdateWindow方法——通过发送WM_PAINT消息来更新窗口2509.3.113WindowFromPoint方法——根据坐标点返回一个窗口对象250第10章文档、框架、视图类25110.1CDocument类——文档类25110.1.1AddView方法——附加一个视图对象到文档中25110.1.2CanCloseFrame方法——在显示文档的框架窗口被关闭前由框架调用25210.1.3DeleteContents方法——删除文档中的数据25210.1.4GetDocTemplate方法——获取一个文档模板对象25210.1.5GetFirstViewPosition方法——从视图列表中获取第一个视图对象的位置25310.1.6GetNextView方法——遍历文档对象中的视图列表25310.1.7GetPathName方法——获取文档路径25410.1.8IsModified方法——判断文档自最后一个保存后是否被修改过25410.1.9OnChangedViewList方法——在文档对象中的视图列表有变动时调用25410.1.10OnCloseDocument方法——在文档被关闭时由框架调用25510.1.11OnNewDocument方法——在用户单击新建命令时调用25510.1.12OnOpenDocument方法——在用户打开一个文件时由框架调用25510.1.13OnSaveDocument方法——在用户保存或另存为文件时由框架调用25610.1.14PreCloseFrame方法——在框架对象被销毁前调用25610.1.15RemoveView方法——从文档对象中分离关联的视图对象25710.1.16SaveModified方法——在被修改后的文档关闭时调用25710.1.17SetModifiedFlag方法——在用户修改了文档后调用25710.1.18SetPathName方法——为文档的磁盘文件指定全限定路径25810.2CFrameWnd类——框架类25810.2.1ActivateFrame方法——还原或激活一个框架窗口25810.2.2CreateView方法——在框架窗口内创建一个视图窗口25910.2.3DockControlBar方法——使一个控制条拖入到框架窗口中25910.2.4EnableDocking方法——使控制条能够被拖入26010.2.5FloatControlBar方法——使控制条脱离框架窗口26110.2.6GetActiveDocument方法——获得关联当前活动视图窗口的文档对象26210.2.7GetActiveFrame方法——在多文档视图应用程序中获得一个活动的框架窗口对象262 10.2.8GetActiveView方法——获取关联框架窗口的活动视图窗口26210.2.9GetControlBar方法——根据控制条ID获取一个控制条控件26310.2.10GetMessageBar方法——获取一个状态栏窗口对象指针26310.2.11GetMessageString方法——从资源文件中根据字符串ID加载一个字符串26410.2.12IsTracking方法——确定当前窗口中的分隔条是否正在被移动26410.2.13LoadFrame方法——根据资源信息创建一个框架窗口26510.2.14OnCreateClient方法——创建框架对象关联的视图窗口26510.2.15SetActiveView方法——设置一个活动的视图窗口26610.2.16SetMessageText方法——设置状态栏中ID为0的方格字符串文本26710.2.17ShowControlBar方法——显示或隐藏控制条26710.3CView类——视图类26810.3.1GetDocument方法——获取视图窗口关联的文档对象26810.3.2OnActivateFrame方法——在包含当前视图的框架窗口激活或失去激活时调用269 10.3.3OnBeginPrinting方法——在打印或打印预览任务开始之前由框架调用26910.3.4OnDragEnter方法——在鼠标首次拖入到目标窗口的非滚动区域时由框架调用270 10.3.5OnDragOver方法——鼠标在目标窗口中移动时由框架调用27210.3.6OnDraw方法——当视图窗口绘制时调用27310.3.7OnDrop方法——在用户释放拖动的对象到目的窗口中时由框架调用27410.3.8OnEndPrinting方法——在文档的内容被打印或预览后由框架调用27510.3.9OnEndPrintPreview方法——在用户退出打印预览模式时由框架调用27510.3.10OnPrepareDC方法——在视图即将绘制时调用27610.3.11OnPrint方法——在打印文档时由框架调用27610.4CScrollView类——滚动视图类27710.4.1FillOutsideRect方法——填充视图窗口滚动区域之外的区域27710.4.2GetDeviceScrollPosition方法——获取滚动条的滚动位置27810.4.3GetDeviceScrollSizes方法——获取当前的映射模式、滚动大小等信息27910.4.4GetScrollPosition方法——以逻辑单位返回当前滚动条的滚动位置27910.4.5GetTotalSize方法——以逻辑单位返回视图窗口的滚动区域的大小28010.4.6ResizeParentToFit方法——调整父窗口的大小,使其适应视图窗口的滚动区域281 10.4.7ScrollToPosition方法——滚动窗口到指定的位置28310.4.8SetScrollSizes方法——设置视图窗口的滚动区域范围28310.5CEditView类——文本视图类28410.5.1FindText方法——查找视图编辑窗口中的文本28410.5.2GetBufferLength方法——获取编辑框中字符缓冲区的大小28510.5.3GetEditCtrl方法——获取视图编辑窗口关联的编辑框控件28510.5.4GetSelectedText方法——获取编辑窗口中的选中文本的内容28610.5.5OnFindNext方法——在用户查找文本时执行28610.5.6OnReplaceAll方法——当用户在标准替换对话框中单击替换所有按钮时调用287 10.5.7OnReplaceSel方法——当用户在标准替换对话框中单击替换按钮时调用288 10.5.8PrintInsideRect方法——打印指定区域的文本28810.6CRichEditView类——多功能文本视图类28910.6.1AdjustDialogPosition方法——调整某个对话框的位置28910.6.2CanPaste方法——判断剪贴板中包含的信息是否能够粘贴到视图窗口中290 10.6.3FindTextSimple方法——查找文本,并将文本所在行设置为当前行29010.6.4GetCharFormatSelection方法——获取当前选中内容的字符格式属性29110.6.5GetMargins方法——获取当前的打印边距29210.6.6GetPageRect方法——获取在打印中使用的页面范围29210.6.7GetPaperSize方法——获取打印纸张的大小29310.6.8GetPrintRect方法——获取打印纸的可打印区域29310.6.9GetPrintWidth方法——获取打印区域的宽度29310.6.10GetRichEditCtrl方法——获取与视图窗口关联的CRichEditCtrl控件29410.6.11GetTextLength方法——获取视图窗口所有文本的长度29410.6.12OnCharEffect方法——改变当前文字效果29510.6.13OnParaAlign方法——改变选中文本的对齐方式29510.6.14PrintInsideRect方法——打印指定区域的文本29610.6.15SetCharFormat方法——设置新文本的字符属性29710.6.16SetMargins方法——设置视图窗口的打印边距29710.6.17SetPaperSize方法——设置新的打印纸大小29810.6.18SetParaFormat方法——设置当前选中的段落格式属性29810.7CHtmlView类——超文本视图类29910.7.1ExecWB方法——在Web浏览器中执行一个命令29910.7.2GetAddressBar方法——确定IE浏览器中的地址栏是否可见30010.7.3GetFullName方法——获取当前IE浏览器显示的文件的全路径30010.7.4GetLocationName方法——获取当前浏览器中显示的资源名称30010.7.5GetLocationURL方法——获取浏览器控件中显示URL30110.7.6GetVisible方法——确定浏览器控件所包含的对象是否可见30110.7.7GoBack方法——返回浏览的页面30210.7.8GoForward方法——在历史记录列表中显示下一个浏览的页面30210.7.9GoHome方法——将页面定位到首页30210.7.10GoSearch方法——定位到查找页30310.7.11LoadFromResource方法——从资源文件中加载页面30310.7.12Navigate方法——在视图窗口中显示指定的页面30310.7.13Navigate2方法——显示指定的页面30410.7.14Refresh方法——刷新页面,即重新加载原来的文件30510.7.15SetAddressBar方法——显示或隐藏浏览器中的地址栏30510.7.16Stop方法——停止当前的操作30610.8CSplitterWnd类——窗口分隔类30610.8.1ActivateNext方法——执行Next Pane 或Previous Pane命令30610.8.2CanActivateNext方法——检查Next Pane和Previous Pane命令当前是否有效307 10.8.3Create方法——创建一个动态分隔器窗口30710.8.4CreateScrollBarCtrl方法——创建一个共享的滚动条控件30810.8.5CreateStatic方法——创建静态分隔的窗体30910.8.6CreateView方法——创建子视图30910.8.7CSplitterWnd方法——构造函数,用于CSplitterWnd对象31010.8.8DeleteColumn方法——删除一个列31010.8.9DeleteRow方法——删除行31110.8.10DeleteView方法——删除视图31110.8.11DoKeyboardSplit方法——实现一个键盘分隔命令31110.8.12DoScroll方法——执行分隔窗口的同步滚动31210.8.13DoScrollBy方法——将分隔窗口滚动指定的像素数31210.8.14GetActivePane方法——获得一个分隔器窗口中的活动窗格31310.8.15GetColumnCount方法——获得分隔器中的列数31310.8.16GetColumnInfo方法——获取指定列的信息31410.8.17GetPane方法——根据指定行、列返回窗格指针31410.8.18GetRowCount方法——获得分隔器的行数31510.8.19GetRowInfo方法——获得指定行的信息31510.8.20GetScrollStyle方法——获得分隔器窗口的共享滚动条的风格31510.8.21IdFromRowCol方法——获取指定行和列处的窗格的子窗口ID31610.8.22IsChildPane方法——判断pWnd是否是此分隔器窗口的子窗口31610.8.23OnDrawSplitter方法——绘制分隔器窗口的图像31710.8.24SetActivePane方法——设置活动窗格31710.8.25SetColumnInfo方法——设置指定列信息31810.8.26SetRowInfo方法——设置指定行信息31810.8.27SetScrollStyle方法——为分隔器窗口的共享滚动条指定新的滚动条风格319第11章控制栏类32011.1CControlBar类——控件条基类32011.1.1CalcDynamicLayout方法——计算动态控件条的维数32011.1.2CalcFixedLayout方法——计算控件条的水平大小32111.1.3GetBarStyle方法——获取控件条风格32111.1.4GetBorders方法——获取控件条边框值32111.1.5GetCount方法——获取项的个数32211.1.6IsFloating方法——是否为浮动状态32211.1.7SetBarStyle方法——设置控件条风格32211.1.8SetBorders方法——设置控件条边框值32311.2CT oolBar类——工具条类32411.2.1CommandToIndex方法——通过命令ID返回索引32411.2.2Create方法——创建窗口32511.2.3GetButtonInfo方法——获取按钮信息32511.2.4GetButtonText方法——获取按钮文本32611.2.5GetItemID方法——获取指定索引下的命令ID32711.2.6GetToolBarCtrl方法——获取工具条控件32711.2.7LoadBitmap方法——载入位图32711.2.8LoadToolBar方法——载入工具条资源32811.2.9SetButtonInfo方法——设置按钮信息32811.2.10SetButtons方法——设置所有按钮的命令ID32911.2.11SetButtonText方法——设置按钮的文本33011.2.12SetHeight方法——设置工具条高度33011.2.13SetSizes方法——设置工具条大小33111.3CStatusBar类——状态栏类33111.3.1Create方法——创建窗口33111.3.2GetPaneInfo方法——获取指定窗格信息33211.3.3GetPaneStyle方法——获取状态栏风格33311.3.4GetPaneText方法——获取指定窗格的文本33311.3.5GetStatusBarCtrl方法——获取状态栏控件33411.3.6SetIndicators方法——设置所有窗格文本33411.3.7SetPaneInfo方法——设置指定窗格信息33511.3.8SetPaneStyle方法——设置状态栏风格33511.3.9SetPaneText方法——设置指定窗格文本33611.4CReBarCtrl类——ReBar控件类33611.4.1BeginDrag方法——开始拖放33611.4.2DeleteBand方法——删除指定索引下的带33711.4.3GetBandBorders方法——获取指定带的区域33711.4.4GetBandCount方法——获取带的个数33811.4.5GetBandInfo方法——获取带的信息33811.4.6GetBarHeight方法——获取ReBar控件高度33911.4.7GetBarInfo方法——获取ReBar控件信息33911.4.8GetRect方法——获取ReBar控件矩形区域33911.4.9GetRowCount方法——获取ReBar控件带所占行数34011.4.10GetRowHeight方法——获取指定行的高度34011.4.11InsertBand方法——插入一个新带34111.4.12MaximizeBand方法——将ReBar控件中的一个带调整到它的理想或最大尺寸341 11.4.13MinimizeBand方法——将ReBar控件中的一个带调整到它的理想或最小尺寸342 11.4.14MoveBand方法——将一个带从一个索引移动到另一个索引34211.4.15SetBandInfo方法——设置一个ReBar控件中的已存在的带的特征34311.4.16ShowBand方法——显示或隐藏一个ReBar控件中的给定带34311.5CMenu类——菜单类34411.5.1AppendMenu方法——添加新菜单34411.5.2CheckMenuItem方法——添加或删除检测标记34511.5.3CheckMenuRadioItem方法——添加或删除单选标记34511.5.4CreateMenu方法——创建菜单34611.5.5CreatePopupMenu方法——创建弹出式菜单34711.5.6DestroyMenu方法——释放菜单34711.5.7DrawItem方法——绘制菜单项34711.5.8EnableMenuItem方法——控制菜单项是否可用34811.5.9GetMenuItemCount方法——获取菜单项的数量34911.5.10GetMenuItemID方法——通过菜单项位置获取ID34911.5.11GetMenuItemInfo方法——获取指定菜单项信息34911.5.12GetMenuState方法——获取菜单状态35011.5.13GetMenuString方法——获取菜单文本35111.5.14GetSubMenu方法——获取子菜单35111.5.15InsertMenu方法——插入菜单项35211.5.16LoadMenu方法——载入菜单资源35211.5.17LoadMenuIndirect方法——过菜单模板装载菜单35311.5.18MeasureItem方法——指定菜单维度35411.5.19ModifyMenu方法——修改菜单项信息35411.5.20RemoveMenu方法——移除菜单项35511.5.21SetMenuItemBitmaps方法——设置菜单项显示的位图356 11.6CT oolBarCtrl类——工具条控件类35711.6.1AddBitmap方法——添加位图35711.6.2AddButtons方法——添加按钮35711.6.3AddStrings方法——添加按钮文本35811.6.4AutoSize方法——可自动调整大小35811.6.5CheckButton方法——按钮是否选中35911.6.6CommandToIndex方法——通过命令ID获取索引35911.6.7DeleteButton方法——删除按钮36011.6.8EnableButton方法——按钮是否可用36011.6.9GetAnchorHighlight方法——是否可以加亮显示36111.6.10GetBitmapFlags方法——获取位图标志36111.6.11GetButton方法——获取按钮36111.6.12GetButtonCount方法——获取按钮数量36211.6.13GetButtonSize方法——获取按钮大小36211.6.14GetDisabledImageList方法——图像列表是否可用36211.6.15GetHotImageList方法——获取热点图像列表36311.6.16GetHotItem方法——获取热点项索引36311.6.17GetMaxSize方法——获取可见项的最大尺寸36311.6.18GetMaxTextRows方法——获取按钮文本的最大行数364 11.6.19GetRows方法——获取显示按钮的行数36411.6.20HideButton方法——隐藏按钮36511.6.21Indeterminate方法——设置按钮是否具有不确定状态365 11.6.22InsertButton方法——插入按钮36611.6.23IsButtonChecked方法——按钮是否被选中36611.6.24IsButtonEnabled方法——按钮是否可用36711.6.25IsButtonHidden方法——按钮是否隐藏36711.6.26IsButtonHighlighted方法——按钮是否处于加亮状态368 11.6.27IsButtonIndeterminate方法——按钮是否处于不确定状态368 11.6.28IsButtonPressed方法——按钮是否被按下36911.6.29LoadImages方法——载入图像列表36911.6.30MapAccelerator方法——映射加速键36911.6.31MarkButton方法——设置按钮处于高亮状态37011.6.32MoveButton方法——移动按钮37011.6.33PressButton方法——设置按钮是否被按下37111.6.34RestoreState方法——恢复工具条状态37111.6.35SaveState方法——保存工具条状态37211.6.36SetAnchorHighlight方法——工具条是否加亮37311.6.37SetBitmapSize方法——设置位图大小37311.6.38SetButtonSize方法——设置按钮大小37311.6.39SetButtonStructSize方法——设置按钮结构大小37411.6.40SetButtonWidth方法——设置按钮宽度37411.6.41SetCmdID方法——设置按钮命令ID37511.6.42SetDisabledImageList方法——设置无效按钮图像列表375 11.6.43SetHotImageList方法——设置热点按钮图像列表376 11.6.44SetHotItem方法——设置热点项的索引37611.6.45SetIndent方法——设置工具条与第一个按钮的缩进377 11.6.46SetMaxTextRows方法——设置显示文本的最大行数377 11.6.47SetRows方法——设置工具条的最大行数37811.6.48SetStyle方法——设置工具条控件风格37811.7CStatusBarCtrl类——状态栏控件类37911.7.1GetBorders方法——获取状态栏边界值37911.7.2GetParts方法——获取窗格数量37911.7.3IsSimple方法——是否处于简单模式38011.7.4SetIcon方法——设置窗格图标38011.7.5SetMinHeight方法——设置绘图区的最小高度38111.7.6SetParts方法——设置窗格数量38111.7.7SetSimple方法——设为简单模式38211.7.8SetText方法——设置窗格文本382第12章对话框类38412.1CDialog类——对话框类38412.1.1CreateIndirect方法——使用模板创建对话框38412.1.2DoModal方法——模态显示对话框38512.1.3EndDialog方法——关闭模态显示的对话框38512.1.4GetDefID方法——获取默认按钮ID38612.1.5GotoDlgCtrl方法——将焦点移动到指定的控件上38612.1.6MapDialogRect方法——将矩形单位转换为屏幕单位387 12.1.7NextDlgCtrl方法——获取下一个具有焦点的控件38712.1.8OnCancel方法——取消对话框调用返回IDCANCEL388 12.1.9OnInitDialog方法——初始化对话框38812.1.10OnOK方法——取消对话框调用返回IDOK38912.1.11OnSetFont方法——设置字体38912.1.12PrevDlgCtrl方法——获取上一个具有焦点的控件39012.1.13SetDefID方法——设置默认按钮390。
VC++6.0位图的打开显示保存
VC++ 6.0 位图打开、显示和保存操作用到的数据:char *m_pDibData;int m_nBitCount;int m_nHeight;int m_nWidth;CString m_fileName;HGLOBAL m_hDIB;void CBitView::OnFileOpen(){// TODO: Add your command handler code here//打开对话框,并获得要打开的位图的路径,保存在m_fileName中static char szFilter[] = "位图文件(*.bmp;*.dib) | *.bmp;*.dib | All Files(*.*) | *.* ||";CFileDialog dlg(true,"*.bmp",NULL, OFN_HIDEREADONL Y | OFN_OVERWRITEPROMPT,szFilter);if (dlg.DoModal()==IDOK){UpdateData(true);m_fileName = dlg.GetPathName();}//新建CFile类对象dibFile,并用只读的模式打开CFile dibFile;if(!dibFile.Open(m_fileName,CFile::modeRead)){AfxMessageBox("Can not open DIB file...");return;}//接下来读取位图文件的文件头//新建一个位图文件头变量BITMAPFILEHEADER bitmapFileHeader;//从位图文件中读取与位图文件头大小的字节到文件头变量中UINT bitmapFileHeaderSize = dibFile.Read((void*)&bitmapFileHeader,sizeof(BITMAPFILEHEADER));if (bitmapFileHeaderSize != sizeof(BITMAPFILEHEADER)){AfxMessageBox("Failed in reading file");return;}//判断读取的文件是否为位图文件if (bitmapFileHeader.bfType == 0x4d42){//读取整个位图文件长度DWORD dwFileLength = dibFile.GetLength();/***************************************BMP文件的组成结构1 位图文件头(14字节)(BITMAPFILEHEADER)2 位图信息(包含位图信息头和调色板数据)真彩色的位图是没有调色板数据的,而位图信息头为14字节其结构体为BITMAPINFOHEADER,位图信息的结构体为BITMAPINFO3 像素数据*****************************************///获取位图信息头和像素数据的大小(文件总长度- 位图文件头的长度)DWORD dwSize = dwFileLength - sizeof(BITMAPFILEHEADER);//为位图信息头和像素数据分配大小m_hDIB = (HGLOBAL)::GlobalAlloc(GMEM_MOVEABLE,dwSize);//锁定分配的内存,将返回指向此内存的指针BYTE * m_pdib = (BYTE *)::GlobalLock((HGLOBAL)m_hDIB);//将位图信息头和像素数据一起读入到已分配的内存当中DWORD dwReadSize = dibFile.Read((void*)m_pdib,dwSize);//获取位图信息头和位图信息的指针//位图信息头指针用来获取位图的宽度、高度和每个像素所占字节数//位图信息指针用来在StretchDIBits中显示位图时的参数BITMAPINFO *m_pBitmapInfo = (BITMAPINFO *)m_pdib;BITMAPINFOHEADER *m_pBitmapInfoHeader = (BITMAPINFOHEADER *)m_pdib;m_nWidth = m_pBitmapInfoHeader->biWidth;m_nHeight = m_pBitmapInfoHeader->biHeight;m_nBitCount = m_pBitmapInfoHeader->biBitCount;if (m_nBitCount < 24){AfxMessageBox("打开的不是大于24位的真彩色图片,不能处理,只能显示和保存位图!");}//计算像素数据所在的位置(起始位置+位图信息头的大小)m_pDibData = (char *)m_pdib+m_pBitmapInfoHeader->biSize;//显示像素数据的内容CDC *pDC = GetDC(); //得到当前设备的句柄指针::StretchDIBits(pDC->m_hDC,0,0,m_nWidth,m_nHeight,0,0,m_nWidth,m_nHeight,m_pDib Data,m_pBitmapInfo,DIB_RGB_COLORS,SRCCOPY);::GlobalUnlock((HGLOBAL)m_hDIB);}else{AfxMessageBox("非位图文件");return;}}void CBitView::OnSaveBmp(){// TODO: Add your command handler code here//生成图像的信息头(包括位图文件头和位图信息)//位图文件头占14字节,位图信息头占40字节BITMAPFILEHEADER bf;bf.bfOffBits = 54;bf.bfReserved1 = 0;bf.bfReserved2 = 0;//说明文件大小(位图文件头+ 位图信息头+图片像素所占字节数)bf.bfSize = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER)+m_nHeight*m_nWidth*4;//说明文件类型为BMbf.bfType =((WORD)'M'<<8 | 'B');BITMAPINFOHEADER bi;//说明每个像素所占字节数,其值为1、4、8、16、24、32bi.biBitCount = m_nBitCount;//说明图像显示有重要影响的颜色索引的数目,如果是0,表示都重要bi.biClrImportant = 0;//说明图像数据压缩的类型bi.biCompression = 0L;//说明图像的宽度,以像素为单位bi.biWidth = m_nWidth;//说明图像的高度,以像素为单位bi.biHeight = m_nHeight;//目标设备说明位面数,其值总是被设为1bi.biPlanes = 1;//说明BITMAPINFOHEADER结构所需要的字节数bi.biSize = sizeof(BITMAPINFOHEADER);//说明图像的大小,以字节为单位,当用BI_RGB格式时,可设置为0bi.biSizeImage = 0;//说明图像的水平分辨率,用像素/米来表示bi.biXPelsPerMeter = 0;//说明图像的垂直分辨率,用像素/米来表示bi.biYPelsPerMeter = 0;//打开保存对话框,获取保存路径及文件名static char szFilter[] = "位图文件(*.bmp;*.dib) | *.bmp;*.dib | All Files(*.*) | *.* ||";CFileDialog dlg(false,"*.bmp",NULL,OFN_HIDEREADONL Y | OFN_OVERWRITEPROMPT,szFilter);if (dlg.DoModal() == IDOK){UpdateData(TRUE);m_fileName = dlg.GetPathName();}else{return;}//建立CFile对像准备保存图片CFile file;if(!file.Open(m_fileName,CFile::modeCreate | CFile::modeWrite | CFile::typeBinary)){AfxMessageBox("cant write BMP file");return;}//写入位图文件头file.Write(&bf,14);//写入位图信息头file.Write(&bi,sizeof(BITMAPINFOHEADER));//获得图像每一行所占的字节数long lWidthBytes = (m_nWidth*m_nBitCount +31)/32*4;//写入整个的像素矩阵中的数据file.Write(m_pDibData,m_nHeight*lWidthBytes);//写入完毕file.Close();}void CBitView::OnShowBMP(){// TODO: Add your command handler code hereCDC *pDC = GetDC();BYTE *lpdib = (BYTE *)::GlobalLock((HGLOBAL)m_hDIB);BITMAPINFO *m_pBitmapInfo = (BITMAPINFO *)lpdib;::StretchDIBits(pDC->m_hDC,0,0,m_nWidth,m_nHeight,0,0,m_nWidth,m_nHeight,m_pDib Data,m_pBitmapInfo,DIB_RGB_COLORS,SRCCOPY);::GlobalUnlock((HGLOBAL)m_hDIB);}。
VC++6.0控件使用方法大全
使用Windows标准控件我们在前面曾提到过,控件是一些行为标准化了的窗口,一般用于对话框或其它窗口中充当与用户交互的元素。
在Visual C++中,可以使用的控件分成三类:(1) Windows标准控件Windows标准控件由Windows操作系统提供,在Windows 95中还提供了一些新增的控件。
所有这些控件对象都是可编程的,我们可以使用Visual C++提供的对话框编辑器把它们添加到对话框中。
Microsoft基础类库(MFC)提供了封装这些控件的类,它们列于表6.1。
表6.1 Windows标准控件控件 MFC类 描述动画 CAnimateCtrl 显示连续的AVI视频剪辑按钮 CButton 用来产生某种行为的按钮,以及复选框、单选钮和组框组合框 CComboBox 编辑框和列表框的组合编辑框 CEdit 用于键入文本标题头 CHeaderCtrl 位于某一行文本之上的按钮,可用来控制显示文件的宽度热键 CHotKeyCtrl 用于通过按下某一组合键来很快的执行某些常用的操作图象列表 CImageList 一系列图象(典型情况下是一系列图标或位图)的集合。
图象列表本身不是一种控件,它常常是和其它控件一起工作,为其它控件提供所用的图象列表列表 CListCtrl 显示文本及其图标列表的窗口列表框 CListBox 包括一系列字符串的列表进度 CProgressCtrl 用于在一较长操作中提示用户所完成的进度多格式文本编辑 CRichEditCtrl 提供可设置字符和段落格式的文本编辑的窗口滚动条 CScrollBar 为对话框提供控件形式的滚动条滑块 CSliderCtrl 包括一个有可选标记的滑块的窗口旋转按钮 CSpinButtonCtrl 提供一对可用于增减某个值的箭头静态文本 CStatic 常用于为其它控件提供标签状态条 CStatusBarCtrl 用于显示状态信息的窗口,同MFC类CStatusBar类似续表6.1 控件 MFC类 描述选项卡 CTabCtrl 在选项卡对话框或属性页中提供具有类似笔记本中使用的分隔标签的外观的选项卡工具条 CToolBarCtrl 具有一系列命令生成按钮的窗口,同MFC类CToolBar类似工具提示 CToolTipCtrl 一个小的弹出式窗口,用于提供对工具条按钮或其它控件功能的简单描述树 CTreeCtrl 用于显示一系列的项的继承结构前面提到过,在MFC中,类CWnd是所有窗口类的基类,很自然的,它也是所有控件类的基类。
VC6.0的常用菜单命令项
VC6.0的常用菜单命令项(1)File菜单New:打开“new”对话框,以便创建新的文件、工程或工作区。
Close Workspace:关闭与工作区相关的所有窗口。
Exit:退出VC6环境,将提示保存窗口内容等。
(2)Edit菜单Cut:快捷键Ctrl+X。
将选定内容复制到剪贴板,然后再从当前活动窗口中删除所选内容。
与“Paste”联合使用可以移动选定的内容。
Copy:快捷键Ctrl+C。
将选定内容复制到剪贴板,但不从当前活动窗口中删除所选内容。
与“Paste”联合使用可以复制选定的内容。
Paste:快捷键Ctrl+V。
将剪贴板中的内容插入(粘贴)到当前鼠标指针所在的位置。
注意,必须先使用Cut或Copy使剪贴板中具有准备粘贴的内容。
Find:快捷键Ctrl+F。
在当前文件中查找指定的字符串。
顺便指出,可按快捷键F3寻找下一个匹配的字符串。
Find in Files:在指定的多个文件中查找指定的字符串。
Replace:快捷键Ctrl+H。
替换指定的字符串(用某一个串替换另一个串)。
Go To:快捷键Ctrl+G。
将光标移到指定行上。
Breakpoints:快捷键Alt+F9。
弹出对话框,用于设置、删除或查看程序中的所有断点。
断点将告诉调试器应该在何时何地暂停程序的执行,以便查看当时的变量取值等现场情况。
(3)View菜单Workspace:如果工作区窗口没显示出来,选择执行该项后将显示出工作区窗口。
Output:如果输出窗口没显示出来,选择执行该项后将显示出输出窗口。
输出窗口中将随时显示有关的提示信息或出错警告信息等。
(4)Project菜单Add To Project:选择该项将弹出子菜单,用于添加文件或数据链接等到工程之中去。
例如子菜单中的New选项可用于添加“C++ Source File”或“C/C++ Header File”;而子菜单中的Files选项则用于插入已有的文件到工程中。
vs怎么显示行号?visualstudio行号显示方法图解
查看详情 1、随便打开一个项目,可以看到代码框内并没有显示行号
2、选择“工具”-“选项”,打开后界面如下,选择,找到下图中的“行号”并勾选
对于开发者而言一款优秀智能的开发工具能够提升应用开发的效率正因为如此visualstudio作为主流的开发工具微软非常的用心不仅能够让这款开发工具满足用户体验的
vs怎么显示行号? visualstudio行号显示方法图解
编程的朋友相信都知道visual studio2013,在编译代码出错,在没有显示行号的情况下是很难找到位置的。下面小编就教大家 怎么将行号显示出来
3、行号可以显示了
Hale Waihona Puke
如何使得VC++6.0时刻显示行号
如何使得VC++6.0时刻显示行号
vc++6.0的右下角是可以显示当前光标的行号列号的,总是觉得不方便。
编程时具有行号对编程过程有很打的帮助作用,特别在学习阶段,能帮助我们提高程序可读性,方便讲解程序.但是如何使得VC中能够具有行号,是值得我们去做的一个问题。
通过VC6LineNumberAddin能够解决这个问题,方法如下。
一、下载该文件。
网上很多免费的。
二、解压后把VC6LineNumberAddin.dll拷贝到安装路径内(如:C:\Program Files\Microsoft Visual Studio\COMMON\MSDev98\ AddIns)…\COMMON\MSDev98\AddIns内。
三、运行注册表文件,进行注册。
四、打开VC++6.0,进入tools\customize\Add-ins and Macr o Files\菜单后的对话框内,在VC6LineNumber Developer Studio Add-in前划上钩。
五、确定后进入编程界面。
即可发现,我们的程序具有行号了。
整体的程序界面。
在VC++6.0对话框中实现对数据库显示及操作的探讨
在VC++6.0对话框中实现对数据库显示及操作的探讨
李学京;夏登玉;王永智;张长会
【期刊名称】《工业控制计算机》
【年(卷),期】2003(016)010
【摘要】数据库的可视化对使用人员来说是不可缺少的,它能帮助使用人员对数据库实时地操作.操作与显示同步进行的实例不少,但列表控件在数据库操作中显示出其独特的优势,它能实时、灵活、快速的反映对数据库的操作.本文以一实例介绍如何在普通对话框中利用列表控件对数据库进行显示和操作的方法.
【总页数】3页(P45-46,62)
【作者】李学京;夏登玉;王永智;张长会
【作者单位】合肥工业大学机械与汽车工程学院,230009;合肥工业大学机械与汽车工程学院,230009;合肥工业大学机械与汽车工程学院,230009;合肥工业大学机械与汽车工程学院,230009
【正文语种】中文
【相关文献】
1.用VC++6.0实现数据库数据的动态显示 [J], 张凯;赵鹏山
2.使用VC++在有背景图片的对话框中实现静态文本的透明显示 [J], 唐先红;耿建平
3.VC++6.0下的图像处理及在多文档和无模态对话框中的实时显示 [J], 张健;张宜群;吕志勇
4.在VC++6.0应用程序中利用位图实现大数据量计算绘图的快速显示、保存与打
印 [J], 黄伟
5.在VC++
6.0中实现全屏显示 [J], 叶子
因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如何使得VC++6.0时刻显示行号
2012-03-07 14:55:35| 分类:C++|字号订阅
vc++6.0的右下角是可以显示当前光标的行号列号的,总是觉得不方便。
编程时具有行号对编程过程有很打的帮助作用,特别在学习阶段,能帮助我们提高程序可读性,方便讲解程序.但是如何使得VC中能够具有行号,是值得我们去做的一个问题。
通过VC6LineNumberAddin能够解决这个问题,方法如下。
一、下载该文件。
网上很多免费的。
二、解压后把VC6LineNumberAddin.dll拷贝到安装路径内(如:C:\Program Files\Microso ft Visual Studio\COMMON\MSDev98\AddIns)…\COMMON\MSDev98\AddIns内。
三、运行注册表文件,进行注册。
四、打开VC++6.0,进入tools\customize\Add-ins and Macro Files\菜单后的对话框内,在VC6LineNumber Developer Studio Add-in前划上钩。
五、确定后进入编程界面。
即可发现,我们的程序具有行号了。
整体的程序界面。