摘要:Office2007是使用Ribbon控件的典型程序,Ribbon改变了Windows桌面软件整体风格(传统的Windows窗体程序为:菜单+工具栏),这让人耳目一新。Ribbon将菜单和工具栏统一起来,使两者完美地结合在一起。表现方面也更加丰富,有Button,CheckBox, Radio,Edit,ComboBox 等等,这让UI设计人员有了更多的选择,进而设计出更加易用的界面。最近也使用Ribbon开发一个二维地图程序:-----Ribbon控件在MFC类库中的继承关系如下图,详细地用法可以参看msdn。
阅读全文
摘要:在编写MFC窗体程序时,我们经常要判断用户输入的一个字符串是否合法有效,以此来增强程序的健壮性。最近,在测试系统的对话框的输入时,发现存在大量这样的问题,甚至有一些特定变态的输入还导致系统异常退出。为了解决这些问题,我编写下面这个头文件,来判断输入的字符串是否为数字,以及是否在有效范围之内。希望以下代码对你有用!
阅读全文
摘要:主要是使用函数”SetConsoleTextAttribute“来实现不同类型的日志,采用不同的颜色来打印日志内容。BOOL SetConsoleTextAttribute( HANDLE hConsoleOutput, // handle to console screen buffer WORD wAttributes // text and background colors);该函数对调用之后日志有效。HANDLEhConsoleOutput -- 输出窗口句柄WORDwAttributes -- 属性设置 可通过逻辑或运算符(|)连接各个属性分量+++++++++++++++++++
阅读全文
摘要:向量n绕axe轴向旋转degrees度[代码](其中vector3df表示向量 DEGTORAD64=PI/180 matrix4为4×4矩阵)具体可以参考irrlicht开源游戏引擎该旋转为右手系。
阅读全文
摘要:如果在编写类时没有显示的写出其构造函数,析构函数,以及重载赋值操作符,编译器会在编译代码时,会为该类加上这些。其形式大致如下:[代码]下面给出一些示例,注释部分说明了函数调用的情况:[代码]“A c = a;”这句代码实际调用的是拷贝构造函数,而非赋值函数。因此,我们可以构造出这样的代码。[代码]将整数3赋值给一个A类型对象a,然而以上代码可以编译通过。 -- 有点不合常理...
阅读全文
摘要:这次"java语言程序设计"的一次作业,比较简单,现在把代码贴在这里。使用的是jdk1.6。-----------------------------------------------------------------------------------------思路:使用FileReader类读取文本文件中的内容到一个StringBuffer对象中,并将其打印到屏幕上。代码文件:Print...
阅读全文
摘要:1. bind1st/bind2ndbind1st: 绑定器binder通过把二元函数对象的第一个实参绑定到一个特殊的值上将其转换成一元函数对象bind2nd:绑定器binder通过把二元函数对象的第二个实参绑定到一个特殊的值上将其转换成一元函数对象例如:[代码]11 // 以下函数调用等价于调用kPrint(1,2)12 (std::bind2nd(std::ptr_fun(kPrint), 2...
阅读全文
摘要:使用C++进行GDI+编程,首先要看系统中是否已经安装好了GDI+,目前大部分XP(SP3)中已安装好了GDI+【在system32中包含Gdiplus.dll文件】。开发环境为:Windows XP(SP3)+ VS2008(1)使用GdiPlus a.包含头文件#include <Gdiplus.h> using namespace Gdiplus; b.链接导入库 #pragma...
阅读全文
摘要:本文采用两种方式,在OpenGL中实现放大缩小功能:方式一. 改变“视点”与模型之间的距离【改变模型视点变换矩阵】对于这种方式存在三个问题需要解决:①缩放过程过渡平滑②当模型放大或缩小到一定程度,减慢其缩放速度,以免视点很快地贴近模型或消失在场景中③防止视点进入模型内部解决方案:使用反正切函数:y=0.5*arctan(0.1*x)+0.25*PI,函数图像如下图:当模型放...
阅读全文
摘要:有如下代码:1 void function()2 {3 vector objects;4 for (int i=0; i 1 void delObject() 2 { 3 ... 4 5 typedef vector::iterator ObjectIter; 6 for (ObjectIter it==objects.begin(); it!=objects.end(); it++) 7 delete *it; 8 9 objects.clear();10 }(2)使用for_each删除Code highlighting prod...
阅读全文
摘要:由于实验室的电脑是将MAC地址和IP地址进行了绑定,所以每一次要用笔记本上网时,都需要修改MAC和IP地址。虽然现在有很多工具可以用来修改MAC和IP地址,基本上都是带UI界面的,不能用命令行的方式来修改,从而也就无法写成批处理脚本,实现自动化了。于是,花了一下午的时间,实现了一个nmc.exe的命令行小工具。通过 nmc /? 可以查看这个工具的详细用法:如果需要该工具的网友,可以点击这儿下载 ...
阅读全文
摘要:旋转作为三维开发的基本功能,在任何3D程序中都需要。用户通过旋转来实现对模型各个面的浏览,形成直观印象。球面相机旋转这种旋转方式用户体验方式要优于x轴y轴混合旋转方式,模型旋转的方向和鼠标移动方向保持一致。下面给出一种“球面相机”实现旋转的方法。原理:移动鼠标时,通过gluLookAt来改变视点的位...
阅读全文
摘要:概述全局坐标系是三维空间物体所在的坐标系,模型的顶点坐标就是基于这个坐标系来表达的。而局部坐标系是一个假想的坐标系,该坐标系与物体的相对位置至始至终是不变的,假想出这个坐标系的目的主要是为了正向理解对三维场景中物体执行的“平移和旋转”操作。使用局部坐标系理解模型变换时,所有的变换操作直接作用与局部坐标系,由于局部坐标系与物体的相对位置不对,因此,当对局部坐标系进行“平移”、“旋转”和“缩放”时,物体在场景中位置和形状也会发生相应的变化。几点注意(1)“全局坐标系”和“局部坐标系”是两种理解模型变换的手段。(2)当存在“缩放”变换时,应采用“全局坐标系”“反向”阅读代码来理解。如果存在缩放变换,
阅读全文
摘要:一些说明:0. 投影变换:描述如何指定视景体(viewing volume)的形状和方向。视口变换:解释如何控制三维模型坐标到屏幕坐标的变换。1. 无论是透视投影还是平行投影(正交投影),只有在视景体中的物体才可见。2. 下图为OpenGL默认视点位置 (eyex,eyey,eyez) = (0.0,0.0,0.0); (upx,upy,upz) = (0.0,1.0,0.0) 指向z轴负半轴。(...
阅读全文
摘要:以VS2008为例,下面是“核心步骤”截图:Step 1:Step 2:Step 3:将“Lesson01.cpp”加到当前工程中,Lesson01.cpp内容如下:[代码] Use Windowed Mode Instead?","NeHe GL",MB_YESNO|MB_ICONEXCLAMATION)==IDYES)162 ...
阅读全文
摘要:以VS2008为例,下面是“核心步骤”截图:Step 1:Step 2:step 3:在“stdafx.h”中添加如下代码:[代码]step 4:在“Win32OpenGL.cpp”中添加如下代码:[代码]程序运行效果:
阅读全文
摘要:执行vbs脚本文件的程序为: system32文件下的 。 下面vbs脚本代码可以完成用"chen@gmail.com"账号发送一封邮件给"kekec@qq.com"。 1 NameSpace ="http://schemas.microsoft.com/cdo/configuration/" 2
阅读全文
摘要:在编写复杂程序的过程中,我们经常需要将一些信息输出到文件或者屏幕上。较控制台应用程序,MFC窗体程序要显得麻烦一些!下面有2种方法来实现为MFC窗体程序添加调试控制台,方便程序员调试程序和了解当前程序的运行状态。重要Windows API:AllocConsole(); //创建Console窗口 FreeConsole(); //销毁Console窗口(1)启动控制台窗口需要包含的头文件#include <io.h>#include <cstdio>#include <FCNTL.H>Code highlighting produced by Actipr
阅读全文
摘要:cout默认是与监视器(屏幕)相连,cout出来的内容会输出到屏幕上,通常是会在命令行窗口之中。但有时,我们希望将cout出来的具体日志、错误信息写到某个文件之中,而屏幕上仅仅显示出当前进行的任务,以及程序运行状态等信息。我们可以使用下面重定向的方式来实现:[代码]运行后的结果:写入到“out.txt”中的内容:
阅读全文
摘要:cin(隶属于istream)是供使用者输入用的标准输入通道,对应于C的stdin。操作系统通常将它和键盘连接,用来接受用户从键盘输入进来的数据。下图描述了cin是如何从键盘获取用户数据的过程:来自键盘的输入首先会被送到”输入缓冲区“(streambuf),接受变量然后再从”输入缓冲区“中获取数据。“输入缓冲区” 通过以下代码...
阅读全文