范例
当前位置:首页 > 其他范文 > 范例 > 列表页

visual,c,,范例开发大全pdf

小草范文网  发布于:2017-02-20  分类: 范例 手机版

篇一:Visual_C入门教程(经典版)

C++入门必看,提升必看

Visual C++MFC入门教程

目录

+-- 第一章 VC入门

|------ 1.1 如何学好VC

|------ 1.2 理解Windows消息机制

|------ 1.3 利用Visual C++/MFC开发Windows程序的优势

|------ 1.4 利用MFC进行开发的通用方法介绍

|------ 1.5 MFC中常用类,宏,函数介绍

+-- 第二章 图形输出

|------ 2.1 和GUI有关的各种对象

|------ 2.2 在窗口中输出文字

|------ 2.3 使用点,刷子,笔进行绘图

|------ 2.4 在窗口中绘制设备相关位图,图标,设备无关位图

|------ 2.5 使用各种映射方式

|------ 2.6 多边形和剪贴区域

+-- 第三章 文档视结构

|------ 3.1 文档 视图 框架窗口间的关系和消息传送规律

|------ 3.2 接收用户输入

|------ 3.3 使用菜单

|------ 3.4 文档,视,框架之间相互作用

|------ 3.5 利用序列化进行文件读写

|------ 3.6 MFC中所提供的各种视类介绍

+-- 第四章 窗口控件

|------ 4.1 Button

|------ 4.2 Static Box

|------ 4.3 Edit Box

|------ 4.4 Scroll Bar

|------ 4.5 List Box/Check List Box

|------ 4.6 Combo Box/Combo Box Ex

|------ 4.7 Tree Ctrl

|------ 4.8 List Ctrl

|------ 4.9 Tab Ctrl

|------ 4.A Tool Bar

|------ 4.B Status Bar

|------ 4.C Dialog Bar

|------ 4.D 利用AppWizard创建并使用ToolBar StatusBar Dialog Bar

|------ 4.E General Window

|------ 4.F 关于WM_NOTIFY的使用方法

+-- 第五章 对话框

|------ 5.1 使用资源编辑器编辑对话框

|------ 5.2 创建有模式对话框

|------ 5.3 创建无模式对话框

|------ 5.4 在对话框中进行消息映射

|------ 5.5 在对话框中进行数据交换和数据检查

|------ 5.6 使用属性对话框

|------ 5.7 使用通用对话框

|------ 5.8 建立以对话框为基础的应用

|------ 5.9 使用对话框作为子窗口

+-- 第六章 网络通信开发

|------ 6.1 WinSock介绍

|------ 6.2 利用WinSock进行无连接的通信

+------ 6.3 利用WinSock建立有连接的通信

《Visual C++开发指南》 闻怡洋/文

1.1 如何学好VC

这个问题很多朋友都问过我,当然流汗是必须的,但同时如果按照某种思路进行有计划的学习就会起到更好的效果。万事开头难,为了帮助朋友们更快的掌握VC开发,下面我将自己的一点体会讲一下:

1、需要有好的C/C++基础。正所谓“磨刀不误砍柴工”,最开始接触VC时不要急于开始Windows程序开发,而是应该进行一些字符界面程序的编写。这样做的目的主要是增加对语言的熟悉程度,同时也训练自己的思维和熟悉一些在编程中常犯的错误。更重要的是理解并能运用C++的各种特性,这些在以后的开发中都会有很大的帮助,特别是利用MFC进行开发的朋友对C++一定要能熟练运用。

2、理解Windows的消息机制,窗口句柄和其他GUI句柄的含义和用途。了解和MFC各个类功能相近的API函数。

3、一定要理解MFC中消息映射的作用。

4、训练自己在编写代码时不使用参考书而是使用Help Online。

5、记住一些常用的消息名称和参数的意义。

6、学会看别人的代码。

7、多看书,少买书,买书前一定要慎重。

8、闲下来的时候就看参考书。

9、多来我的主页。^O^

后面几条是我个人的一点意见,你可以根据需要和自身的情况选用适用于自己的方法。

此外我将一些我在选择参考书时的原则:

