DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  4737 随笔 :: 2 文章 :: 541 评论 :: 1614万 阅读
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

07 2012 档案

摘要:描述 event代表事件的状态,例如触发event对象的元素、鼠标的位置及状态、按下的键等等。 event对象只在事件发生的过程中才有效。 event的某些属性只对特定的事件有意义。比如,fromElement 和 toElement 属性只对 onmouseover 和 onmouseout 事件有意义。 例子 下面的例子检查鼠标是否在链接上单击,并且,如果shift键被按下,就取消链接的跳转。 < HTML> <HEAD><TITLE>Cancels Links</TITLE> <SCRIPT LANGUAGE="JScrip 阅读全文
posted @ 2012-07-31 14:05 DoubleLi 阅读(448) 评论(0) 推荐(0) 编辑

摘要:相对于客户区的坐标的使用:<html><head><script type="text/javascript">function show_coords(event){x=event.clientXy=event.clientYalert("X 坐标: " + x + ", Y 坐标: " + y)}</script></head><body onmousedown="show_coords(event)"><p>请在文档中点击。一 阅读全文
posted @ 2012-07-31 13:57 DoubleLi 阅读(324) 评论(0) 推荐(0) 编辑

摘要:<html><head><script type="text/javascript">function whichButton(event){var btnNum = event.button;if (btnNum==2) { alert("您点击了鼠标左键!") }else if(btnNum==0) { alert("您点击了鼠标右键!") }else if(btnNum==1) { alert("您点击了鼠标中键!"); }else { alert("您点击了&q 阅读全文
posted @ 2012-07-31 11:43 DoubleLi 阅读(1039) 评论(0) 推荐(0) 编辑

摘要:<html><head><script type="text/javascript">function whichElement(e){var targif (!e) var e = window.eventif (e.target) targ = e.targetelse if (e.srcElement) targ = e.srcElementif (targ.nodeType == 3) // defeat Safari bug targ = targ.parentNodevar tnametname=targ.tagNameale 阅读全文
posted @ 2012-07-31 11:33 DoubleLi 阅读(3330) 评论(0) 推荐(0) 编辑

摘要:1、两者均可使用VS IDE中AppWizard来建立框架,前者使用“MFC ActiveX Control Wizard”,后者使用“ATL COM AppWizard”。2、用MFC建立的ActiveX控件的扩展名缺省为“.ocx”;用ATL(活动模板库)建立的扩展名缺省为“.dll”。3、用MFC建立ActiveX控件要简单得多,原因是MFC省去聊很多低级的COM概念,且控件设计中可使用多种MFC类,如CString、 CWnd 、CDC等;用ATL建立ActiveX控件则复杂些,且只能使用Windows SDK(Win API)函数。4、MFC ActiveX控件文件要比ATL的小,但 阅读全文
posted @ 2012-07-30 16:35 DoubleLi 阅读(2833) 评论(0) 推荐(0) 编辑

摘要:SignalR 是 ASP.NET 团队正在开发的一个 Microsoft .NET Framework 库和 jQuery 插件,可能包括在以后版本的 ASP.NET 平台中。 它提供了一些前景极为光明的功能,而这些功能正是 .NET Framework 当前不曾具有的,并且是越来越多的开发者所需要的。SignalR 是一个集成的客户端与服务器库,基于浏览器的客户端和基于 ASP.NET 的服务器组件可以借助它来进行双向多步对话。 换句话说,该对话可不受限制地进行单个无状态请求/响应数据交换;它将继续,直到明确关闭。 对话通过永久连接进行,允许客户端向服务器发送多个消息,并允许服务器做出相应 阅读全文
posted @ 2012-07-30 14:21 DoubleLi 阅读(538) 评论(0) 推荐(0) 编辑

摘要:SignalR 是一个集成的客户端与服务器库,基于浏览器的客户端和基于 ASP.NET 的服务器组件可以借助它来进行双向多步对话。 换句话说,该对话可不受限制地进行单个无状态请求/响应数据交换;它将继续,直到明确关闭。 对话通过永久连接进行,允许客户端向服务器发送多个消息,并允许服务器做出相应答复,值得注意的是,还允许服务器向客户端发送异步消息。它和AJax类似,都是基于现有的技术。本身是一个复合体。一般情况下,SignalR会使用Javascript的长轮询( long polling),实现客户端和服务端通信。在WebSockets出现以后,SignalR也支持WebSockets通信。当 阅读全文
posted @ 2012-07-30 14:16 DoubleLi 阅读(2407) 评论(3) 推荐(1) 编辑

摘要:important > 内联 > ID > 类 > 标签 | 伪类 | 属性选择 > 伪对象 > 继承 > 通配符 阅读全文
posted @ 2012-07-30 10:32 DoubleLi 阅读(247) 评论(0) 推荐(1) 编辑

摘要:最近的项目测试中,一个同事机器装的是IE8,当打开2个IE8窗口并以2个不同用户身份分别登录后,之前登录的用户页面会在第二个用户登录以后刷新成第二个用户信息页面。但是在我的本机(IE6)是好的,并未发现类似问题。 我查了整个项目中session设置的地方,并未发现问题。最后分析是session被浏览器共享了,于是网上查了IE8和IE7的区别:IE7中,同一个窗口(IE 进程)共享一个session。IE8中,所有打开的IE窗口(IE 进程)共享一个session。这个问题的关键是,cookie在不同的IE进程间是否共享,有些COOKIE是完全共享的,有的作用域只能局限于单个进程。因为cooki 阅读全文
posted @ 2012-07-30 10:02 DoubleLi 阅读(7382) 评论(1) 推荐(0) 编辑

摘要:最近在网上查阅了不少Javascript闭包(closure)相关的资料,写的大多是非常的学术和专业。对于初学者来说别说理解闭包了,就连文字叙述都很难看懂。撰写此文的目的就是用最通俗的文字揭开Javascript闭包的真实面目。 -一、什么是闭包?“官方”的解释是:闭包是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。相信很少有人能直接看懂这句话,因为他描述的太学术。其实这句话通俗的来说就是:JavaScript中所有的function都是一个闭包。不过一般来说,嵌套的function所产生的闭包更为强大,也是大部分时候我们所谓的“闭包”。看 阅读全文
posted @ 2012-07-27 11:28 DoubleLi 阅读(333) 评论(0) 推荐(0) 编辑

摘要:闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。下面就是我的学习笔记,对于Javascript初学者应该是很有用的。一、变量的作用域要理解闭包,首先必须理解Javascript特殊的变量作用域。变量的作用域无非就是两种:全局变量和局部变量。Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量。 var n=999; function f1(){ alert(n); } f1(); // 999另一方面,在函数外部自然无法读取函数内的局部变量。 function f1(){ var n=999; }... 阅读全文
posted @ 2012-07-27 10:53 DoubleLi 阅读(500) 评论(0) 推荐(0) 编辑

摘要:看了很多篇文章,终于稍稍理解Javascript的链式作用域了。很感谢Laruence,风雪之隅。其实对于Javascript链式作用域的描述,包括,JS权威指南,都有些太冗长了--但是很准确:JavaScript中的函数运行在他们被定义的作用域里,而不是他们被执行的作用域里。这句话有点难懂,但程序的设计,基本都是为了简单,便于理解的。记住JS中经典的一句话是,一切皆对象。说白了链式作用域,其实就是Javascript的一个特性:子函数中可以访问父函数的所有变量。当然也包括全局变量window(一般的函数定义function a(){},其实都是window对象的子函数)。另外补充一下,函数定 阅读全文
posted @ 2012-07-26 23:45 DoubleLi 阅读(2158) 评论(1) 推荐(2) 编辑

摘要:今天做测试工作,发现了一个令我费解的问题,jquery的getJson方法在firefox上运行可以得到返回的结果,但是在ie8上测试,竟发现没有发送请求,故不能取到任何返回的结果,经历了一翻周折,找到了百度空间http://hi.baidu.com/fengluolyn/blog/item/0ac6b7130d8985ddf7039e83.html上的解决办法,便摘抄了下来……1 让每次调用的url都不一样方法:在参数中加一个随机数。例1:jQuery.getJSON("$!{Root}/a/a/s.ashx",{ID:"123456",Name:&q 阅读全文
posted @ 2012-07-25 17:01 DoubleLi 阅读(3940) 评论(0) 推荐(0) 编辑

摘要:1. 新建一个MFC工程, 取名MyTab, 选择Dialog based, 然后Finish. 2. 删除对话框上默认添加的三个控件. 添加Tab Control控件并在Property属性中设置ID为IDC_TABTEST 在More Styles里勾上Bottom. 调速尺寸使其布满整个对话框, 我这边Tab Control的尺寸最后为164X203. 在ClassWizard为其添加变量, 变量名为m_tab. 类型为CTabCtrl. 3. 在对话框的初始化函数OnInitDialog里面添加如下代码: m_tab.InsertItem(0,"参数一"); //添 阅读全文
posted @ 2012-07-25 15:33 DoubleLi 阅读(957) 评论(0) 推荐(0) 编辑

摘要:MessageBox、::MessageBox 、AfxMessageBox三者的区别以前知道这几个函数有差别,但也没有去细究,最近隔了很久没写VC程序了,结果写到使用MESSAGEBOX时出错了,还为之费解,于是上网找了一下资料,清楚了这三个函数的区别,所以写此文章(参考了大量其他人的所写的资料)。使自己能长记性,同时也希望对一些不甚了解的人有所帮助。三者的本质区别如下:Windows API: MessageBox();CWnd::MessageBox(); MFC: AfxMessageBox();其中CWnd::MessageBox() 与 AfxMessageBox()都是对 API 阅读全文
posted @ 2012-07-20 16:37 DoubleLi 阅读(1002) 评论(0) 推荐(1) 编辑

摘要:搜到了wiki上的一篇文章——<List of performance analysis tools>,链接地址:http://en.wikipedia.org/wiki/List_of_performance_analysis_tools 这篇wiki写的是相当的全面,建议有兴趣的看看~~对于在性能调优这一领域的尝试有一个小小的尝试吧~~ 阅读全文
posted @ 2012-07-20 15:08 DoubleLi 阅读(654) 评论(0) 推荐(0) 编辑

摘要:在过去十年间,涌现了许多新的软件技术和平台。每种新技术都要求掌握专门的知识才能创建出性能良好的应用程序。现在,由于各种 Internet 技术(如博客)使失望的用户可轻松地否定您的应用程序,因此您确实需要将性能放到首要位置。在计划早期,就应添加响应性能要求并创建原型来确定可能的技术限制。在整个开发过程中,还应衡量应用程序的各个性能方面以发现可能的性能下降,同时确保速度较慢情形下的测试人员文件并跟踪其错误。即使拥有最好的计划,仍必须在产品开发过程中调查性能问题。在本文中,我们将向您展示如何使用 Visual Studio® Team System Development Edition 阅读全文
posted @ 2012-07-20 14:58 DoubleLi 阅读(530) 评论(0) 推荐(0) 编辑

摘要:qsort()应该就是用的快排。貌似是以数据块的方式移动数据,速度较快。 原型:_CRTIMP void __cdecl qsort (void*, size_t, size_t,int (*)(const void*, const void*));解释: qsort ( 数组名 ,元素个数,元素占用的空间(sizeof),比较函数) 比较函数是一个自己写的函数 遵循 int com(const void *a,const void *b) 的格式。当a b关系为 > < = 时,分别返回正值 负值 零 (或者相反)。使用a b 时要强制转换类型,从void * 转换回应有的类型后 阅读全文
posted @ 2012-07-20 11:20 DoubleLi 阅读(2631) 评论(0) 推荐(0) 编辑

摘要:做ACM题的时候,排序是一种经常要用到的操作。如果每次都自己写个冒泡之类的O(n^2)排序,不但程序容易超时,而且浪费宝贵的比赛时间,还很有可能写错。STL里面有个sort函数,可以直接对数组排序,复杂度为n*log2(n)。使用这个函数,需要包含头文件。 这个函数可以传两个参数或三个参数。第一个参数是要排序的区间首地址,第二个参数是区间尾地址的下一地址。也就是说,排序的区间是[a,b)。简单来说,有一个数组int a[100],要对从a[0]到a[99]的元素进行排序,只要写sort(a,a+100)就行了,默认的排序方式是升序。 拿我出的“AC的策略”这题来说,需要对数组t的第0到len. 阅读全文
posted @ 2012-07-20 10:52 DoubleLi 阅读(1315) 评论(0) 推荐(0) 编辑

摘要:原帖地址:http://hi.baidu.com/yanfei_1/blog/item/a0a538331f5256f91a4cffba.htmlC++的标准模板库(Standard Template Library,简称STL)是一个容器和算法的类库。容器往往包含同一类型的数据。STL中比较常用的容器是vector,set和map,比较常用的算法有Sort等。.一. vector1.声明: 一个vector类似于一个动态的一维数组。 vector<int> a; //声明一个元素为int类型的vector a vectot<MyType> a; //声明一个元素为My 阅读全文
posted @ 2012-07-20 10:43 DoubleLi 阅读(507) 评论(0) 推荐(0) 编辑

摘要:std map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下std map内部数据的组织,std map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在std map内部所有的数据都是有序的,后边我们会见识到有序的好处。下面举例说明什么是一对一的数据映射。比如一个班级中,每个学生的学号跟他的姓名就存在着一一映射的关系,这个模型用map可能轻易描述,很明显学号用int描述,姓名 阅读全文
posted @ 2012-07-20 10:16 DoubleLi 阅读(572) 评论(1) 推荐(3) 编辑

摘要:Visual C++内存泄露检测—VLD工具使用说明一. VLD工具概述Visual Leak Detector(VLD)是一款用于Visual C++的免费的内存泄露检测工具。他的特点有:可以得到内存泄漏点的调用堆栈,如果可以的话,还可以得到其所在文件及行号;可以得到泄露内存的完整数据; 可以设置内存泄露报告的级别;并且是开源免费的。二. VLD下载http://www.codeproject.com/tools/visualleakdetector.asp本文后附有vld1.0的工具包,下载解包后就可使用。三. VLD安装方法一:解压之后得到vld.h, vldapi.h, vld.lib 阅读全文
posted @ 2012-07-19 17:41 DoubleLi 阅读(33975) 评论(0) 推荐(0) 编辑

摘要:http://code.ijinshan.com/ http://search.csdn.net/CSDN搜索,CSDN还是有非常多的编程资源的,用它的搜索能搜出不少东西。代码类别也比较全面。http://snippets.org/简单实用的代码收集网站,强力推荐。比如你要找个DES加密,要找个数据压缩,找个INI文件操作的C代码等,均能手到擒来。http://www.codase.com/index.html它是一个代码搜索引擎,特别是搜索c/c++的开源代码,可以通过函数名、类名等搜索,很酷噢http://sourceforge.net/有名的开源代码库,只要能想到的功能,上面都有对应的源 阅读全文
posted @ 2012-07-19 12:44 DoubleLi 阅读(677) 评论(0) 推荐(1) 编辑

摘要:基于 TCP 的 socket 编程/*服务器端程序流程:1.加载套接字库 WSAStartup2.创建套接字 socket3.将我们创建的套接字,绑定到本机地址的某一端口上 bind4.为套接字设置监听模式,准备客户请求 listen5.等待客户请求到来。当请求到来,将接受连接请求,并返回一个新的对应于此次连接的套接字 accept6.用新返回的套接字和客户端进行通信 send / recv7.在通信结束后,关闭套接字 closesocket客户端程序流程:1.加载套接字库 WSAStartup2.创建套接字 socket3.向服务器发出请求连接 connect4.和服务器进行通信 ... 阅读全文
posted @ 2012-07-19 09:58 DoubleLi 阅读(2457) 评论(0) 推荐(1) 编辑

摘要:菜单结构一个菜单栏可以有若干个子菜单,而一个子菜单又可有若干个菜单项。对于菜单栏的子菜单,由左至右从0开始索引。对于特定的子菜单的菜单项,由上至下建立从0开始的索引。访问子菜单和菜单项,均可通过其索引或标识进行。对于在窗口客户区右键弹出的菜单,如果弹出菜单归属View 类窗口,则菜单项只能响应View 和Doc 类消息点击。如果弹出菜单归属框架窗口,弹出菜单上的消息的路由遵循View -DOC-MainFrame-APP的响应顺序 。菜单的相关重要函数CMenu* GetMenu( ) ; // 得到菜单指针CMenu* GetSubMenu( ) ;// 得到子菜单指针,也就是弹出菜单指.. 阅读全文
posted @ 2012-07-19 09:50 DoubleLi 阅读(8045) 评论(0) 推荐(2) 编辑

摘要:一、创建对话框对象1.首先利用资源编辑器创建对话框资源,并针对该对话框资源定义一个对话框类:class CTestDlg : public CDialog2.创建话话框对象模态对话框的创建: 如: CTestDlg dlg; dlg.DoModal();非模态对话框创建: 如: CTestDlg dlg;dlg.Create(IDD_DIALOG, this); 但这样是得不到一个正常显示的非模态对话框的。因为模态与非模态对话框的实现方式并不相同,这里我们还要注意几点。非模态对话框创建完成后是隐藏着的,必须调用ShowWindow来进行显示。对于模态对话框,当执行到DoModal 函数以创建对 阅读全文
posted @ 2012-07-19 09:19 DoubleLi 阅读(13881) 评论(3) 推荐(0) 编辑

摘要:当你使用了ClassWizard建立了控件和变量之间的联系后:当你修改了变量的值,而希望对话框控件更新显示,就应该在修改变量后调用 UpdateData(FALSE);如果你希望知道用户在对话框中到底输入了什么,就应该在访问变量前调用UpdateData(TRUE)。 用处:主要控制ddx_data 把控件中的值和变量进行交换 比如你有个编辑框,输入了一些值,你的程序怎么得到呢;必须先调用这个(当然是在用了ddx的情况) 反之控件的成员变量中的值也可以通过该函数自动显示到控件里面,根据传进来的是true或者false 当你使用了ClassWizard建立了控件和变量之间的联系后:当你修改了变量 阅读全文
posted @ 2012-07-17 16:45 DoubleLi 阅读(53368) 评论(0) 推荐(2) 编辑

摘要:from:http://blog.csdn.net/leolee82/article/details/6992626先载入一张图片,ID为IDB_BITMAP2TestDlg.h中:CBrush m_brBk;//在public中定义TestDlg.cpp中:在初始化函数OnInitDialog()中加入:[cpp] view plaincopyprint?BOOLCTestDlg::OnInitDialog(){CDialog::OnInitDialog();CBitmapbmp;bmp.LoadBitmap(IDB_BITMAP2);m_brBk.CreatePatternBrush(&a 阅读全文
posted @ 2012-07-17 16:41 DoubleLi 阅读(2586) 评论(0) 推荐(0) 编辑

摘要:from:http://blog.csdn.net/leolee82/article/details/6992615windows编程 全屏窗口的创建总结第一种:较简单的方法在ShowWindow(hwnd,SW_SHOWNORMAL);UpdateWindow(hwnd);前加如下代码:[cpp] view plaincopyprint?LONGstyle=GetWindowLong(hwnd,GWL_STYLE);//获得窗口风格 style=&~WS_CAPTION&~WS_SIZEBOX;//窗口全屏显示且不可改变大小 SetWindowLong(hwnd,GWL_ST 阅读全文
posted @ 2012-07-17 16:38 DoubleLi 阅读(6330) 评论(0) 推荐(0) 编辑

摘要:from:http://blog.csdn.net/leolee82/article/details/6992590先认识一下MFC中的一些和绘图有关的结构体和类 1.点 (1)点结构POINT点数据结构POINT用来表示一点的x、y坐标: typedef struct tagPOINT { LONG x; LONG y; } POINT; (2)点类CPoint 点类CPoint为一个没有基类的独立类,封装了POINT结构,有成员变量x和y 其构造函数有5种: CPoint( ); CPoint( int initX, int initY ); CPoint( POINT initPt ); 阅读全文
posted @ 2012-07-17 16:35 DoubleLi 阅读(8218) 评论(0) 推荐(1) 编辑

摘要:from:http://hi.baidu.com/c996387762/blog/item/d1d54b250412602cd40742b2.html首先说一下什么是DC(设备描述表) 解:Windows应用程序通过为指定设备(屏幕,打印机等)创建一个设备描述表(Device Context, DC)在DC表示的逻辑意义的“画布”上进行图形的绘制。DC是一种包含设备信息的数据结构,它包含了物理设备所需的各种状态信息。Win32程序在绘制图形之前需要获取DC的句柄HDC,并在不继续使用时释放掉。 在c++ 编程中常会见到HDC,CDC,CClientDC,CPaintDC,CWindowDC这样 阅读全文
posted @ 2012-07-17 16:30 DoubleLi 阅读(1092) 评论(0) 推荐(1) 编辑

摘要:画刷类CBrush利用画笔可以画图形的边框,而用画刷就可以在图形内着色。大多数的GDI绘图函数既使用画笔又使用画刷,它们用画笔绘制各种图形的周边,而用画刷填充图形,因而可以用一种颜色和风格去设置画笔,而用另一种颜色和风格去设定画刷,通过一次函数调用就可以绘制出形状复杂的图形。画刷是由CBrush类管理的,创建画刷有两种方法:一种是调用构造函数,另一种是调用相关的成员函数。1.CBrush的构造函数CBrush类的结构函数定义如下:① CBrush( );② CBrush( COLORREF crColor );throw( CResourceException );③ CBrush( int 阅读全文
posted @ 2012-07-17 16:22 DoubleLi 阅读(23511) 评论(0) 推荐(1) 编辑

摘要:AppWizard生成的应用程序框架的主窗口具有缺省的窗口风格,比如在窗口标题条中自动添加文档名、窗口是叠加型的、可改变窗口大小等。要修改窗口的缺省风格,需要重载CWnd::PreCreateWindow(CREATESTRUCT& cs)函数,并在其中修改CREATESTRUCT型参数cs。CWnd::PreCreateWindow 函数先于窗口创建函数执行。如果该函数被重载,则窗口创建函数将使用CWnd::PreCreateWindow 函数返回的CREATESTRUCT cs参数所定义的窗口风格来创建窗口;否则使用预定义的窗口风格。CREATESTRUCT结构定义了创建函数创建窗 阅读全文
posted @ 2012-07-17 16:11 DoubleLi 阅读(5755) 评论(1) 推荐(0) 编辑

摘要:问题是这样产生的.在OnEraseBkGnd中,如果你不调用原来缺省 的OnEraseBkGnd只是重画背景则不会有闪烁.而在OnPaint里面, 由于它隐含的调用了OnEraseBkGnd,而你又没有处理OnEraseBkGnd 函数,这时就和窗口缺省的背景刷相关了.缺省的 OnEraseBkGnd操作使用窗口的缺省背景刷刷新背景(一般情况 下是白刷),而随后你又自己重画背景造成屏幕闪动. 另外一个问题是OnEraseBkGnd不是每次都会被调用的.如果你 调用Invalidate的时候参数为TRUE,那么在OnPaint里面隐含 调用BeginPaint的时候就产生WM_ERASEBKGN 阅读全文
posted @ 2012-07-17 16:07 DoubleLi 阅读(4552) 评论(0) 推荐(0) 编辑

摘要:设置对话框背景颜色及背景图片可在OnCtlColor(),OnEraseBkgnd(),OnPaint()里设置,对话框初始化完毕,显示窗口时按顺序调用OnSize()>OnEraseBkgnd()>OnPaint()>OnCtlColor()。OnEraseBkgnd()中默认调用基类(CFrameWnd)的OnEraseBkgnd(), 用窗口类中注册的Brush绘制背景。因此,绘制窗口背景时最好重写OnEraseBkgnd(),但后面不能调用基类的OnEraseBkgnd()。同时,MSDN关WM_ERASEBKGND消息的说明中有写道,DefWindowProc使用窗 阅读全文
posted @ 2012-07-17 10:48 DoubleLi 阅读(6163) 评论(0) 推荐(1) 编辑

摘要:在图形图象处理编程过程中,双缓冲是一种基本的技术。我们知道,如果窗体在响应WM_PAINT消息的时候要进行复杂的图形处理,那么窗体在重绘时由于过频的刷新而引起闪烁现象。解决这一问题的有效方法就是双缓冲技术。因为窗体在刷新时,总要有一个擦除原来图象的过程OnEraseBkgnd,它利用背景色填充窗体绘图区,然后在调用新的绘图代码进行重绘,这样一擦一写造成了图象颜色的反差。当WM_PAINT的响应很频繁的时候,这种反差也就越发明显。于是我们就看到了闪烁现象。我们会很自然的想到,避免背景色的填充是最直接的办法。但是那样的话,窗体上会变的一团糟。因为每次绘制图象的时候都没有将原来的图象清除,造 成了图 阅读全文
posted @ 2012-07-17 10:47 DoubleLi 阅读(10483) 评论(0) 推荐(0) 编辑

摘要:ActiveX控件用于Web的过程是将控件嵌入主页中,用户通过浏览器访问该主页时,将主页中的控件下载,并在用户机器上注册,以后就可在用户的浏览器上运行。控件下载一次后就驻留在用户本地机器上,下次再访问相同的主页时,可不再下载该控件,而是直接运行用户本地的控件。一:vc创建activex控件创建一个activex控件,名称为:test.ocx,创建步骤略。显示结果如下:为该控件增加一个方法void GetStr(LPCTSTR str),该方法内部代码如下:这样,GetStr方法就被加入了。onDraw函数下代码如下下面,测试该方法,鼠标右键控件,选择Invoke Methods,弹出如下对话框 阅读全文
posted @ 2012-07-16 16:05 DoubleLi 阅读(4021) 评论(0) 推荐(0) 编辑

摘要:开篇语:最近在弄ocx控件发布到asp.net网站上使用,就是用户在使用过程中,自动下载安装ocx控件。(此文章也是总结了网上好多人写的文章,我只是汇总一下,加上部分自己的东西,在这里感谢所有在网上发表相关内容的朋友们。)ActiveX控件 用于Web的过程是将控件嵌入主页中,用户通过浏览器访问该主页时,将主页中的控件下载,并在用户机器上注册,以后就可在用户的浏览器上运行。控件下载一 次后就驻留在用户本地机器上,下次再访问相同的主页时,可不再下载该控件,而是直接运行用户本地的控件。这里控件容器就是浏览器,用户不需要通过浏览器调 用控件的属性或方法。因此,开发面向Web的ActiveX控件比开发 阅读全文
posted @ 2012-07-16 15:25 DoubleLi 阅读(486) 评论(0) 推荐(0) 编辑

摘要:今天看到淘宝UED团队发布了一个Chrome扩展,用于支持在Chrome浏览器点击"和我联系"按钮会弹出旺旺的聊天窗口。我把这个扩展下载了下来,发现里面使用了插件,不理解这个"npwangwang.dll"对应的代码就不能理解这个扩展,Google官方文档中没有怎么讲插件的开发,也找不到什么好的实例。如果淘宝将这个扩展的源代码公开就好啦,刚好一直想研究下Mozilla NPAPI的使用,毕竟Javascript的接口很有限。Chrome OS的右上角要显示很多系统信息,比如电池的电量,这通过浏览器扩展没法完成,我想要直接调用系统接口就应该通过插件来完成。 阅读全文
posted @ 2012-07-16 15:00 DoubleLi 阅读(1260) 评论(0) 推荐(1) 编辑

摘要:问题一解决方案:在编activex控件时,可以用到Active X control test container来测试activex控件,这在VisualStudio 6里面是很方便查找的,工具菜单下面就有。但是在visaul studio 2008 里面TSTCON32.exe这个文件却消失了。那它是没了吗,不是的。而是微软把它放在了例子程序里面,需要自己编译。详细目录:比如我装在C盘里面,VC的例子在 “C:\Program Files\Microsoft Visual Studio 9.0\Samples\2052\AllVCLanguageSamples.zip”,吧这个文件解压缩以后 阅读全文
posted @ 2012-07-16 14:58 DoubleLi 阅读(5338) 评论(0) 推荐(0) 编辑

摘要:1,环境的配置 参考这篇bolg:http://blog.csdn.net/mythma/archive/2008/08/31/2857664.aspx工程 / 调试 / 命令:C:/Program Files/Internet Explorer/iexplore.exe工程 / 调试 / 命令参数:E:/RYF resource/activexApp/a.html注意:命令参数必须是绝对路径! 使用绝对路径打开ie时候,会报“诊断错误!”2,生成ocx时候我写activex使用了opencv库,添加了opencv的dll路径的环境变量,所以并没有将dll拷贝到生成的ocx文件夹!报错:1&g 阅读全文
posted @ 2012-07-16 14:57 DoubleLi 阅读(680) 评论(0) 推荐(0) 编辑

摘要:不知道是不是微软的粗心大意,VS2008中竟然没有ActiveX控件测试容器。幸好需要在IE中测试控件,就不需要那个测试容器啦。1. 生产测试控件的HTML:<HTML><HEAD><TITLE>Test</TITLE></HEAD><BODY><OBJECT ID="MyActiveX" WIDTH=800 HEIGHT=600CLASSID="CLSID:5228A02F-8FBD-424C-B457-EEBD4E748504"> <PARAM NAME=&qu 阅读全文
posted @ 2012-07-16 14:54 DoubleLi 阅读(2061) 评论(0) 推荐(0) 编辑

摘要:问题: 我在学习编程过程中,在ocx静态调用Dynamic Link Library,链接提示错误:Project:error PRJ0050:未能注册输出。请尝试启用“每个用户的重定向”,或用提升权限从命令提示窗口中注册该组件。以为是win7中权限问题,可以看了属性没什么问题? 解答: 根据所述,肯定不是权限问题,而是由于在ocx中引用的dll,没有放在生成ocx控件的目录中,链接就出现了找不到的提示信息。另外查询的资料供参考如下:[c++]"Project : error PRJ0050: 未能注册输出。请确保您有修改注册表的相应权限"错误的解决原创空间, 软件技术, 阅读全文
posted @ 2012-07-16 14:50 DoubleLi 阅读(11189) 评论(1) 推荐(0) 编辑

摘要:为了使软件版本号的最后一位,即修订号与由svn管理的代码库修订号保持一致并自动更新,可以利用VS2005的生成事件和 svn 中的 subwcrev 程序实现,步骤如下:工具/原料Visual Studio 2005 SVN 客户端(TortoiseSVN 或其他 ) 步骤/方法编写一个模板文件,比如取名为 version_template.h,内容如下#ifndef _VERSION_H_#define _VERSION_H_#define VER_MAJOR 1#define VER_MINOR 0#define VER_REVISION $WCREV$#endif //!_VERSION 阅读全文
posted @ 2012-07-13 10:01 DoubleLi 阅读(1561) 评论(0) 推荐(0) 编辑

摘要:一.IDE基础配置1.字体VC6中“Tools→Options→Format→Font”配置字体;VC2005中“工具→选项→环境→字体和颜色”配置字体。编写代码一般采用等宽字体,等宽点阵(位图)字体,相对矢量字体而言具有兼容性好和显示清晰的优点。常用的编程等宽字体包括Fixedsys(VC6和notepad御用字体)、Consolas、YaHei Mono。VC6默认可选字体只有Fixedsys和Terminal,可通过修改注册表来改字体,在HKEY_CURRENT_USER/Software/Microsoft/DevStudio/6.0/Format下面有几个子键,可以修改Source 阅读全文
posted @ 2012-07-12 20:29 DoubleLi 阅读(583) 评论(0) 推荐(0) 编辑

摘要:VC的工程设置解读Project--Settings VC工程设置可能会直接影响到工程的正确性,有时是BUG产生的直接原因,在出现莫名其妙的错误,首先应考虑到是否是工程设置有问题,这无论对于开发还是测试,都是很必要的,本文大致介绍一下工程设置选项。 工程选项的快捷建是Alt+F7, 左边的列表可以选择要设置的工程编译方式(Debug或Release),如果多个工程,还可以选择要设置的工程。 右边是一个属性页,内容十分丰富,依次是: General , Debug , C/C++ , Link , Resource , MIDL , Browse Info , Custom Build ... 阅读全文
posted @ 2012-07-12 10:25 DoubleLi 阅读(1169) 评论(0) 推荐(0) 编辑

摘要:在调试 Visual Studio 2008 程序时,经常有一些动态链接库(即 dll 文件)需要加载到工程里,这样才能依赖第三方库进行程序调试。这些动态链接库,往往都是测试版本或是开发中的版本,或者会有若干个版本;这个时候,如果直接把 dll 所在目录加到 PATH 里,则会有潜在冲突的危险;如果直接拷贝到 Visual Studio 的目录下,假如测试工程太多,每次有新版本的动态链接库更新时,你需要更新若干次,拷贝、粘贴苦不堪言。在开发过程中,究竟怎样来让 Visual Studio 链接这些 lib 及 dll 文件会比较好呢?总体上来说,有几种方法可以改变 Visual Studio 阅读全文
posted @ 2012-07-12 10:14 DoubleLi 阅读(7973) 评论(0) 推荐(0) 编辑

摘要:DSW:全称是Developer Studio Workspace,最高级别的配置文件,记录了整个工作空间的配置信息,她是一个纯文本的文件,在vc创建新项目的时候自动生成 DSP:全称是Developer Studio Project,也是一个配置文件,不过她记录的是一个项目的所有配置信息,纯文本文件 OPT:与DSW、DSP配合使用的配置文件,她记录了与机器硬件有关的信息,同一个项目在不同的机器上的opt文件内容是不同的 CLW:记录了跟ClassWizard相关的信息,如果丢失了clw文件,那么在Class View面板里就没有类信息 PLG:实际上是一个超文本文件,可以用Int... 阅读全文
posted @ 2012-07-11 20:52 DoubleLi 阅读(465) 评论(0) 推荐(0) 编辑

摘要:1. 如果在已经处于 ESTABLISHED状态下的socket(一般由端口号和标志符区分)调用closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL)); 2. 如果要已经处于连接状态的soket在调用closesocket后强制关闭,不经历TIME_WAIT的过程:BOOL bDontLinger = FALSE; setsockopt(s,SOL_ 阅读全文
posted @ 2012-07-11 20:50 DoubleLi 阅读(2702) 评论(0) 推荐(0) 编辑

摘要:char *GetBuffer(n)当n大于0时,是为CString变量分配一个长度为n的字节数组,返回值是这个数组的地址当n等于0时,返回CString变量本身拥有的字符串数组的头ReleaseBuffer一般用在GetBuffer,因为在调用了GetBuffer后变量本身会给自己上锁,于是所有能改变自身值的函数都不能用(如果Left,Mid),要用ReleaseBuffer解锁一.函数原型CString::GetBuffer LPTSTR GetBuffer( int nMinBufLength );throw( CMemoryException );Return ValueAn LPTS 阅读全文
posted @ 2012-07-10 15:35 DoubleLi 阅读(936) 评论(0) 推荐(1) 编辑

摘要:可以用GetSystemMetrics函数可以获取系统分辨率,但这只是其功能之一,GetSystemMetrics函数只有一个参数,称之为「索引」,这个索引有75个标识符,通过设置不同的标识符就可以获取系统分辨率、窗体显示区域的宽度和高度、滚动条的宽度和高度。为了使使GetSystemMetrics的功能,我们以获取系统分辨率为例,并将其中的两个值用TextOut输出到窗体中。第一步:用GetSystemMetrics获取屏幕的宽度和高度int x, y;x = GetSystemMetrics(SM_CXSCREEN); //屏幕宽度 y = GetSystemMetrics(SM_CYS. 阅读全文
posted @ 2012-07-10 15:18 DoubleLi 阅读(9349) 评论(1) 推荐(0) 编辑

摘要:_itoa功能:把一整数转换为字符串用法:char * _itoa(int value, char *string, int radix); 详细解释: _itoa是英文integer to array(将int整型数转化为一个字符串,并将值保存在数组string中)的缩写.其中value为要转化的整数, radix是基数的意思,即先将value转化为radix进制的数,之后再保存在string中. 备注:该函数的头文件是"stdlib.h" 程序例: #include <stdlib.h> #include <stdio.h> int main() 阅读全文
posted @ 2012-07-10 15:06 DoubleLi 阅读(39147) 评论(0) 推荐(2) 编辑

摘要:非模态对话框自动销毁的好方法在进行非模态对话框编程时,由于其需要通过new 一个对话框对象,然后调用Create函数来创建,这就牵涉到何时把对话框delete掉的问题,通过如下方法,可以让你不再担心对话框忘记delete掉而导致的内存泄漏问题。1、用ClassWizard在对话框中添加如下虚拟函数virtual void PostNcDestroy();这样就有了这样一个函数:void CAboutDlg::PostNcDestroy() {// TODO: Add your specialized code here and/or call the base classdelete this 阅读全文
posted @ 2012-07-05 11:26 DoubleLi 阅读(4061) 评论(0) 推荐(0) 编辑

摘要:先来看CreateEx函数:BOOL CWnd::CreateEx(DWORD dwExStyle, LPCTSTR lpszClassName,LPCTSTR lpszWindowName, DWORD dwStyle,const RECT& rect, CWnd* pParentWnd, UINT nID,LPVOID lpParam /* = NULL */){return CreateEx(dwExStyle, lpszClassName, lpszWindowName, dwStyle,rect.left, rect.top, rect.right - rect.left, 阅读全文
posted @ 2012-07-04 21:02 DoubleLi 阅读(4431) 评论(1) 推荐(1) 编辑

摘要:总结OnOK()、OnCancel()、OnClose()、OnDestroy()之间的区别(转) 2009年09月22日 下午 08:33 第一,OnOK()和OnCancel()是CDialog基类的成员函数,而OnClose()和OnDestroy()是CWnd基类的成员函数,即WM消息响应函数。从应用程序结构的角度,拿对话框来说,红色的X对应的是CWnd,而处于对话框中的“确定”、“取消”按钮则对应了CDialog。 第二,OnClose()和OnDestroy() 在单视图程序中,根据<<深入浅出MFC>>所讲,程序退出时执行的操作顺序为(从点X按钮开始)(1 阅读全文
posted @ 2012-07-04 17:51 DoubleLi 阅读(2798) 评论(0) 推荐(1) 编辑

摘要:win32直接操作的是句柄HANDLE,每个句柄就对应windows窗口,而vc对HANDLE进行类封装,间接操作的都是HANDLE,现在句柄只是类的一个成员变量。从句柄到指针 CWnd* pWnd=CWnd::FromHandle(hWnd); //a temporary CWnd object is created //and attached. pWnd->Attach(hWnd); //Attaches a Windows window to a CWnd object从指针到句柄 HWND hWnd=pWnd->GetSafeHandle(); hWnd=pWnd-> 阅读全文
posted @ 2012-07-04 16:12 DoubleLi 阅读(9575) 评论(0) 推荐(0) 编辑

摘要:基于对话框的程序(mfc默认生成),重载OnEraseBkgnd函数,其它不动,若在OnPaint函数中不调用其基类的OnPaint函数,即注释掉CDialog::OnPaint();,代码如下: [cpp] view plaincopyprint?voidCDDDDlg::OnPaint(){if(IsIconic()){CPaintDCdc(this);//devicecontextforpainting SendMessage(WM_ICONERASEBKGND,reinterpret_cast<WPARAM>(dc.GetSafeHdc()),0);//Centericon 阅读全文
posted @ 2012-07-04 14:31 DoubleLi 阅读(3762) 评论(0) 推荐(0) 编辑

摘要:方法一:在OnPaint中StretchBlt具体是:注释掉CDialog::OnPaint()或放到结尾(原因何在呢?),并加入贴图代码[cpp] view plaincopyprint?voidCqqqqqDlg::OnPaint(){if(IsIconic()){CPaintDCdc(this);//devicecontextforpainting SendMessage(WM_ICONERASEBKGND,reinterpret_cast<WPARAM>(dc.GetSafeHdc()),0);//Centericoninclientrectangle intcxIcon= 阅读全文
posted @ 2012-07-04 14:30 DoubleLi 阅读(6278) 评论(0) 推荐(0) 编辑

摘要:设置对话框背景颜色及背景图片可在OnCtlColor(),OnEraseBkgnd(),OnPaint()里设置,对话框初始化完毕,显示时调用OnSize()->OnEraseBkgnd(),->OnPaint()->OnCtlColor(), 若想改变对话框大小,比如全屏显示ShowWindow(SW_SHOWMAXIMIZED);UpdateWindow();其中 ShowWindow会调用OnSize()->OnEraseBkgnd(),UpdateWindow();调用OnPaint()->OnCtlColor(),若对话框中没有设置消息响应OnErase 阅读全文
posted @ 2012-07-03 14:33 DoubleLi 阅读(7175) 评论(0) 推荐(0) 编辑

摘要:voidInvalidate( BOOL bErase = TRUE );该函数的作用是使整个窗口客户区无效。窗口的客户区无效意味着需要重绘,例如,如果一个被其它窗口遮住的窗口变成了前台窗口,那么原来被遮住的部分就是无效的,需要重绘。这时Windows会在应用程序的消息队列中放置WM_PAINT消息。MFC为窗口类提供了WM_PAINT的消息处理函数OnPaint,OnPaint负责重绘窗口。视图类有一些例外,在视图类的OnPaint函数中调用了OnDraw函数,实际的重绘工作由OnDraw来完成。参数bErase为TRUE时,重绘区域内的背景将被擦除,否则,背景将保持不变。和 Update. 阅读全文
posted @ 2012-07-03 14:10 DoubleLi 阅读(4438) 评论(0) 推荐(0) 编辑

摘要:MoveWindow只能设置窗口的大小和位置;SetWindowPos拥有MoveWindow的全部功能之外,还可以设置窗口的层叠关系(如,把指定的窗口放在所有窗口的最上层--always on top就可以用这个函数、或者把指定的窗口放在另一个窗口的下层,等等)。 没有什么优缺点可言,只是功能上的大小有别。你完全可以不用MoveWindow,而只用SetWindowPos;但是,在只要设置窗口大小或位置的情况下,你也完全可以使用MoveWindow.void MoveWindow( int x, int y, int nWidth, int nHeight, BOOL bRepaint = 阅读全文
posted @ 2012-07-03 11:22 DoubleLi 阅读(1737) 评论(1) 推荐(1) 编辑

摘要:1. 系统何时发送WM_PAINT消息? 系统会在多个不同的时机发送 WM_PAINT 消息:当第一次创建一个窗口时,当改变窗口的大小时,当把窗口从另一个 窗口背后移出时,当最大化或最小化窗口时,等等,这些动作都是由系统管理的,应用只是被动地接收该消息,在消息处理 函数中进行绘制操作;大多数的时候应用也需要能够主动引发窗口中的绘制操作,比如当窗口显示的数据改变的时候,这一 般是通过 InvalidateRect 和 InvalidateRgn 函数来完成的。 InvalidateRect 和 InvalidateRgn把指定的区域加到窗口的 Update Region 中,当应用的消息队列没有 阅读全文
posted @ 2012-07-03 10:10 DoubleLi 阅读(2046) 评论(0) 推荐(0) 编辑

摘要:@echo off SET Pash=%cd%rem 删除当前目录下所有obj,bin目录for /f "tokens=*" %%a in ('dir obj /b /ad /s ^|sort') do rd "%%a" /s/qfor /f "tokens=*" %%a in ('dir bin /b /ad /s ^|sort') do rd "%%a" /s/qdel %Pash%\Build\Release\Client\*.* /s/qdel %Pash%\Build\Re 阅读全文
posted @ 2012-07-01 19:30 DoubleLi 阅读(564) 评论(1) 推荐(0) 编辑

点击右上角即可分享
微信分享提示