自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 资源 (38)
  • 收藏
  • 关注

转载 [GPS相关] 让模拟器也支持GPS定位(模拟实现)

iOS上的GPS定位一般需要真机才能看到效果,但在开发的过程中,一般都在模拟器上调试。那怎么办呢?我们可以使用Object-C的策略,给模拟器指定一个经纬度,这样,定位就可以在模拟器上实现了。RealTool为你实现一个简单的demo。// 模拟器 宏定义#ifdef TARGET_IPHONE_SIMULATOR @interface CLLocationManager (Sim

2012-03-31 16:18:19 681

转载 iPhone开发之UIActionSheet的使用

UIActionSheet是iOS开发中实现警告框的重要的类,在很多情况下都要用到,先来一睹其芳容:实现步骤如下:一、为了让控制器类充当操作表的委托,控制器类需要遵从UIActionSheetDelegate协议。[cpp] view plaincopy@interface UIActionSheetDemoViewController : UI

2012-03-31 15:24:17 523

转载 iPhone调用发短信,电话,邮件的方法

http://blog.csdn.net/realtool/article/details/7054784http://www.cocoachina.com/iphonedev/sdk/2009/0611/242.htmlhttp://www.cocoachina.com/bbs/read.php?tid-23149.html+ (void)alert:(NSStr

2012-03-28 16:24:17 4112

转载 UIWebView和UIWebViewDelegate的基本用法