对于初学者:应该选择一些内容比较全面的书籍,并且书籍中的内容应该以合理的方式安排,在使用该书时可以达到循序渐进的效果,书中的代码要有详细的讲解。尽量买翻译的书,因为这些书一般都比较易懂,而且语言比较轻松。买书前一定要慎重如果买到不好用的书可能会对自己的学习积极性产生击。对于已经掌握了VC的朋友:这种程度的开发者应该加深自己对系统原理,技术要点的认识。需要选择一些对原理讲解的比较透彻的书籍,这样一来才会对新技术有更多的了解,最好书中对技术的应用有一定的阐述。尽量选择示范代码必较精简的书,可以节约银子。

此外最好涉猎一些辅助性的书籍。

1.2 理解Windows消息机制

Windows系统是一个消息驱动的OS,什么是消息呢?我很难说得清楚,也很难下一个定义(谁在嘘我),我下面从不同的几个方面讲解一下,希望大家看了后有一点了解。

1、消息的组成:一个消息由一个消息名称(UINT),和两个参数(WPARAM,LPARAM)。当用户进行了输入或是窗口的状态发生改变时系统都会发送消息到某一个窗口。例如当菜单转中之后会有WM_COMMAND消息发送,WPARAM的高字中(HIWORD(wParam))是命令的ID号,对菜单来讲就是菜单ID。当然用户也可以定义自己的消息名称,也可以利用自定义消息来发送通知和传送数据。

2、谁将收到消息:一个消息必须由一个窗口接收。在窗口的过程(WNDPROC)中可以对消息进行分析,对自己感兴趣的消息进行处理。例如你希望对菜单选择进行处理那么你可以定义对WM_COMMAND进行处理的代码,如果希望在窗口中进行图形输出就必须对WM_PAINT进行处理。

3、未处理的消息到那里去了:M$为窗口编写了默认的窗口过程,这个窗口过程将负责处理那些你不处理消息。正因为有了这个默认窗口过程我们才可以利用Windows的窗口进行开发而不必过多关注窗口各种消息的处理。例如窗口在被拖动时会有很多消息发送,而我们都可以不予理睬让系统自己去处理。

4、窗口句柄:说到消息就不能不说窗口句柄,系统通过窗口句柄来在整个系统中唯一标识一个窗口,发送一个消息时必须指定一个窗口句柄表明该消息由那个窗口接收。而每个窗口都会有自己的窗口过程,所以用户的输入就会被正确的处理。例如有两个窗口共用一个窗口过程代码,你在窗口一上按下鼠标时消息就会通过窗口一的句柄被发送到窗口一而不是窗口二。

5、示例:下面有一段伪代码演示如何在窗口过程中处理消息

LONG yourWndProc(HWND hWnd,UINT uMessageType,WPARAM wP,LPARAM)

{

switch(uMessageType)

{ //使用SWITCH语句将各种消息分开

case(WM_PAINT):

doYourWindow(...);//在窗口需要重新绘制时进行输出

break;

case(WM_LBUTTONDOWN):

doYourWork(...);//在鼠标左键被按下时进行处理

break;

default:

callDefaultWndProc(...);//对于其它情况就让系统自己处理

break;

}

}

接下来谈谈什么是消息机制:系统将会维护一个或多个消息队列,所有产生的消息都回被放入或是插入队列中。系统会在队列中取出每一条消息,根据消息的接收句柄而将该消息发送给拥有该窗口的程序的消息循环。每一个运行的程序都有自己的消息循环,在循环中得到属于自己的消息并根据接收窗口的句柄调用相应的窗口过程。而在没有消息时消息循环就将控制权交给系统所以Windows可以同时进行多个任务。下面的伪代码演示了消息循环的用法:

while(1)

{

} id=getMessage(...); if((本文来自:wwW.xIaocAofanwEn.coM 小草 范文 网:visual,c,,范例开发大全pdf)id == quit) break; translateMessage(...);

当该程序没有消息通知时getMessage就不会返回,也就不会占用系统的CPU时间。 下图为消息投递模式

