
VC点滴
yangsh3002
宇宙是有限的,知识是无限的。
饭量是有限的,能量是无限的。
E-Mail:xiaoye3004@hotmail.com
展开
-
单文档多视图的实现
一个文档可能对应多个视图,最典型的如股市行情数据有图形界面和表格界面两种,实现这种程序使用MDI是最直接也是最让人接受的。这里只对可能出现的问题做一下简要分析。1,如何显示两个视图首先需要定义要使用的视图类,以股市软件为例(下同),定义一个图形View和一个表格View,这是必须要做的。MDI使用文档模板来加载文档、框架窗口和视图窗口,默认的创建函数在App类的InitInstance中:原创 2008-10-17 10:24:00 · 5083 阅读 · 3 评论 -
浮点数之坑
boost有一个获取1970年到某个时间点所经过的微秒数的函数,如果精确到秒,这个数后六位是0,这是个64位整数,我们经常用它来获取秒数,也就是除以1000000,为了兼容毫秒精度,经常是除以一个浮点数1000000.0f,这里出现了一个坑,如果除单精度数,算出来的数会和标准秒数差个几十秒,所以最好能除以一个双精度的浮点数,不带f,1000000.0,这样算出来就是标准秒数了。当然,如果更注重效率原创 2016-09-11 22:47:43 · 674 阅读 · 0 评论 -
为应用程序添加脚本访问功能
首先,要有一个可以通过代码访问的应用程序,两种方式,一种是程序提供应用接口,要么是API,要么是COM接口,另一种,能够获得程序全部的源代码。 以上条件具备后,接下来,比较专业一点的方式,建立一个脚本编辑器程序,一般用一个单文档的应用就行,View类里放一个RichEditCtrl或者第三方的脚本控件,如Scintilla等,主要是为了编辑脚本方便以及提供一个美观的界面,让脚本程原创 2012-11-16 18:01:05 · 1525 阅读 · 0 评论 -
js与vbs脚本中的日期时间概念
最近要写一个在本地运行的脚本编辑器,要实现对js和vbs两种脚本的编辑和解释运行,js我用的是v8引擎,vb找不到又好又快的引擎,就用微软的Active Scripting技术来实现,在实现过程中,对date类型的解析颇费了一番周折,前面实现了对js的日期类型的解析,单独提了一个函数出来,用来将js的date类型转化为本地的date类型。后面用vb来弄时,发现vb脚本中的日期时间和js有很大的区别原创 2012-11-13 11:02:32 · 1158 阅读 · 0 评论 -
一次调试内存泄漏的过程
最近事少,尝试做一个控件容器,下载一个微软的代码来研究,不得法,于是建一个新工程,把重要代码一点点拷过去,总算要完成最基本的功能了,然而在程序退出时显示一个内存泄漏。不大,只有4个字节,心中很不爽,找一些调试内存泄漏的文章来看,大部分说用_CrtDumpMemoryLeaks()什么的,还说在vs里,默认的就能把内存泄漏的地址,包括源代码行告诉你,我看了一下,只给出地址,没给出行。反复执行多次,发原创 2012-10-11 17:23:54 · 585 阅读 · 0 评论 -
为MFC程序添加ATL简单对象
当建立一个MFC程序,之后又想把其中一个类做成com的,以便其它程序调用,那么你就可以为这个MFC程序添加一个ATL简单对象,把这个类的方法定义成ATLCOM组件的方法。这里IDE(我这里是VC2008)会提示你将为应用程序增加ATL支持。确认后,IDE会忙那么几秒钟,过后,那个为你添加ATL简单对象的的向导就出来了,你就可以顺理成章地增加对象的方法和属性了。等一切完成后,这个com对象是封在一个原创 2012-07-13 14:21:05 · 1294 阅读 · 0 评论 -
将海康视频sdk源码封装成控件
近日有一个客户想要做一个视频控件,指明要用海康的视频服务器,并提供给我一个SDK演示程序,是一个对话框,上面布满了大大小小的按钮、菜单等控件,我拿过来一看,好,有十多万行源码,好在客户要求的功能不多,只有一个录像功能。 我就在源码里面删控件,最后总算弄得非常简单明了。后面的问题来了,如何把这个对话框封装成控件呢,根据我的经验,在控件中可以嵌入对话框程序,网上也有例子,但那是在Act原创 2012-05-28 13:30:29 · 3274 阅读 · 3 评论 -
怎样把tlb编译进exe或dll中?
这方面的资料太少了,找了很久才在一个角落里找到:如果你是用VC的ATL做的开发,那么缺省是会加入进去的,如果不是的话,你可以手动往资源文件.rc中加入如下代码: 1 TYPELIB DISCARDABLE "Your原创 2011-08-19 16:38:43 · 785 阅读 · 0 评论 -
使用ATL为COM组件增加多个双接口
自微软开发ATL以来,使用ATL为COM增加多个双接口就是一个老大难的问题,尽管网上有不少个人声称有解决方案,但也都存在一些问题,微软自己也在技术支持网站上说不建议为组件增加多个双接口。 我想大多数想增加双接口的人肯定是既想用虚表的高效性,又想用自动化接口的灵活原创 2011-08-19 11:50:14 · 1708 阅读 · 0 评论 -
.net程序资源组件浅析
.net程序资源组件浅析一 .net程序的不同<br />.net程序和以往的Windows应用程序的一个显著不同的地方是它的可执行文件的组织方式,不像以往的应用程序,.net程序是由MSIL语言来组织起来的,运行的时候需要调用即时编译器(JIT)来把它编译成本地汇编指令,再来执行,这好比以前的VB程序一样,是一个解释执行的过程。<br />与指令相对应的是数据,一部分静态数据或者说是资源,对它们来说,.net程序和传统程序也是大大不同的。本文主要对.net应用程序资源的组成以及对它的操作进行简单分析。二原创 2011-02-12 14:36:00 · 566 阅读 · 0 评论 -
CEdit和CRichEditCtrl的一点不同
这两个控件都有一个成员函数LineIndex,功能是获取某行在整个控件文本中的位置,虽然它俩的用法一样,但得出的结果却不一样。CEdit得到的结果比CRichEditCtrl得到结果每行多了一个字符,这是一个陷阱,陷住我一整天的时间。最近在做一个带调试功能的VB脚本编辑器,结果下断点后,总断不到该断的地方,原来CRichEditCtrl给调试器喂代码时把断点位置搞差了,就因为差了一个字符,呵呵。原创 2011-01-06 12:05:00 · 908 阅读 · 0 评论 -
MFC框架应用.net界面
<br />问题:<br />MS生产的VS2005真的是一副超级庞大且复杂的开发机器,不说别的,光说C++语言它就支持MFC、ATL和CLR等几种类库和开发框架,它的复杂性不言而喻。按常理来说,一件事物一旦复杂到一定程度,总会有它隐藏起来的缺陷,说缺陷有些不好听,对于开发工具来说就是有一些令人费解的地方,比如我们要讨论的一个问题,开发一个界面,对于Windows界面来说,界面有旧的Windows风格和新的Windows风格,这里新的风格就是XP风格,也就是.net开发用到的界面风格。不要说新风格一定就比旧原创 2010-12-16 15:03:00 · 1171 阅读 · 0 评论 -
.net 生成超大窗体
方法一:将窗体的FormBordStyle属性设置为none。其缺点是用手动调整大小只限于在设计时调整,运行之后也没有标题栏,也不能用用鼠标来调整。方法二:使用Windows消息编程。其缺点正好与方法一相反,是在设计时不能调整大小。其原理是在窗口处理过程,捕捉WM_GETMINMAXINFO消息,并设置MINMAXINFO结构中的窗口最大值属性,其C++/CLI代码如下:// 定义部分原创 2009-09-11 17:31:00 · 588 阅读 · 0 评论 -
用com操作word
使用com技术对word进行操作,不同于网上流行的使用类型库的方法,直接调用word应用程序对象的接口方法,以下是一个简单应用的代码:int main(int argc, char* argv[]){ // ******************* Declare Some Variables ******************** // Variables that原创 2008-12-18 10:30:00 · 3005 阅读 · 3 评论 -
WinHand.cpp Line 199错误
发生错误的一种可能的原因:程序中申请了DC的指针:CDC* pDC = this->GetDC();在使用完后调用了删除函数:pDC->DeleteDC();问题在这儿,在获取的对象的DC后,不要轻易使用用删除函数,应改成:ReleaseDC(pDC);除非是自己创建的DC,否则不要删除,发生这类错误一般很难定位。原创 2008-10-13 15:13:00 · 2160 阅读 · 0 评论 -
如何设置打印页边距
在打印图形时,如果想设置打印页的页边距,只需要将内容偏移一段距离(页边距),输出到打印DC上即可,现在问题是如何精确(或大致精确)地控制这段距离。在CView打印(或打印预览)时,OnPrint事件中有一个参数为pInfo,pInfo里有一个m_rectDraw成员,表示的是打印DC输出的矩形大小,以像素为单位,到这里离我们的问题近了一步。我们的画图函数基本上都可以控制位置,如MoveTo,L原创 2008-10-10 13:58:00 · 6646 阅读 · 0 评论 -
软件接口与扩展性
如今,接口这个名词已经成为软件架构师乃至程序员们三句话不离口的词汇了,成为了时尚的代表,不说接口,就感觉自己档次很低一样。同样,接口一词也被人们用滥了,其范围也是越扩越大,边界也越来越模糊。其实,对C系语言来说,接口无非有两种,一种是数据接口,举个例子来说,一个对外公布的数据结构。另外一种是功能接口,尤其对C++语言来说,它就是一个纯虚类。我们今天讨论的是后一种接口。 接口是纯虚原创 2016-10-31 00:16:46 · 3813 阅读 · 0 评论