摘要:在MFC编程中,我们可以通过设置输入框的属性,让用户只能输入数字。在QT中的输入框(QLineEdit)可以通过绑定QIntValidator/QDoubleValidator/QRegExpValidator对象来控制用户的输入。***QIntValidator -- 只让用户输入整数QDoubleValidator -- 只让用户输入浮点数QRegExpValidator -- 只让用户按照正则表达式定义好的样式进行输入**--- 以下为只让用户输入[-50,50]整数的示例 ---QLineEdit* aEdit = new QLineEdit;QIntValidator...
阅读全文
摘要:malloc和free是C语言用来分配和回收堆内存的函数,而new和delete是C++语言的引进的关键字。 -- malloc函数 void *malloc( size_t size ); 该函数需要传入一个参数,该参数指明要分配多少个字节的内存;返回一个void类型的指针。 示例用法:int*
阅读全文
摘要:BMP有单色,16色,256色,24位,32位几种类型位图。BMP在磁盘上是按以下顺序存储的: ---------------header部分开始----------------[位图文件头TBitmapFileHeader] // 14个字节[位图信息头TBitmapInfo] /...
阅读全文
摘要:memcpy与memmove的目的都是将N个字节的源内存地址的内容拷贝到目标内存地址中。但当源内存和目标内存存在重叠时,memcpy会出现错误,而memmove能正确地实施拷贝,但这也增加了一点点开销。memmove的处理措施:(1)当源内存的首地址等于目标内存的首地址时,不进行任何拷贝(2)当源内存的首地址大于目标内存的首地址时,实行正向拷贝(3)当源内存的首地址小于目标内存的首地址时,实行反向拷贝-- memcpy实现void* memcpy(void* dest, const void* src, size_t n) { char* d = (char*) dest; const cha
阅读全文
摘要:信号和槽是一种高级接口,应用于对象之间的通信,它是 QT 的核心特性。要正确的处理信号和槽,必须借助一个称为 moc(Meta Object Compiler)的 QT 工具,该工具是一个 C++ 预处理程序,它为高层次的事件处理自动生成所需要的附加代码。信号和槽能携带任意数量和任意类型的参数。我们可以将很多信号与单个的槽进行连接,也可以将单个的信号与很多的槽进行连接,(当这个信号被发射时,这些槽将会一个接一个地 执行,但是它们执行的顺序将会是随机的、不确定的,我们不能人为地指定哪个先执行、哪个后执行。)甚至于将一个信号与另外一个信号相连接,这时无论第一个信号什么时候发射系统都将立刻发射第二.
阅读全文
摘要:当前的WebGL版本是1.0,其实际上是个OpenGL ES 2.0的Javascript绑定,也就是可以用Javascript来调用OpenGL ES 2.0的函数,在网页中实现3D渲染。WebGL是桌面、移动、嵌入式平台通吃,只要支持OpenGL ES 2.0的平台就可以用WebGL。使用了We
阅读全文
摘要:这个小软件主要是为了播放演示视频用。软件启动后进去全屏,上面是一排Button(Button上贴有灰色图片,当鼠标移动到Button上时,图片变为彩色,下面显示图片区域也会显示Button对应的大图;点击Button,会打开一个视频)。--- 显示全屏 ---void CHomeSpringDlg::FullScreen(){ int nFullWidth = GetSystemMetrics(SM_CXSCREEN); int nFullHeight = GetSystemMetrics(SM_CYSCREEN); SetWindowPos(&wndTop, 0, 0, nFullW
阅读全文
摘要:(1) 首先,需要下载google Earth插件,并正确安装。下载地址:http://www.google.com/earth/explore/products/plugin.html-----(2) 编写如下HTML代码(其中含加载GoogleEarth的JS代码)更多地开发请参考:http://code.google.com/apis/earth/documentation/<html><head> <title>Sample</title> <script src="http://www.google.com/jsapi?
阅读全文
摘要:具体的方法是将投影方式切换为平行投影,然后进行2D绘制,最后将其映射到二维屏幕之上。注:2D透明场景信息面板即为下图3D绘图区下方紫色透明区域核心代码如下:void GLArea::displayInfo(){ // Enter in 2D screen Mode again glMatrixMode(GL_PROJECTION); glPushMatrix(); glLoadIdentity(); glOrtho(-1,1,-1,1,-1,1); glMatrixMode(GL_MODELVIEW); glPushMatrix(); glLoadIdentity(); glPushAttri
阅读全文
摘要:string -> QString1 std::string strStd = "可可西";2 QString strQ = QString::fromLocal8Bit(strStd.c_str());QString -> string1 QString strQ("可可西");2 std::string strStd= strQ.toStdString();3 QTextCodec *code = QTextCodec::codecForName("gb18030");4 // 如果code为0,表示在运行的机器上没有
阅读全文
摘要:类:CTreeCtrl(MFC)函数:BOOL SetItemData( HTREEITEM hItem, DWORD dwData ); DWORD GetItemData( HTREEITEM hItem ) const;例如:我们将不同三维模型对象的指针挂在某个HTREEITEM之下,实现HTREEITEM与对象的关联。
阅读全文
摘要:glTexEnvf函数的声明如下:voidglTexEnvf(GLenumtarget,GLenumpname,GLfloatparam);对于贴了纹理的模型,可以使用glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE,XX)来指定纹理贴图和材质混合的方式,从而产生特定的绘制效果。(XX为混合方式参数,OpenGL默认为GL_REPLACE,即只使用纹理)加载一圆柱体模型(带纹理贴图,材质为全红):----------------------------------------------------------------------(1)XX为GL_
阅读全文
摘要:在使用osg加载obj模型文件时,也需要读取相关联的mtl材质文件,bmp贴图就绑定材质文件的map_ka和map_kd通道之上。具体的mtl文件内容如下:-------------------------------------------------------------------newmtl 03___Default Ns 9.999999 Ni 1.500000 d 1.000000 Tr 1.000000 Tf 1.000000 1.000000 1.000000 illum 2 Ka 0.000000 0.000000 0.000000 Kd 0.117647 0.078431
阅读全文
摘要:#include "gdal_include/gdal.h"#include "gdal_include/ogr_api.h"#include "gdal_include/ogrsf_frmts.h"#pragma comment(lib, "lib/gdal_i.lib")-----------------------------------------GDAL读shp文件(1)注册所有的文件格式驱动1 GDALAllRegister();2 OGRRegisterAll();(2)得到shp文件的处理器1 OG
阅读全文
摘要:现在的颜色基本上都是24位色,由RGB三个分量组成,每一个分量占8个bit,通过RGB混合得到最终的颜色。所谓32位色是在RGB的基础上,引进了一个Alpha通道,用于描述颜色的透明。Alpha值越小,透明度越高。8位色即256色,共可以表示256种颜色。目前存在两种定义。详见:http://en.wikipedia.org/wiki/8_bit_color一种是直接定义出256种颜色,通过索引访问这256种颜色;另一种是同RGB分量来进行的,格式为:R R R G G G B B。windows是使用了第一种方案来描述8位色的,我们可以使用下列数组来实现windows上的dxf格式从8位色到
阅读全文
摘要:以下以VS2008开发环境为例:----------------------------------------------------------------------step 1: 将com接口转成.net接口在.net语言中使用MapWinGIS.ocx之前,需要将com接口转换成.net接口,程序通过.net接口去访问com中具体的实现函数。方法(1)在.net工程中添加MapWinGIS.ocx时,会自动产生一个名为:Interop.MapWinGIS.dll(或Interop.MapWinGIS.4.7.dll)的文件。这个dll是vs2008为添加的ocx生成的.net接口组件
阅读全文
摘要:以下代码必须有“Common Language Runtime Support(/clr)” 和“MFC”支持1. 字符窜之间的转换 1 // 托管类型到非托管类型 2 inline CString ManageToUnManageStr(System::String^ cmStr) 3 { 4 using namespace System::Runtime::InteropServices; 5 CString cStr = (char*)(Marshal::StringToHGlobalAnsi(cmStr)).ToPointer(); 6 return cStr; 7 } 8 9 //
阅读全文
摘要:NAN(wiki en 中文)是指not a number。 INF(wiki en 中文)Infinity(无穷)。 浮点数变成NAN: ① 有一个及以上参数为NaN时 如:1.0f/NaN、1.0f*NaN、NaN+1.0f、NaN-1.0f、Nan^1.0f等 ② 下列运算的情况 除法:0/0
阅读全文
摘要:fscanf为读取文本文件的一个c API,其特点是可格式化读取文件内容。1 FILE* pf = fopen("c:\\hello.txt", "r");2 if (NULL==pf)3 return;4 5 char cstr[256];6 fscanf(pf, "%s", cstr);7 fclose(pf);fscanf使用空格,Tab,回车来分割不同单词,使用起来比较方便。下面对fscanf进行了简单的封装,使其能搜索目标字符,读取字符串,整型和双精度浮点数。 1 #pragma once 2 #pragma warning
阅读全文
摘要:对于MFC的单文档应用程序,在其他的类中我们经常要获取View类的指针,以此来访问View下的public成员。一般的方法:1 CMainFrame* pMainFrm = (CMainFrame*)AfxGetMainWnd();2 CMapGISView* pMapView = (CMapGISView*)pMainFrm->GetActiveView();有时用这种方法会存在问题,程序会断言失败。我们来看看GetActiveView()的实现代码:1 CView* CFrameWnd::GetActiveView() const2 {3 ASSERT(m_pViewActive =
阅读全文