在16位的系统中系统中只有一个消息队列,所以系统必须等待当前任务处理消息后才可以发送下一消息到相应程序,如果一个程序陷如死循环或是耗时操作时系统就会得不到控制权。这种多任务系统也就称为协同式的多任务系统。Windows3.X就是这种系统。而32位的系统中每一运行的程序都会有一个消息队列,所以系统可以在多个消息队列中转换而不必等待当前程序完成消息处理就可以得到控制权。这种多任务系统就称为抢先式的多任务系统。Windows95/NT就是这种系统。

1.3 利用Visual C++/MFC开发Windows程序的优势

MFC借助C++的优势为Windows开发开辟了一片新天地,同时也借助ApplicationWizzard使开发者摆脱离了那些每次都必写基本代码,借助ClassWizard和消息映射使开发者摆脱了定义消息处理时那种混乱和冗长的代码段。更令人兴奋的是利用C++的封装功能使开发者摆脱Windows中各种句柄的困扰,只需要面对C++中的对象,这样一来使开发更接近开发语言而远离系统。(但我个人认为了解系统原理对开发很有帮助)

正因为MFC是建立在C++的基础上,所以我强调C/C++语言基础对开发的重要性。利用C++的封装性开发者可以更容易理解和操作各种窗口对象;利用C++的派生性开发者可以减少开发自定义窗口的时间和创造出可重用的代码;利用虚拟性可以在必要时更好的控制窗口的活动。而且C++本身所具备的超越C语言的特性都可以使开发者编写出更易用,更灵活的代码。

在MFC中对消息的处理利用了消息映射的方法,该方法的基础是宏定义实现,通过宏定义将消息分派到不同的成员函数进行处理。下面简单讲述一下这种方法的实现方法:

代码如下

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)

//{{AFX_MSG_MAP(CMainFrame)

ON_WM_CREATE()

//}}AFX_MSG_MAP

ON_COMMAND(ID_FONT_DROPDOWN, DoNothing)

END_MESSAGE_MAP()

经过编译后,代码被替换为如下形式(这只是作讲解,实际情况比这复杂得多):

//BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)

CMainFrame::newWndProc(...)

{

switch(...)

{

//{{AFX_MSG_MAP(CMainFrame)

// ON_WM_CREATE()

case(WM_CREATE):

OnCreate(...);

break;

//}}AFX_MSG_MAP

// ON_COMMAND(ID_FONT_DROPDOWN, DoNothing)

case(WM_COMMAND):

if(HIWORD(wP)==ID_FONT_DROPDOWN)

{

DoNothing(...);

}

break;

//END_MESSAGE_MAP()

}

}

newWndProc就是窗口过程只要是该类的实例生成的窗口都使用该窗口过程。

所以了解了Windows的消息机制在加上对消息映射的理解就很容易了解MFC开发的基本思路了。

1.4 利用MFC进行开发的通用方法介绍

以下是我在最初学习VC时所常用的开发思路和方法,希望能对初学VC的朋友有所帮助和启发。

1、开发需要读写文件的应用程序并且有简单的输入和输出可以利用单文档视结构。

2、开发注重交互的简单应用程序可以使用对话框为基础的窗口,如果文件读写简单这可利用CFile进行。

3、开发注重交互并且文件读写复杂的的简单应用程序可以利用以CFormView为基础视的单文档视结构。

4、利用对话框得到用户输入的数据,在等级提高后可使用就地输入。

5、在对多文档要求不强烈时尽量避免多文档视结构,可以利用分隔条产生单文档多视结构。

6、在要求在多个文档间传递数据时使用多文档视结构。

7、学会利用子窗口,并在自定义的子窗口包含多个控件达到封装功能的目的。

8、尽量避免使用多文档多视结构。

9、不要使用多重继承并尽量减少一个类中封装过多的功能。

1.5 MFC中常用类,宏,函数介绍

常用类

CRect:用来表示矩形的类,拥有四个成员变量:top left bottom right。分别表是左上角和右下角的坐标。可以通过以下的方法构造:

篇二:用Visual C++实现PDF文件的显示

用Visual C++实现PDF文件的显示

PDF介绍

PDF是“Portable Document Format 可移植文档格式”的缩写,已经成为国际通用的电子文档交换事实标准。PDF文件可以在各种平台下阅读、编辑、发布。该文件格式支持字体、图像、甚至任何附件的嵌入。