一、UIWebView主要有三种方法实现页面的装载,分别是:1. (void)loadRequest:(NSURLRequest *)request;  (直接装载URL) 2. (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL; (主要用于装载用字符串拼接成的HTML代码)3 .(void)loadD

2012-03-27 17:33:44 4484

转载 iOS开发之UIWebView

UIWebView是iOS sdk中一个最常用的控件。是内置的浏览器控件,我们可以用它来浏览网页、打开文档等等。这篇文章我将使用这个控件,做一个简易的浏览器。如下图:我们创建一个Window-based Application程序命名为:UIWebViewDemoUIWebView的loadRequest可以用来加载一个url地址,它需要一个NSURLRequest参数。我们定义一个方

2012-03-27 17:33:20 756

转载 UIAlertView的实现

1、  在头文件中设置委托@interface CardEdit : UIViewController UIAlertViewDelegate,UITextFieldDelegate> {        UIPickerView *m_pPickerView;         NSArray *m_data;         NSIntegerchoice;

2012-03-26 13:02:29 1986

转载 ABAddressBook 相关

ABAddressBookRef addressBook=ABAddressBookCreate();创建一个通讯录副本,类似alloc,需要release。类似retain和release的方法,CFRetain和CFReleaseCFArrayRef people=ABAddressBookCopyArrayOfAllPeople(addressBook);从通讯录副本ad

2012-03-23 10:26:23 1983

原创 phpmyadmin安装出错,缺少 mysqli 扩展。请检查 PHP 配

1.检查php.ini ;extension=php_mysqli.dll是不是已经启用 也就是去掉前面的;2.检查php.ini extension_dir 地址是不是指向了php目录的ext目录下这步是关键 我就是处在这一步的问题上 我把 extension_dir = "e:\www\php54\ext" 设置成了自己的目录 就可以了3.检查lib_mysql.dll有没

2012-03-22 01:27:29 1255

转载 NSDate和NSString之间的转换

输入的日期字符串形如:@"1992-05-21 13:08:08"- (NSDate *)dateFromString:(NSString *)dateString{NSDateFormatter *dateFormatter = [[NSDateFormatteralloc] init];[dateFormatter setDateFormat:@"yyyy-MM-dd HH

2012-03-20 17:56:41 3940

转载 Windows下安装最新的Apache+PHP+MySQL指南 2012版

php环境的配置,对于新手来说,绝对是一件烦事。总会遇到这样那样的问题,走很多弯路。所以今天特意写了这个配置文档,相信按照以下步骤你一定会成功的。错误的地方也希望各位指正。 第一步:下载安装的文件     1. MySQL:下载地址mysql-5.1.49-win32.msi;     2. Apache: 下载地址httpd-2.2.16-win32-x86-openssl-

2012-03-17 15:16:47 1179

转载 安装VMware 7.0 You have started VMware Workstation with an out-of-date copy of the application.

安装VMware 7.0后启动不了虚拟系统。打开电源时出现错误提示      You have started VMware Workstation with an out-of-date copy of the application. VMware Workstation cannot power on virtual machines using this copy (ver

2012-03-17 01:18:52 3653

转载 如何在iOS中使用Block

Block可以帮助我们组织独立的代码段,并提高复用性和可读性。iOS4在UIKit中引入了该特征。超过100个的Apple API都使用了Block,所以这是一个我们必须开始熟悉的知识。Block是什么样的? 你可以使用^操作符来声明一个Block变量,它表示一个Block的开始。int num1 = 7;  int(^aBlock)(int) = ^)int num2) {

2012-03-16 15:36:17 347

转载 UIView animateWithDuration 使用详解

在ios4.0及以后鼓励使用animateWithDuration方法来实现动画效果。当然,以往的begin/commit的方法依然使用,下面详细解释一下animateWithDuration的使用方法。函数原型:+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))anima

2012-03-16 15:26:51 1292

转载 如何在UIAlertView中显示进度条

今天这个问题是,在一个iPhone程序中,我要在后台做大量的数据处理,希望在界面上显示一个进度条(Progress Bar)使得用户了解处理进度。这个进度条应该是在一个模态的窗口中,使界今天这个问题是,在一个iPhone程序中,我要在后台做大量的数据处理,希望在界面上显示一个进度条(Progress Bar)使得用户了解处理进度。这个进度条应该是在一个模态的窗口中,使界面上其他控件无法

2012-03-16 09:42:06 333

转载 ASIHTTPRequest 详解, http 请求终结者

目录目录发起一个同步请求创建一个异步请求队列请求请求队列上下文ASINetworkQueues, 它的delegate提供更为丰富的功能取消异步请求安全的内存回收建议向服务器端上传数据下载文件获取响应信息获取请求进度cookie的支持大文件断点续传ASIDownloadCache 设置下载缓存多种的缓存并存缓存策略缓存存储方式缓存其它特性实现自定义的缓存使用代理请求ASIHTTPR

2012-03-15 14:28:44 417

转载 如何使用JSON Framework库解析与生成json数据

JSON Framework设置工作为了在自己的工程项目中使用json framework框架库,必须将其导入到工程项目组中。即把JSON Framework库的Classes文件夹下所有的文件导入添加进项目中,然后在具体使用json framework的代码实现文件中添加#import "SBJson.h"导入此头文件。使用方式——解析JSON字符串:JSONValue1. 首先取得

2012-03-15 13:24:48 1181

转载 NSString,NSArray,NSDictionary常用方法(最全)

//一、NSString //1、创建常量字符串。NSString *astring = @"This is a String!";//2、创建空字符串,给予赋值。NSString *astring = [[NSString alloc] init];astring = @"This is a String!";[astring release];N

2012-03-14 11:42:26 3660

转载 在xcode 4.2.1中利用 sharedApplication 来访问 主控的 delegate的方法

在子窗口的控制器中,利用如下代码:[cpp] view plaincopyAppDelegate * delegate = [[UIApplication sharedApplication]delegate];  [delegate changView:@"CustomerGridView"];  来调用主控的委托中的方法。1.  AppDelegat

2012-03-13 14:42:42 577

转载 网易公开课 IPHONE开发

http://v.163.com/special/opencourse/iphonekaifa.html

2012-03-13 11:14:53 406

转载 写给想去创业公司的外企人

“带领10人团队超额完成全年销量的20%” “领导a品牌高端产品上市营销,三个月内占据1.5%的市场份额” “主导搭建b产品架构,领导团队完成整个项目开发,比预定时间少20%”  可以从容在简历上写下这些话的外企精英,大都有名牌大学的背景,积极上进,责任心一流,愿意承受工作压力。其中不小一部分,怀着一颗创业心。  在一家传统行业500强工作3年之后,我选择离开。原因很简单——我喜欢

2012-03-12 23:54:30 719

转载 @property (nonatomic,retain)中的nonatom和retain的意思

原来简单解释过属性定义(Property),并且提起了简单的retain,copy,assign的区别。那究竟是有什么区别呢?assign就不用说了,因为基本上是为简单数据类型准备的,而不是NS对象们。Retain vs. Copy!!copy : 建立一个索引计数为1的对象,然后释放旧对象retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1那上面

2012-03-12 17:25:28 971

转载 XCode快捷键

iPhone开发技巧之环境篇(2)--- XCode中的快捷键Xcode 也有许多快捷键,编程的同时使用它们可以提高你的效率,一起试试吧。其中 Opt ⇔ Alt 键。Opt+Cmd+↑在 .h/.m 文件间切换 : 你是否经常在 .h/.m 文件直接频繁切换呢?一般是点击左边的「组和文件」来选择,但是使用快捷键将更加方便。Opt+高亮符号+双击检索

2012-03-12 17:02:21 820

转载 iOS 中打开或关闭软键盘时调整 UIScrollView 的大小

在一个View中,UITextField较多且打开软键盘时,在屏幕底部的TextField可能会被软键盘挡住。为解决这个问题,需要将这个View中的所有控件放包在一个UIScrollView中。1.创建ScrollView对象可以用下面的方法方便的创建ScrollView:用InterfaceBuilder打开XIB文件选中所有控件选择菜单:Layout → E

2012-03-12 14:51:14 802

转载 你会忘怀所有,但眼泪不会

夜色阑珊,过客急遽,你来我往,所有皆过眼烟云,终是要散,终是要醒。了然而生僻的名字一次次地走近,而又一次次地走远。擦肩而过的回眸,终是无奈篡改。  女士是水,美男是沙,和在共同,筑成乾坤,无水之沙迎风飘,无沙之水空自流,无心候,从容是一种失控的状态,迷惑是一个貌似天仙的妖魔。  一小我如故还会孤傲,就像一片枯叶,经风暗暗中吹起,改动,暗暗的飞落大地,所有是那么自然,调和

2012-03-11 16:20:36 438

转载 C#编写的QQ中转站文件续期工具 - 基于mshtml

转载:http://blog.csdn.net/milkyjing/article/details/6586598主要源代码如下:[csharp] view plaincopyusing System;  using System.Collections.Generic;  using System.ComponentModel;  using Syst

2012-03-11 01:19:27 818

转载 如何将整个文件夹拷入android模拟器生成的SD卡文件中?

接用DDMS把整个文件包拖到SD卡下

2012-03-10 22:13:23 718

转载 向android模拟器SDcard中拷贝文件

SD CARD加载成功后通过什么样的方式来管理呢?比如我要向SD CARD中添加一个文件,这里可以通过多种方式来实现:1、使用命令:    1,把QIYIVideo_SUMSUNG_Galaxy+Tab_20110511.apk 考到 D:/android/android/platform-tools下    2,在控制台加载apk到模拟器    C:/Do       Set

2012-03-10 22:06:52 1297

转载 NSString常用方法

最近写代码用到比较多的字符串操作的,所以找到一个objective-c中字符串操作的汇总,和大家分享! 1//创建字符串对象数组 NSArray *array = [str componentsSeparatedByString:@"@"];//就是以@为标示 输出看看啦 int count=[array count]; int i; for(i=0;i4) { print

2012-03-07 16:30:10 316

转载 [iphone SDK] nonatomic,readonly,retain,readwrite....的理解

1.readonly表示这个属性是只读的,就是只生成getter方法,不会生成setter方法.2.readwrite,设置可供访问级别3.retain,是说明该属性在赋值的时候,先release之前的值,然后再赋新值给属性,引用再加1。4.nonatomic,非原子性访问,不加同步,多线程并发访问会提高性能。注意,如果不加此属性,则默认是两个访问方法都为原子型事务访问。 @p

2012-03-07 16:02:18 377

转载 CoreDataErrorThe model used to open the store is incompatible with the one used to create the store

You created some entities with some attributes and wrote some codeLaunched the app, probably added some contentQuit the app and added/changed some more entities with attributesYou probably launc

2012-03-07 15:43:40 1049

转载 Attribute Unavailable: Defines Presentation Context is not available prior to

在xcode4.2的MainWindow.xib中,使用Tab Bar Controller或者Nav Controller时,编译时候会有如下警告:Attribute Unavailable: Defines Presentation Context is not available prior to Xcode 4.2解决办法:   Just uncheck the "De

2012-03-05 10:46:49 1111

原创 Tab Bar Controller怎么添加标签 没有加号怎么回事

iphone3开发基础中第七章标签栏与选取器。我把一个Tab Bar Controller拖到mainwindow.xib里,有item1和item2请问怎么添加item3,item4。。找不到书上那个+的地址。。 解决方法:Library 里面 拖一个Tab Bar Item进去

2012-03-05 10:27:36 1422

转载 xcode 4.2 不再支持 Window-Based Application 的解决办法(转载)

xcode 4.2 不再支持 Window-Based Application 的解决办法:     1.创建空项目 Empty Application。(在Xcode4.2下创建的这个空项目不再有MainWindow.xib文件了。)     2.Ctrl+N,创建User Interface下面的Window(选择“iOS->User Interface->Window),命名成Mai

2012-03-05 09:41:33 582

转载 XCode4.2设置Window-based Application 分享

XCode升级到了4.2版本,然后在创建项目时,发现以前的Window Based Application没有了,要创建新的项目往往选用的模板是"Empty Project"。但是创建完之后,项目中不再有MainWindow.xib文件了,不过我们可以自己添加这个文件,从而构造出Window-based Application。1.首先,创建一个new project,选择 Empty A

2012-03-02 14:30:38 583

转载 5.1.4 设置按钮的自动调整属性

5.1.4 设置按钮的自动调整属性现在,设置6个按钮的自动调整属性。继续前进,看看能否正确设置这些属性。如果不能进行正确设置,可以看一下图5-8,其中显示了在旋转电话时使每个按钮都出现在屏幕上所需的自动调整属性。 (点击查看大图)图5-8 6个按钮的自动调整属性按照图5-8设置属性之后,保存nib文件并返回到Xcode,然后构建和运行应用程序。现在,

2012-03-02 13:47:06 901

转载 IPhone学习笔记二-----处理基本交互

前面学习了一个简单Hello World!如何去创建一个简单的项目和熟悉Interface Builder。这章添加一些简单控件,和一些相关联事件。Cocoa Touch 采用MVC(Model-View-Control)就是模型-视图-控制器。模型-保存应用程序数据的类。 视图-窗口,控件和其他用户可以看到并能与之交互的元素。 控制器-将模型和视图绑定在一起,确定用户输入的应用程序逻

2012-03-01 16:52:24 361

转载 错误:'release' is unavailable: not available in automatic reference counting mode..(Xcode4.2.1+iOS5.0)

Xcode4.2.1+iOS5.0下面编译出现错误:'release' is unavailable: not available in automatic reference counting mode..解决办法:You need to turn off Automatic Reference Counting. You do this by clicking on you

2012-03-01 16:38:01 773

转载 学习Objective-C: 入门教材

学习Objective-C: 入门教材Objective-C是一种简单的计算机语言,它可以用来设计复杂的面向对象程序。 Objective-C扩展了标准ANSI C语言,增加了一些定义类、方法以及其它结构的语法,提升了类的动态扩展。重点: 本文档没有教授任何有关于C语言的知识。如果你还不熟悉C语言,阅读本文之前应该学习一下C语言的基础知识。阅读本文前,你也要了解

2012-03-01 12:23:03 647

转载 结构体定义 typedef struct 用法详解和用法小结

typedef是类型定义的意思。typedef struct 是为了使用这个结构体方便。具体区别在于:若struct node {}这样来定义结构体的话。在申请node 的变量时,需要这样写,struct node n;若用typedef,可以这样写,typedef struct node{}NODE; 。在申请变量时就可以这样写,NODEn;区别就在于使用时,是否可以省去stru

2012-03-01 11:08:48 446

NitroBake2动力学转换关键帧C4D插件V2.07版下载

NitroBake2动力学转换关键帧C4D插件V2.07版下载

2022-10-27

程序员面试宝典 PDF电子书 高清版

程序员面试宝典 PDF电子书 高清版

2012-01-31

凯立德最新2012电子眼文件(高清版) 红绿灯 测速 预警

凯立德最新2012电子眼文件(高清版) 红绿灯 测速 预警

2012-01-28

极速FLV合并器 亲测好用的FLV合并工具软件

极速FLV 合并器 亲测好用 FLV合并工具 软件

2012-01-03

300多条MTK工作笔记为你的工作节省一半时间.pdf

300多条MTK工作笔记为你的工作节省一半时间.pdf

2011-11-29

RAMDISK 4G, 详细教程版。不会的请来看

RAMDISK 4G 内存 详细教程版 RAMDISK 4G 内存 详细教程版

2011-11-28

最好的自动整理内存的小软件 很实用

最好的自动整理内存的小软件 很实用最好的自动整理内存的小软件 很实用

2011-08-11

MTK_MMI函数手册

MTK_MMI函数手册 MTK MMI 函数 宝典 说明书 API

2010-06-03

QQ号码分析工具2.1.1 整理qq号的工具

QQ号码分析工具2.1.1 整理qq号的工具

2009-05-30

深入BREW开发.rar 深入BREW开发.doc 深入BREW开发.pdf

深入BREW开发.rar 深入BREW开发.doc 深入BREW开发.pdf

2009-05-16

VMware-workstation-6.5汉化补丁VMware6.5汉化补丁 VMware6.5中文 VMware6.5简体中文

VMware-workstation-6.5汉化补丁VMware6.5汉化补丁 VMware6.5中文 VMware6.5简体中文

2009-04-04

金山词霸2009牛津版激活程序(支持sp2更新-内附属使用说明)

金山词霸2009牛津版激活程序(支持sp2更新-内附属使用说明)

2009-04-03

百度笔试题 百度 笔试题

百度笔试题 百度 笔试题 百度 笔试题

2008-10-27

计算机网络(第4版)中文版PDF完美版part1(All 4 Parts)

清华大学出版社 / 2004-8-1 / (美)特南鲍姆(Tanenbaum,A.S.)著,潘爱民 译 / 60 元 ISBN:7302089773

2008-09-13

计算机网络(第4版)中文版PDF完美版part2(All 4 Parts)

清华大学出版社 / 2004-8-1 / (美)特南鲍姆(Tanenbaum,A.S.)著,潘爱民 译 / 60 元 ISBN:7302089773

2008-09-13

计算机网络(第4版)中文版PDF完美版part3(All 4 Parts)

清华大学出版社 / 2004-8-1 / (美)特南鲍姆(Tanenbaum,A.S.)著,潘爱民 译 / 60 元 ISBN:7302089773

2008-09-13

计算机网络(第4版)中文版PDF完美版part4(All 4 Parts)

清华大学出版社 / 2004-8-1 / (美)特南鲍姆(Tanenbaum,A.S.)著,潘爱民 译 / 60 元 ISBN:7302089773

2008-09-13

PDG转PDF万能工具

PDG转PDF万能工具 PDG转PDF万能工具 PDG转PDF万能工具

2008-09-13

C++之父Bjarne Stroustrup 的C++ Style and Technique FAQ

C++之父Bjarne Stroustrup 的C++ Style and Technique FAQ

2008-07-06

西北工业大学C++全套课件

西北工业大学 C++ 全套课件西北工业大学c++全套课件,绝对好的课件

2008-04-21

BCGControlBar.专业版.v9.4.Full.Source 完整版Part1

BCGControlBar.专业版.v9.4.Full.Source 完整版Part1

2008-03-29

BCGControlBar.专业版.v9.4.Full.Source 完整版Part2

BCGControlBar.专业版.v9.4.Full.Source 完整版Part2

2008-03-29

Mycolor 我的取色器2007 很强大的取色软件

Mycolor 我的取色器2007 很强大的取色软件

2008-03-29

200个XP系统图标 很好很强大

200个XP系统图标 很好很强大

2008-03-29

很好的FileDialog控件 类似IE的选项对话框以及超链接类源码

很好的FileDialog控件 类似IE的选项对话框以及超链接类源码

2008-03-29

VC6.0透明背景的对话框示例代码

VC6.0 透明背景 对话框 示例代码

2008-03-29

last_order fantastic_dream Slicer系列精美图标下载

last_order fantastic_dream Slicer 系列 精美图标

2008-03-29

Adobe奥多比注册机全集 35合1 史上最强大

Adobe 奥多比 注册机全集 35合1 史上最强大

2008-03-14

北京大学信息学院数理逻辑经典教程

北京大学信息学院数理逻辑经典教程 共333页教程 计算机逻辑的经典教材

2008-01-02

利用多线程在程序繁忙时显示进度条源代码

利用多线程在程序繁忙时显示进度条源代码 很好的了解学习多线程的源代码

2008-01-01

MFC多线程编程源代码和说明文档(二)

MFC多线程编程源代码和说明文档(二)

2008-01-01

MFC多线程编程源代码和说明文档

MFC多线程编程源代码和说明文档

2008-01-01

ubuntu实用教程

ubuntu实用教程<br>

2007-12-30

在单文档程序中动态切换多个窗体的源码程序

摘要:本文通过一个程序实例描述了在VC++6.0下如何在单文档程序中通过菜单动态控制多 个窗体的切换。    一、 引言    我们在编制程序中根据需求的不同会在程序风格上选择多文档、单文档或是对话框模式 ,对于单文档模式可能是我们使用比较多的,但有时我们想采用单文档的形式显示多个不同 的窗体,如作为数据库前台应用程序就会遇到此类问题,数据库由大量的表单组成,而同常 一个窗体内只用来显示一个表单,所以要显示其他的表单时就要用到切换窗体的技术了,下 面就通过一个程序说明该技术的实现方法。    二、 实现技术    新建一个基于CFormView的单文档应用程序,再添加一个窗体和与之对应的基于 CFormView的新视类,然后通过在主框架类里添加控制代码和菜单控制实现这两个窗体的动态 切换,下面就是具体的实现过程:    (一) 用"MFC AppWizard(exe)"建立一个新项目"SwitchForm",并在第二步的创建类型上选 择为"Single documnet"单文档模式,第三、四、五、六步均取确省状态,最后一步选择 "CFormView"作为视类的基类。点按"完成"按钮,生成了初始工程"SwitchForm"。    (二) 点选菜单"Insert"、"Resource…",在弹出的"Insert Resource"对话框中"Dialog"树 里的"IDD_FORMVIEW",点击"New"按钮,生成了一个新的窗体,将其ID号改为"IDD_NEXTFORM"。 在原有的窗体上加一个静态框"这是第一个窗体";在新建的窗体上也添加一个静态框"这是第二 个窗体"。    (三) 在菜单资源的"IDR_MAINFRAME"上添加一级菜单"窗体切换",及其二级菜单"第一个窗 体"、"第二个窗体",其标识号分别为"ID_FIRSTFORM"和"ID_SECONDFORM"。修该"第一个窗体" 的属性为"Checked",表明程序初始时显示的是第一个窗体。    (四) 在"ClassView"属性页里的"SwitchForm classes"上右键,在弹出菜单上选择 "New Class…",弹出"New Class"对话框,选择"Dialog ID:"为我们刚添加的新窗体 "IDD_NEXTFORM",选择"Base class:"为"CFormView",类名取为"CNextFormView",这样就把第 二个窗体对应的视图类添加到了工程。 (五) 在框架类里添加函数SwitchToForm(): void CMainFrame::SwitchToForm(int nForm) { file://获取原来的活动窗体的视图句柄 CView* pOldActiveView = GetActiveView(); file://获取由"nForm"标识的窗体所对应的视图句柄 CView* pNewActiveView = (CView*) GetDlgItem(nForm); file://若视图句柄为空,则创建一新的。 if (pNewActiveView == NULL) { if (nForm == IDD_SW99vCHFORM_FORM) pNewActiveView = (CView*)new CSwitchFormView; if (nForm == IDD_NEXTFORM) pNewActiveView = (CView*)new CNextFormView; CCreateContext context; context.m_pCurrentDoc = pOldActiveView->GetDocument(); pNewActiveView->Create(NULL,NULL,0L, CFrameWnd::rectDefault, this,nForm,&context); pNewActiveView->OnInitialUpdate(); } file://选择pNewActiveView为活动窗体 SetActiveView(pNewActiveView); file://显示活动窗体,隐藏非活动窗体 pNewActiveView->ShowWindow(SW_SHOW); pOldActiveView->ShowWindow(SW_HIDE); int ID; if(pOldActiveView->GetRuntimeClass() == RUNTIME_CLASS(CSwitchFormView)) ID=IDD_SW99vCHFORM_FORM; if(pOldActiveView->GetRuntimeClass() == RUNTIME_CLASS(CNextFormView)) ID=IDD_NEXTFORM; file://设置窗体的ID号 pOldActiveView->SetDlgCtrlID(ID); pNewActiveView->SetDlgCtrlID(AFX_IDW_PANE_FIRST); RecalcLayout(); }    (六)添加两个菜单相对应的命令响应函数和更新函数如下: void CMainFrame::OnFirstform() { file://通过IsKindOf函数确定当前活动窗口是否是第一个窗口,如是,则无须切换, file://否则将通过SwitchToForm函数将当前活动窗口切换到"IDD_SW99vCHFORM_FORM" file://标识的第二个窗体。 if (GetActiveView()->IsKindOf(RUNTIME_CLASS(CSwitchFormView))) return; SwitchToForm(IDD_SW99vCHFORM_FORM); } void CMainFrame::OnUpdateFirstform(CCmdUI* pCmdUI) { file://通过IsKindOf函数判断当前活动窗口是否是第一个窗体,如是则将其选中。 pCmdUI->SetCheck(GetActiveView()->IsKindOf(RUNTIME_CLASS(CSwitchFormView))); } void CMainFrame::OnSecondform() { if (GetActiveView()->IsKindOf(RUNTIME_CLASS(CNextFormView))) return; SwitchToForm(IDD_NEXTFORM); } void CMainFrame::OnUpdateSecondform(CCmdUI* pCmdUI) { pCmdUI->SetCheck(GetActiveView()->IsKindOf(RUNTIME_CLASS(CNextFormView))); }    然后再在该文件开始处添加对两个视图类的引用: #include "SwitchFormDoc.h" #include "SwitchFormView.h" #include "NextFormView.h"    在此须注意:应在两个视类的引用之前添加对文档类的引用,否则会引起编译错误。另外,由于视 类的构造函数在声明时都确省的声明为保护型的,在框架类中无法引用,所以还要将两个视类的类 声明改动如下: class CNextFormView : public CFormView { public: file://将protected 改为public. CNextFormView(); …… }; class CSwitchFormView : public CFormView { public: file://将protected 改为public. CSwitchFormView(); …… };    三、 编译运行    编译运行程序,开始时的窗体上有"这是第一个窗体的字样",菜单也只有"第一个窗体"是被选中的, 当前的活动窗体是第一个窗体;点击菜单"第二个窗体",视图中的窗体上的字样变成了"这是第二 个 窗体",同时选中的菜单也由"第一个窗体"变成了"第二个窗体",实现了通过菜单将窗体进行动态切换。    总结:此程序中关键的是SwitchToView函数,在此函数中,程序搜索所有当前文档的显示窗口来查找与CruntimeClass变量匹配的视图类。如果找到,该窗口被激活。通过与之类似的方法,还可以实现在多文档模式下的单档(文档)多视(视图),通过不同的视图以不同的方式显示来自同一份文档的数据,以更好的满足程序的需要。

2007-12-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除