2011年1月31日
摘要:
步骤:1、在工具栏上定义菜单比如ID_DATE,ID_TIME2、在CMainFrm中修改(1)LRESULT CMainFrame::OnToolbarReset(WPARAM wp,LPARAM){ //----Example----// UINT uiToolBarId = (UINT) wp; switch (uiToolBarId) { case IDR_MAINFRAME: { CBCGPToolbarDateTimeCtrl dateButton (ID_DATE, CImageHash::GetImageOfCommand (ID_DATE, FALSE)); m_wndT
阅读全文
posted @ 2011-01-31 15:22
carekee
阅读(599)
推荐(0)
摘要:
关于MFC下的文档和视图以及框架之间的访问, 这些问题已经是老生常谈了,但我觉得还是都没有详细的说明,特 别是对于英语较差的人,我查看了一些blog,总结了一下!希望对和我一样的人有点帮助!一: 1: 因为对于SDI程序,主框架窗口就是文档框窗(如果这个也不知道,就要查看一下MFC下的单文档的构成原理了). 下面所说的是关于单文档的. 例子: 在CMainFrame框架中如何得到视图类的指针. 可以 先得到框架指针,然后调用 GetActiveView 函数指向当前活动视. C **View * pView; pView=(C**View*)((CFrameWnd*)AfxGetApp(
阅读全文
posted @ 2011-01-31 15:21
carekee
阅读(321)
推荐(0)
摘要:
C#的写法 public struct EarthPoint { public const double Ea = 6378137; // 赤道半径 WGS84标准参考椭球中的地球长半径(单位:m) public const double Eb = 6356725; // 极半径 public readonly double Longitude,Latidute; public readonly double Jd; public readonly double Wd; public readonly double Ec; public readonly double Ed; public
阅读全文
posted @ 2011-01-31 15:20
carekee
阅读(435)
推荐(0)
摘要:
1.传给未分配内存的const char* (LPCTSTR)指针. CString cstr(asdd); const char* ch = (LPCTSTR)cstr; ch指向的地址和cstr相同。但由于使用const保证ch不会修改,所以安全.2.传给未分配内存的指针. CString cstr = "ASDDSD"; char *ch = cstr.GetBuffer(cstr1.GetLength() + 1); cstr.ReleaseBuffer(); //修改ch指向的值等于修改cstr里面的值. //PS:用完ch后,不用delete ch,因为这样会破坏cstr内部空间
阅读全文
posted @ 2011-01-31 15:20
carekee
阅读(262)
推荐(0)
摘要:
方法一 第一种方法是大家比较熟悉的通过ToolHelp Service提供的API函数来实现。这里用到了3个关键的函数:CreateToolhelp32Snapshot(),Process32First()和Process32Next()。下面给出了关于这三个函数的原形和参数说明; HANDLE WINAPI CreateToolhelp32Snapshot( DWORD dwFlags, //系统快照要查看的信息类型 DWORD th32ProcessID //值0表示当前进程 ); BOOL WINAPI Process32First( HANDLE hSnapshot, //Cre
阅读全文
posted @ 2011-01-31 15:19
carekee
阅读(2346)
推荐(0)
2011年1月30日
摘要:
Bezier曲线原理及实现代码(c++) 一、原理:贝塞尔曲线于1962年,由法国工程师皮埃尔·贝塞尔(Pierre Bézier)所广泛发表,他运用贝塞尔曲线来为汽车的主体进行设计。贝塞尔曲线最初由 Paul de Casteljau 于1959年运用 de Casteljau 算法开发,以稳定数值的方法求出贝塞尔曲线。线性贝塞尔曲线给定点 P0、P1,线性贝塞尔曲线只是一条两点之间的直线。这条线由下式给出: 且其等同于线性插值。二次方贝塞尔曲线的路径由给定点 P0、P1、P2 的函数 B(t) 追踪:。 TrueType 字型就运用了以贝塞尔样条组成的二次贝塞尔曲线。P0、P1、P2、P3
阅读全文
posted @ 2011-01-30 13:46
carekee
阅读(6469)
推荐(1)
2011年1月26日
摘要:
1.工具条和状态条中控件的添加:方法⑴.只能在ToolBar里创建控件:首先,在ToolBar中创建一个Button,其ID为ID_TOOL_COMBO(我们要将创建的控件放在该Button的位置上).其次,新创建一个类CMainToolBar,要从CToolBar继承(创建过程大概如下:选择工程/增加到工程/新的类;也可以选择工程的根,然后点击右键,选择新的类;或者CTL+W,选择增加类/新的类 --- 然后在class type里选择Generic Class,在Name栏里输入新类的名字,Base class里输入CToolBar[u1]),创建成功后在该类里创建要增加的控件的对象,如:
阅读全文
posted @ 2011-01-26 15:38
carekee
阅读(360)
推荐(0)
2011年1月25日
摘要:
1.document.write("");输出语句 2.JS中的注释为// 3.传统的HTML文档顺序是:document-html-(head,body) 4.一个浏览器窗口中的DOM顺序是:window-(navigator,screen,history,location,document) 5.得到表单中元素的名称和值:document.getElementById("表单中元素的ID号").name(或&#118alue) 6.一个小写转大写的&#106s:document.getElementById("output").&#118alue=document.getElemen
阅读全文
posted @ 2011-01-25 14:26
carekee
阅读(4218)
推荐(0)
摘要:
如果你找的javascript的东西的话,建议你 ctrl+F 直接在这个页上找,因为这里80%有你要找的,但是要让你挨着看的话,你就准备看完就去配眼镜!! 事件源对象 event.srcElement.tagName event.srcElement.type 捕获释放 event.srcElement.setCapture(); event.srcElement.releaseCapture(); 事件按键 event.keyCode event.shiftKey event.altKey event.ctrlKey 事件返回值 event.returnValue 鼠标位置 event.x
阅读全文
posted @ 2011-01-25 14:24
carekee
阅读(307)
推荐(0)
摘要:
oncontextmenu="window.event.returnValue=false" style="overflow-y: hidden; overflow-x: hidden"ajs9 leftmargin="0" topmargin="0"body oncontextmenu="return false"/body!--禁止网页另存为: -- noscriptiframe src=*.html/iframe/noscript!-- 禁止选择文本: -- script type="text/javascript"var omitformtags=[
阅读全文
posted @ 2011-01-25 14:23
carekee
阅读(28594)
推荐(1)
2011年1月20日
摘要:
1.判断位置SystemParametersInfo(SPI_GETWORKAREA, 0, &rt, 0) //任务栏在下面的高度 int y = ::GetSystemMetrics(SM_CYSCREEN)-rt.Height(); 上面 int y = rt.top; 左 int y = rt.left; 右 int y = ::GetSystemMetrics(SM_CXSCREEN)-rt.Width();2.得到高度,然后可判断位置CRect rect; CWnd *pWndPrev= FindWindow("Shell_TrayWnd", ""); pWndPrev-GetW
阅读全文
posted @ 2011-01-20 14:26
carekee
阅读(3915)
推荐(0)
2011年1月18日
摘要:
在程式编写的过程中,有条错误信息让我非常不解。程式中有如下语句:bmPhoto=newBitmap(THUMBNAIL_WIDTH,THUMBNAIL_HEIGHT,PixelFormat24bppRGB);每次DEBUG编译的时候总是报告如下的错误:errorC2660:’new’:functiondoesnottake3parameters开始以为是Bitmap的构造函数的问题,不过查了一下,Bitmap明明有个构造函数:Bitmap(ININTwidth,ININTheight,INPixelFormatformat=PixelFormat32bppARGB);那会是什么问题呢?上网讨论
阅读全文
posted @ 2011-01-18 13:58
carekee
阅读(626)
推荐(0)
2011年1月14日
摘要:
慎用USES_CONVERSIONUSES_CONVERSION是ATL中的一个宏定义。用于编码转换(用的比较多的是CString向LPCWSTR转换)。在ATL下使用要包含头文件#include "atlconv.h"使用USES_CONVERSION一定要小心,它们从堆栈上分配内存,直到调用它的函数返回,该内存不会被释放。如果在一个循环中,这个宏被反复调用几万次,将不可避免的产生stackoverflow。在一个函数的循环体中使用A2W等字符转换宏可能引起栈溢出。#include atlconv.hvoid fn(){ while(true) { { USES_CONVERSION;
阅读全文
posted @ 2011-01-14 17:24
carekee
阅读(24130)
推荐(1)
2011年1月4日
摘要:
以下代码位于AppStateManager.cs文件中:// Restore the state public override void RestoreState() { string mapAlias = ParamsDictionary[ActiveMapAliasKey] as string; Map map = GetMapObj(mapAlias); // If it was user's first time and the session was not dirty then save this default state to be applied later. // If
阅读全文
posted @ 2011-01-04 11:30
carekee
阅读(778)
推荐(0)
2010年12月30日
摘要:
CBD(Component Based Development)的开发方法,就是要以控件作为软件组装的基本单位,而不是以函数、过程、类作为软件组装的基本单位。所以在Winform的GIS开发中,如果仅仅把MapXtreme控件放进窗体,然后在这个窗体上添加所有GIS的操作的代码,那么很快就会发现这个应用程序变得腐朽(corrupt)而不可维护。软件的坏味道(bad smell)来自封装程度不足。胖控件,就是指把大部分的计算工作都交给Map控件来完成,例如专题图的划分范围颜色配置,图元的距离,最短路径等;MapXtreme实现这些功能也许很直接,却未必是最高效的。把计算放在控件外部又如何呢?这就
阅读全文
posted @ 2010-12-30 17:43
carekee
阅读(707)
推荐(0)
摘要:
original link:http://www.cnitblog.com/eastperson/archive/2006/10/17/18055.aspxorigin full text:我在2005上研究了好长时间, 才弄出来个简单的鹰眼,与大家分享,我的设计思路是将后台设置两个map,map1和map2,map1为主地图,map2为鹰眼地图,但是map2没有MapControl,定义一个实现类继承于MapBaseCommand,将map1.Bounds的矩形在map2上转换为System.Drawing.Rectangle,之后将这个Rectangle的左上坐标和width,height
阅读全文
posted @ 2010-12-30 17:42
carekee
阅读(1269)
推荐(1)
摘要:
一直以来Session都是MapXtreme中比较重要的部分。但是这方面的资料却寥寥无几。大概很多人都去用googleMap之类的地图工具了吧。基于此原因结合开发者参考写下这篇文章。ISession 接口的有用信息ISession Interface位于MapInfo.Engine命名空间。实现此接口的是一个内部对象SessionInternal,直接并不能使用此对象,必须用MapInfo.Session.Current 访问。从这里看的话这篇文章主要说的还是MapInfo.Session.Current 。因此以下所用的ISession Interface是指SessionInternal的
阅读全文
posted @ 2010-12-30 17:42
carekee
阅读(601)
推荐(1)
摘要:
1 设置图层可选状态/**////summary///改变层的可选择状态////summary///paramname="selectableStatus"/param///returns/returnspublicboolLayerSelectableStatusUpdate(stringtableAlias,boolselectableStatus){if(mapControl1.Map.Layers[tableAlias]==null)returnfalse;MapInfo.Mapping.LayerHelper.SetSelectable(mapControl1
阅读全文
posted @ 2010-12-30 17:42
carekee
阅读(1461)
推荐(0)
摘要:
前阵做一个项目过程中,需要结合MapInfo进行地方展示开发,积累一点点心得与大家共享以下所有基于MapXtreme 6.6MapInfo提供了足够强大的WinForm地图空间,可以很方便地在VS中拖拉摆放。但如此强大的控件也带来了封闭性太强的问题。现在我们都接触到了大量Web上的地图,比如Google Map,LiveMap等,这些Web地图都具有非常高的交互能力,缩放由鼠标双击或鼠标中键滚动,或者使用缩放工具完成,但换到WinForm上,这些非常好的交互能力全都没有了,变成了一个个冰冷的控件(如下图),需要手动触发才能调用相应功能,这样的功能给用户多大的困扰啊!需要改变一下了:首先在需要使
阅读全文
posted @ 2010-12-30 17:41
carekee
阅读(1861)
推荐(0)
摘要:
上一篇文章介绍了一个简单的地图缩放工具的制作,接下来需要介绍一下地图数据读取及加载的设计。首先,地图上的数据是来自数据库并自动生成的,我在这里并没有采用MapInfo的ADO.NET,而是采用本身系统的查询接口再加上自定义实体来生成地图图元,并插入MapInfo的Session中的临时表中以展示。考虑到程序的扩展性,我将数据获取、图元展示、地图展示等分离开来,尽量做到灵活易懂。数据获取接口,我只定义了一个方法:[代码]这个方法返回List自定义抽象实体,这个List表示多个需要展示的图元集合。所以最重要的是AbstractEntity了。在该抽象实体中,我定义了两个属性X和Y,用来表示图元
阅读全文
posted @ 2010-12-30 17:40
carekee
阅读(762)
推荐(0)