Adobe提供了两种软件用于处理PDF文档,分别是Acrobat及Acrobat Reader:前者功能强大,不仅能阅读,还可以创建或编辑PDF文档,但要收费;后者只具备阅读功能,为免费软件。

用ActiveX控件显示PDF文件

Acrobat(Reader)提供了一个ActiveX控件pdf.ocx(7.x版本为AcroPDF.dll),可以在用户程序中实现PDF文件的显示。对于老版本的软件(4.x及以前的版本),只需按照ActiveX控件的标准编程步骤即可:

(1)把控件pdf.ocx加入VC项目,并生成控件类

(2)把控件放置在对话框上,或者调用控件类的成员函数Create创建控件对象

(3)调用控件的属性或方法打开PDF文件

由于这不属于本文要讨论的内容,详情请参考《Visual C++技术内幕》中“使用ActiveX控件”一章,这里不再赘述。

但是对于新版软件(5.x/6.x/7.x),上述方法不再适用:新版控件不是一个完整意义上

的ActiveX控件,它缺少生成控件类所必需的类型库信息,无法把控件加入VC项目。

在这种情况下,需要调用函数CWnd::CreateControl来创建控件对象,然后获取控件的IDispatch接口指针,通过该指针访问控件的属性及方法。

直接用IDispatch指针调用控件的属性及方法是一件极其繁琐的工作,好在新版软件提供了类型库,可以用它生成一个自动化组件驱动类(从COleDispatchDriver派生)。借助该类,可以大大简化对控件属性及方法的调用。

虽然可以用控件显示PDF文件,但它只是一个代理,真正的工作还是由Acrobat(Reader)完成的,因此必须安装这两种软件中的一个。

实现步骤

以下以Acrobat(Reader)5.x/6.x为例,介绍如何用新版控件实现PDF文件的显示。

运行VC,新建一个基于对话框的MFC应用程序ViewPDF,在设置生成选项时,选中“ActiveX Controls”,其余使用缺省值即可。生成后,删除对话框中的所有控件。

接下来创建自动化组件驱动类:打开类向导,点击“Add Class”按钮,在弹出的菜单中选择“From a type library”,用类型库文件pdf.tlb产生所需的组件类,该文件位于Acrobat软件安装目录下的ActiveX子目录。

编辑ViewPDFDlg.h,为类CViewPDFDlg添加两个数据成员: #include "pdf.h" // 组件类的头文件

class CViewPDFDlg : public CDialog

{

protected:

_DPdf m_drvPDF; // PDF组件驱动对象,_DPdf是我们刚生成的组件类

CWnd m_wndPDF; // PDF控件窗口

... ...

在类成员函数CViewPDFDlg::OnInitDialog中插入下列语句: // 为主窗口添加WS_CLIPCHILDREN风格,否则控件显示不正常

ModifyStyle(0, WS_CLIPCHILDREN);

// 获取对话框的客户区矩形

CRect rt;

GetClientRect(&rt);

// 利用CWnd::CreateControl创建PDF控件窗口

// Acrobat (Reader) 5.x/6.x的控件类ID为"PDF.PdfCtrl.5",7.x为"AcroPDF.PDF.1"

m_wndPDF.CreateControl("PDF.PdfCtrl.5", NULL, WS_CHILD | WS_VISIBLE, rt, this, 0); // 获取IDispatch接口指针

LPUNKNOWN lpUnknown = m_wndPDF.GetControl Unknown();

LPDISPATCH lpDispatch;

lpUnknown->QueryInterface(IID_IDispatch, (void**)&lpDispatch);

// 把获得的接口指针传递给组件驱动对象m_drvPDF,通过它调用控件的属性和方法 // 当m_drvPDF销毁时,会自动释放接口指针

m_drvPDF.AttachDispatch(lpDispatch);

// 弹出一个“打开”对话框,选择要显示的PDF文件

CFileDialog dlg(TRUE);

if (dlg.DoModal() == IDOK)

// 利用控件的方法LoadFile读取并显示PDF文件

m_drvPDF.LoadFile(dlg.GetPathName());

else

OnCancel(); // 退出

编译运行程序,选择要显示的PDF文件,效果如图1所示。

图1

对于Acrobat(Reader)7.x,实现步骤基本与上相同,区别在于:

(1) 使用AcroPDF.dll生成自动化组件驱动类,得到的类名为IAcroAXDocShim,头文件为acropdf.h。

(2) 创建控件窗口时,类ID为AcroPDF.PDF.1。

除了上面用到的LoadFile外,控件还提供了许多有用的方法,常见的有:

Print 打印文件

setZoom 设置页面的百分比

setShowToolbar 显示/隐藏工具栏

gotoFirstPage 跳转到第一页

gotoLastPage 跳转到最后一页

gotoNextPage 跳转到下一页

gotoPreviousPage 跳转到上一页

由于用法很简单,这里不再一一叙述。

本文例程在Visual C++ 6、Acrobat(Reader)5.x/6.x/7.x上调试通过

篇三:《Java范例开发大全》

下面是377个Java的例子。如果你是牛人,看看你能做出多少?

如果有人不相信这些例子都是Java做的,可以看看清华大学的《Java范例开发大全》

实例1 开发第一个Java程序

实例2 自动提升

实例3 自动转换

实例4 常用基础类型之强制转换

实例5 算术运算符

实例6 关系运算符

实例7 逻辑运算符

实例8 位运算符

实例9 移位运算符

实例10 转型运算符

实例11 常量与变量

实例12 各种进制的转换

实例13 Java中的进制与移位运算符

实例14 判断输入的年份是否为闰年

实例15 抽奖活动

实例16 小九九乘法表

实例17 如何列出素数

实例18 Java中的递归

实例19 男生女生各多少人

实例20 求水仙花数

实例21 求任意一个正数的阶乘

实例22 求n的n次方

实例23 利用for循环输出几何图形

实例24 杨辉三角

实例25 求1到100之间的和

实例26 存上100元需要多少天

实例27 输出100之间的所有偶数

实例28 如何判断回文数字

实例29 输出100之间的所有奇数

实例30 求最大的随机数

实例31 判断字母分类

实例32 优良及差

实例33 打印任意一年日历

实例34 一年四季的划分

实例35 除0发生的算术异常(ArithmeticException)

实例36 数组下标越界异常(ArrayIndexOutOfBoundsException) 实例37 数组元素类型不匹配异常(ArrayStoreException) 实例38 强制类型转换异常(ClassCastException)

实例39 索引越界异常(IndexOutOfBoundsException) 实例40 空指针异常(NullPointerException)

实例41 数字格式转换异常(NumberFornatException) 实例42 字符串索引越界异常(StringIndexOutBounds) 实例43 操作错误(UnsupportedOperationException)

实例44 找不到指定类时发生的异常(ClassNotFoundException) 实例45 请求的方法不存在(NoSuchMethodException) 实例46 try…catch捕获异常的实例

实例47 try…catch…finally捕获异常的实例

实例48 try…catch嵌套捕获异常的实例

实例49 throws声明异常实例一

实例50 throws声明异常实例二

实例51 throw抛出异常实例一

实例52 throw抛出异常实例二

实例53 自定义异常实例一

实例54 自定义异常实例二

实例55 一维数组的创建与使用

实例56 按相反的顺序输出

实例57 奇偶分组

实例58 找宝

实例59 寻找最小数

实例60 我的位置在哪里

实例61 复制数组

实例62 插入新元素

实例63 数组的合并

实例64 去除重复元素

实例65 数组求和计算

实例66 求最大值、最小值和平均值

实例67 二维数组的创建与使用

实例68 矩阵转置

实例69 奇数阶幻方

实例70 求方阵对角线之和

实例71 矩阵的加法

实例72 矩阵的减法

实例73 快递报价单

实例74 冒泡排序法

实例75 数组递增排序

实例76 部分数组递增排序

实例77 选择排序法

实例78 快速排序法

实例79 创建字符串类

实例80 如何使用charAt()方法计算重复字符

实例81 按字母顺序比较大小

实例82 首尾相连

实例83 字符串间的比较

实例84 字符集的解码方法

实例85 寻找指定字符第一次出现的位置

实例86 寻找指定字符最后出现的位置

实例87 我究竟有多长

实例88 替换指定的字符

实例89 分割字符串

实例90 如何使用substring()方法截取子串

实例91 分解字符串

实例92 字母大小写转换

实例93 去除多余的空白

实例94 原始数组类型的String形式

实例95 Java合法标识符

实例96 显示一周各星期的名称

实例97 构造空心方框

实例98 这一天是星期几

实例99 大小写互换

实例100 输出指定范围的素数

实例101 我出现了几次

实例102 算术表达式求值器

实例103 字符串对齐调整器

实例104 字符串的加密

实例105 使用正则表达式验证电话号码的格式 实例106 创建字符串缓存类

实例107 提取单个字符

实例108 给指定字符赋值

实例109 插入新的字符

实例110 插入新的字符串

实例111 获取字符串的子串

实例112 删除指定的字符

实例113 倒置字符串

实例114 去除重复字符

实例115 检查是否是回文

实例116 显示文件的基本信息

实例117 显示目录的基本信息

实例118 在指定的目录下创建单个文件

实例119 在指定的目录下创建多个临时文件

实例120 删除指定目录下的文件

实例121 移动指定目录下的文件

实例122 文件搜索引挚

实例123 复制指定目录下的文件

实例124 显示文件中的内容

实例125 将数据保存到指定的文件中

实例126 将由键盘中录入的信息保存到文件中 实例127 一个文件变成多个小文件

实例128 多个小文件合成一个文件

实例129 统计指定文件中的字符个数

实例130 对象的序列化与反序列化

实例131 同时显示多个文件

实例132 生成zip压缩文件

实例133 解压缩zip文件

实例134 生成Excel文件

实例135 读取Excel文件中的内容

实例136 生成PDF文件

实例137 读取PDF文件中的内容

实例138 用iText生成Word文件

实例139 利用POI读取Word文件中的内容

实例140 按顺序创建文件

实例141 按顺序读取文件

实例142 追加文件内容

实例143 只显示文件中指定的字符

实例144 读取jar包文件

实例145 文件的加密/解密操作

实例146 复制图片

实例147 随机读写Java类文件

实例148 简单的通讯录类

实例149 简单的长度单位转换类

实例150 卡车和卡车司机之间的关系

实例151 双色球

实例152 使用类作为成员变量

实例153 构造方法

实例154 使用静态成员变量计算内存中实例化的对象数目 实例155 实现加减乘除的方法

实例156 Singleton单例模式

实例157 招聘(简单工厂模式)

实例158 同学聚会(工厂方法模式)

实例159 图书展(抽象工厂模式)

实例160 汽车适配器(Adapter适配器模式) 实例161 垃圾回收的机制

实例162 求自定义几何图形的面积和周长

实例163 使用抽象方法实现的支票夹

实例164 世界小姐参赛资格

实例165 自定义复数类

实例166 轿车与本田的关系

实例167 继承关系的加载顺序

实例168 如何访问同名的方法或变量

实例169 super()方法的使用

实例170 this方法的使用

实例171 一张考试成绩单

实例172 银行自动存取一体机

实例173 饮食文化

实例174 使用构造方法的重载计算课程的GPA值 实例175 成员内部类的使用规范

实例176 猜谜

实例177 局部内部类的使用规范

实例178 奖学金的评分标准

实例179 匿名内部类的使用规范

实例180 电话与移动电话

实例181 静态内部类的使用规范

实例182 苹果的来历

实例183 求n的幂数与倍数

实例184 商品订单

实例185 多功能排序

实例186 求圆周率∏值

实例187 求对数值

实例188 使用取整函数

实例189 随机数

实例190 验证码

实例191 使用Date类获取系统的当前时间

实例192 使用DateFormat类获取系统的当前时间

实例193 使用GregorianCalendar类获取系统的当前时间 实例194 使用SimpleDateFormat类获取系统的当前时间 实例195 显示某年某月某一周的信息

实例196 显示某年某月的信息

实例197 时间的设置与获取

实例198 万年历(农历和阳历的互换)

实例199 时间格式转换符的使用

实例200 数据格式转换符的使用

实例201 记录程序执行的时间

本文已影响