摘要:1.没有解决的外部定义错误xyView.obj : error LNK2001: unresolved external symbol "public: __thiscall CMyOCRInfo::CMyOCRInfo(void)" (??0CMyOCRInfo@@QAE@XZ)可能是由于构造方法没有实现代码2.没有释放 HBITMAP 句柄造成不能创建位图的问题2004.8.17没有及时的释放 HBITMAP 句柄,当创建位图数达到 30 时,出现 8 号错误,即内存不足3.在调试窗口输出信息TRACE(s);4.如果用向导新建类时只有自定义类型,则可能是因为 .clw
阅读全文
12 2012 档案
摘要:Unicode下TRACE中文(_CrtDbgReport: String too long or IO Error)在使用Unicode的工程项目中,如果是Debug模式。当TRACE Unicode字符串时,会输出提示:_CrtDbgReport: String too long or IO Error有两种方法来解决这个问题方法一:直接使用 OutputDebugString 替换 TRACE相关说明:函数原型:void OutputDebugString(LPCTSTR lpOutputString);功能说明:该函数输出一个字符串给调试器用于显示例子:原语句:TRACE(_T(&qu
阅读全文
摘要:一、很多时候需要在Release版本下调试程序,可以使用以下方法设置:1、无效断点所在的项目和启动项目的设置:项目->属性->配置属性->C/C++->常规->调试信息格式,这里不能为『禁用』;2、项目->属性->配置属性->链接器->调试->生成调试信息,这里设为『是』;3、C/C++->优化->优化选择『禁用』;4、删除解决方案下的.ncb文件;5、工具->选项->调试->『要求源文件与原始版本完成匹配』去掉勾;6、最后在上述设置的情况下,重新编译整个解决方案;二、经过试验,在VC2008下,新建一个
阅读全文
摘要:VC调试,一般是需要设置一个断点的,譬如1)int i;2)int j;如果在int j处设置了断点,那么当程序运行到int j时,程序停止,这个时候就可以查看程序各种变量或执行状态了,简单的办法就是把鼠标停在要看的变量上面。会有一个个小的弹出窗口来显示变量状态。1)设置断点,一种是在代码行的最左边鼠标点击一下,会有个红点出来。快捷键是,将编辑光标--即插入符(不是鼠标光标)停在要设断点的代码行,然后按F9,就会有红点出来。2)设置的断点,程序一定要能执行到。譬如:{ //0int i = 0; //1if (0 != i) {//2int j = 1; //3j...
阅读全文
摘要:最近一段陆续用了几种调试VC程序的方法。一般程序也肯定会使用到这几种方法。现在总结如下:1.在VC里面debug版本用TRACE自己打印trace到调试窗口。局限就是,不能脱离了vc的环境进行调试。使用者只能是程序编写者来进行调试。2。利用微软的调试工具Dbgview.exe,来看trace的输出,可以脱离vc的环境。此方法与第一种的不同是,可以脱离VC环境,自己接受程序利用TRACE打印的消息。使用者可以是程序测试人员来进行测试时,抓取程序出错时的log,供编写程序者分析原因。这个在一定程度上来说是扩大了trace的使用范围。3。自己在code里面嵌入code,把trace输出到文件里面去。
阅读全文
摘要:C语言中实现参数个数可变的函数 采用C语言编程的时候,函数中形式参数的数目通常是确定的,在调用时要依次给出与形式参数对应的所有实际参数。但在某些情况下希望函数的参数个数可以根据需要确定。典型的例子有大家熟悉的函数printf()、scanf()和系统调用execl()等1、在win环境下编程例子:以下例子在VS2010编译通过。#include<stdio.h>#include<string.h>#include<stdarg.h>int demo(char * ,...);int main(){demo("TEST",5,4,3,2,1
阅读全文
摘要:这几天不是很忙,有拿起了《深入浅出MFC》,这本书其实看过2遍了,不过时间很久了,所以也忘了很多。现在再次看这本书,发现又吸收很多新东西。想起了有人说过的一句话,具体记不清除了,但是大意是。同一本书,每看一遍书,就有不同的收获。也是因为你的知识水平在提高,你说关注的东西的角度就不一样,所以每次都会有收获的。总是用VC里面的TRACE来打印调试,但是这个唯一不足就是,不能方便的打印变量,就像messagebox一样。今天看到《深入浅出MFC》里面提到了另一个命令。afxDump用法如下:int i = 10;afxDump << "hello world !" &
阅读全文
摘要:VC++提供了一个叫输出窗口的窗口,在调试程序和生成是可以看到输出信息,这个信息如果是MFC程序可以用TRACE宏来打印,在控制台程序里就没有了。所以我们直接调用API来实现上面的功能。首先在程序中引入头文件windows.h或winbase.h调用函数有两种版本ANSI和UNICODEOutputDebugStringAOutputDebugStringW自动版本OutputDebugString输出方法OutputDebugString(_T("字符串"));OK可以了。最后在前面加上一个宏判断#ifdef_DEBUGOutputDebugString(_T("
阅读全文
摘要:一、调试基础调试快捷键F5: 开始调试Shift+F5: 停止调试F10: 调试到下一句,这里是单步跟踪 F11: 调试到下一句,跟进函数内部Shift+F11:从当前函数中跳出Ctrl+F10:调试到光标所在位置F9: 设置(取消)断点Alt+F9:高级断点设置跟踪调试1、尽量使用快捷键时行调试2、观察调试信息3、高级中断设置异常调试重试->取消->调试函数堆栈,用variables或者call stack 窗口Release调试1、经常测试你的Debug和Release版本2、不要移除调试代码,如用ASSERT, TRACE等。3、初始化变量,特别是全局变量,malloc的内存
阅读全文
摘要:转载请标明是引用于 http://blog.csdn.net/chenyujing1234欢迎大家拍砖!一、应用背景有一个在win7中用VS2008编译成功,运行正常的程序:Exe+DLL;放到XP虚拟镜像上运行却提示:LoadLibrary返回14001。(1) 后来采用了下面方法中的“方法一”解决了。(2) 但在方法一的基础上还要安装VS2008对应的分发包vcredist_x86.exe(VS2005的安装目录下提供了此文件,但在VS2008去不提供,但可到网上下载)。参考文章:http://hi.baidu.com/roger_long/item/867a7cf6fd8cf4cc521
阅读全文
摘要:1.CDumpContext 该类没有基类。这个类支持面向流的诊断输出,以人能够阅读的文本。该类重载了<<操作符。afxDump是一个预声明的CDumpContext对象,可以方便使用。该对象只在MFC的Debug版中有效。可以将调式信息输出到调试输出窗口或调试终端。// example for afxDumpCPerson myPerson = new CPerson;// set some fields of the CPerson object...//..// now dump the contents#ifdef _DEBUGafxDump << "
阅读全文
摘要:我们知道,MFC中可以调用宏TRACE等十分方便的输出调试信息到Visual Studio输出窗口,但C++中没人类似的函数,最近我在开发一个小程序时跟踪了一下MFC的TRACE宏,发现它映像了atltrace.h中的ATLTRACE宏,因些,我们也想在C++中使用TRace可以用如下方式:#include <atltrace.h>#define TRACE ATLTRACETRACE("");在C++中可以直接使用下面的函数OutputDebugString Function Sends a string to the debugger for display
阅读全文
摘要:在win32程序中可以使用函数OutputDebugString输出调试信息。输出的结果可以在vs的集成环境中看到,也可以使用工具DbgView.exe捕捉结果。函数的原形如下:OutputDebugStringThe OutputDebugString function sends a string to the debugger for display.void OutputDebugString( LPCTSTR lpOutputString);ParameterslpOutputString [in] Pointer to the null-terminated string to b
阅读全文
摘要:前言 在上篇Add-In运行机制解析(上)中,我分析了Add-In向导生成的代码,从中我们知道只要创建一个类库,它包含实现了IDTExtensibility2接口的类,然后为其建立.addin配置文件,就可以实现一个Add-In了。本文将更进一步,介绍Add-In的事件和生命周期,为今后的开发打下基础。Add-In的事件 Add-In是事件驱动的,可以猜到的事件有加载、卸载、状态改变等等。事实上,这些事件都与IDTExtensibility2接口有关,也就是该接口的5个方法: 如果要了解这些方法如何执行,一个办法是在这些方法中加一个MessageBox,然后通过Add-In Manager进行
阅读全文
摘要:前言 上一篇随笔Macro和Add-In初探介绍了如何开发两者的HelloWorld程序。没错,宏确实简单易行。不过在某些情况下,比如在商业软件中,宏在性能和知识产权方面可能会带来麻烦,此时那把更好的锤子是Add-In。在初探一文中,我介绍了如何使用Add-In向导来开发第一个Add-In。VS是一款很棒的开发工具,它的各种向导(以及其它模板、可视化工具等)做得非常好,不过我发现这一强大之处到头来反而给人诟病。其中一种说法是,这些方便的工具让初学者入门容易,并惯坏了他们,以致于想登堂入室就难得多了。客观地说,这不是VS的错,VS没有阻止你去了解这些工具的背后所在。这些工具会生成大量代码,我们需
阅读全文
摘要:前言 Visual Studio是微软最知名的产品之一,在使用微软技术的开发人员的心目中尤为如此。相信这一点无须多说。它建立在IDE(统一开发环境)的基础之上,可用于开发多种不同类型的应用程序。Visual Studio,通常被简称为VS(以下皆按此简称),支持多种平台和编程语言。了解VS的历史以及每个版本的更迭,对学习它的扩展性开发会很有好处。所以在这里简单地说说VS在过去的12年里的历史。VS的历史 在软件领域,VS的历史算比较长的了。在此期间,微软开发了数种编程语言和支持这些语言的可视化IDE,将其称为“Visual Studio”。当然,VS在12年间已经有了发生了很大的变化,不仅仅是
阅读全文
摘要:前言 在VS概览中,我们简单回顾了一下VS的历史。本文将通过两个简单的例子来说明Macro和Add-In的开发。通过Macro我们把VS中的一些重复操作录制下来,之后可以多次运行,节省时间并保持好的心情;通过Add-In,我们可以自己动手来为VS添加新的功能,扩展了VS就意味着扩展了我们自己。VS 2008扩展方式一览在上篇VS概览中提到了扩展VS有三种主要的方式:Macro、Add-In和VsPackage。事实上,还有更多的选择,这里先简单列一下:Macro Add-In VsPackage VS Shell Domain Specific Language Tool Visualizer
阅读全文
摘要:感谢曾发明同学1参照vc自带的sample.dsm生成文档yymacro.dsm;2编辑yymacro.dsm内容,添加如下三个宏:A)‘生成Doxygen样式的函数注释YYAddDoxygenFunctionDescription()对应注释为:/*** Func1 declaration* @param int a input1 a* @param int b input2 b* @see TestMe()* @return int*/对应按钮为:Ctrl+shift+fB)‘生成doxygen样式的公开变量的注释YYAddDoxygenValDescription ()对应注释为:/**
阅读全文
摘要:1 doxygen是大名鼎鼎代码文档工具。下载地址:www.doxygen.org安装它。http://www.stack.nl/~dimitri/doxygen/download.html可下载.2 Graphviz这个工具配合doxygen使用,可以提取函数,模块之间的调用关,非常清晰。下载地址:http://www.graphviz.org/Download..php下面是Graphviz提取出来的一些关系图:3 htmlhelp这个工具把doxygen生成的html文件,转化为一个CHM文件,看起来方便些。下载地址: http://www.microsoft.com/downloads
阅读全文
摘要:开发环境 ---->Turbo c DOS时代c语言开发的经典工具,目前适合两类人使用:c语言beginner(尤其是学生一族),具有怀旧情节的专业人士:) ---->Visual C++ 6.0/7.0 稳定而强大的IDE开发环境,具有丰富的调试功能,定制宏的功能也是其一大特色。Microsoft的经典之作,功能强大自不必言说。附带的一些工具也很不错,比如:Spy++。但编译器较之同类,支持c++标准的程度不够好,尤其6.0及以前的版本。 ---->BCB Borland的C++ Builder是可以与VC匹敌的另一个功能强大的IDE,速度和稳定性稍逊,但对c++标准支持的程...
阅读全文
摘要:一、 本文介绍一个CButton的派生类CLinkButton,用此派生类制作的按钮具有以下特点: 1、按钮的外观类似静态控件类CStatic 产生的对象。(参见图一) 图一 2、当鼠标的光标移到按钮上,但并未按下时,光标改变形状,字体改变形状;按钮类似应用在工具条和菜单上的扁平钮效果。(参见图二) 图二 3、当按钮按下的情形:(参见图三) 图三 二、下面具体描述这种按钮的实现方法和步骤: 在VC6的IDE环境中,生成一个基于对话框的PROJECT。 将对话框资源中按钮的属性页打开,在“Style”标签页中选取按钮的“Owner Draw”(自绘)属性。 将光标引入到应用程序的资源中。 ...
阅读全文
摘要:CButtonST使我目前见过的最强大,功能最全的CButton派生类。撰写本文的目的不在于技术的讨论,而是希望能够为各位提供关于CButtonST的使用参考,以提高编写程序的速度。 下图是用CButtonST做的几个按钮 以下是CButtonST类的一些版本信息,方便大家可以及时获得它的最新版本。 作者:Davide Calabro 邮箱地址:davide_calabro@yahoo.com 个人主页:http://www.softechsoftware.it CButtonST类主要包括BtnST.h、BtnST.cpp、BCMenu.h和BCMenu.cpp四个文件。如果你打算使用CB.
阅读全文
摘要:Socket模型详解两种I/O模式一.选择模型二.异步选择三.事件选择四.重叠I/O模型五.完成端口模型五种I/O模型的比较两种I/O模式1、 两种I/O模式 阻塞模式:执行I/O操作完成前会一直进行等待,不会将控制权交给程序。套接字默认为阻塞模式。可以通过多线程技术进行处理。 非阻塞模式:执行I/O操作时,Winsock函数会返回并交出控制权。这种模式使用起来比较复杂,因为函数在没有运行完成就进行返回,会不断地返回 WSAEWOULDBLOCK错误。但功能强大。如果你想在Windows平台上构建服务器应用,那么I/O模型是你必须考虑的。Windows操作系统提供了选择(Select)、异步选
阅读全文
摘要:通常要开发网络应用程序并不是一件轻松的事情,不过,实际上只要掌握几个关键的原则也就可以了――创建和连接一个套接字,尝试进行连接,然后收发数据。真正难的是要写出一个可以接纳少则一个,多则数千个连接的网络应用程序。本文将讨论如何通过Winsock2在Windows NT 和 Windows 2000上开发高扩展能力的Winsock应用程序。文章主要的焦点在客户机/服务器模型的服务器这一方,当然,其中的许多要点对模型的双方都适用。 API与响应规模 通过Win32的重叠I/O机制,应用程序可以提请一项I/O操作,重叠的操作请求在后台完成,而同一时间提请操作的线程去做其他的事情。等重叠操作完成后线程收
阅读全文
摘要:如何成为一名优秀的程序员?一位仁兄说的“程序员写的程序不是算法+语法 ,而是要能够满足用户需求的工 具”我非常赞同,要想达到用户需求就必须从各个方面来考虑如业务、人机交互 、效率等方面,而不只是一个语言(语法)的问题,语言(语法)只是工具,只 知语法不知其他那就真是编程机器了! 编程机器在印度高中生经过几个月培训,按照严谨的软工方法,加上较高的管理 ,就可以胜任了!大家相信吗,我是相信的!谈到这里我就不禁说到了国内教育 界最近在探讨的问题“计算机科系的毕业生特别是本科大专生到底出来干啥、如 何适应社会要求”,大家也看到了很多计科系大学生说精通N种语言,熟悉N种工 具,不知道学校里的其他知识到那
阅读全文
摘要:如何学习vc++(vc的用处) 1 vc的用处我感觉下面一些领域比较适合于用vc: 操作系统编程,game,图形设计,corba编程,com编程,网络编程。我谈谈我的体会。我现在在深圳的一家公司从事IP电话网关的开发。通过这个项目,我 才真正体会到VC有多么强大,上百个线程同时工作,数据库并发访问,而且全部软件基 于COM构造,这样高性能的大型软件,只有VC方显出其英雄本色!不过,在国内,有机会 接触这样的大型系统软件的不多。而在做大型系统软件时,对VC程序员的要求就不仅仅 是熟悉VC、MFC本身了,这只是基本的要求,最的挑战是你如何运用VC实现一些高级的功能特性。其实,VC做数据库也不是不合
阅读全文
摘要:序:近来,在论坛上面几乎每天都可以看到很多的人提出如何学习MFC,学习MFC的确不是一件很容易的事情,加上成千上万的API函数和微软的一些资料的保留,学习MFC就变得更难了。不过我认为难在入门,入门后就慢慢觉得得心应手了。下面是一些先辈们学习过程中总结出来的方法及学习感受,今天把它们整理出来,供大家参考。正文:我记得我在网上是这么说的:先学win32的SDK,也就是API, 再学MFC,这么一来呢,就先有个基础,MFC是API的封装, 如果API用的熟了,MFC上手就轻松的多了。我觉得呢,现在不少WINDOWS编程入门的好书很多,多买一些,多看看,多想想。不要心浮气躁。我的经验就是一边看书,一
阅读全文
摘要:接上篇)VC 进阶:1. C 语言;2. C++ ,OOP;3. Windows 运作机理,SDK编程;4. MFC类库,应用程序框架编程;5. ActiveX,ATL,COM……每步骤通常需要6个月,最快也得3个月,诸位同意否? 学 VC 或 windows 编程分三 STEP:1. 只 SDK 提供的 Function 作开发,不要Object, 你会知 How to handle Message. 2. MFC 编程, 用 CEdit 等开发.3. 再用 VC如果你有一个别人的好程序, 不妨自己跟着他的思路,从小到大自己完成一遍。好书:<> 学习VC++有相当的内容要学,而最
阅读全文
摘要:基于Winsock API的VC网络编程实战 随着计算机信息技术的飞速发展,互联网与人类社会的工作、生活越来越紧密相关,它已经成为人类获取、交流信息的重要途径和手段。所以当前对于开发人员来说,网络编程已是必备的技能。本实例详细介绍了如何利用Winsock API编写网络应用程序。 一、实现方法 在网络编程中最常用的方案便是Client/Server (客户机/服务器)模型。在这种方案中客户应用程序向服务器程序请求服务。一个服务程序通常在一个众所周知的地址监听对服务的请求,也就是说,服务进程一直处于休眠状态,直到一个客户向这个服务的地址提出了连接请求。在这个时刻,服务程序被"惊醒&qu
阅读全文
摘要:MFC编写程序,都要用到动态链接库,MFC相关的动态库有MFCD42和MFC42等,MFC框架程序已经自动加载,那么如何引入第三方的动态链接库到工程中呢?静态链接库是要先把程序中所需要使用的函数编译成机器码,保存在*.lib文件中。编译器会去*.lib中找出所需要的函数,并把这些函数的机器码复制一份,放在可执行文件中。将lib库引入工程,有下面3种方法。第一种方法,lib文件直接加入到工程文件列表中。在VC中打开“File View”一页,选中工程名,单击鼠标右键,然后在弹出的快捷菜单中选择【Add Files to Project】命令,在弹出的文件对话框中选中要加入dll的lib文件即可。
阅读全文
摘要:Package vs. Namespace我们知道,重用性(reusebility)是软件工程中一个非常重要的目标。重用,不仅仅指自己所写的软件(代码、组件等等)可以被重复利用;更广义的重用是指不同的人,不同的团队,不同的公司之间可以互相利用别人的成果。另外,对于大型软件,往往是由多个团队共同开发的,这些团队有可能分布于不同的城市、地区、甚至国家。由于这些原因,名字管理成为一个非常重要的因素。由于C语言本身不提供名字管理的机制(C语言的static命名解决的是可见性问题,这些名字不会输出给外部,但我们要讨论的名字空间和这个问题并不完全一样),为了解决名字冲突的问题,大家一般会选取加前缀的方法;
阅读全文
摘要:static 有两种用法:面向过程程序设计中的static 和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明 static 在类中的作用。一、面向过程设计中的static 全局变量、局部变量、静态全局变量、静态局部变量的区别 C++变量根据定义的位置的不同的生命周期,具有不同的作用域,作用域可分为 6种:全局作用域,局部作用域,语句作用域,类作用域,命名空间作用域和文件作用域。 从作用域看: 全局变量具有全局作用域。全局变量只需在一个源文件中定义,就可以作用于所有的源文件。当然,其他不包含全局变量定义的源文件需要用 extern 关键字再次声明这个全局变量。
阅读全文
摘要:对于指针和常量,有以下三种形式都是正确的:const char * myPtr = &char_A;//指向常量的指针char * const myPtr = &char_A;//常量的指针const char * const myPtr = &char_A;//指向常量的常量指针下面依次对这三种类型进行介绍。因为*操作符是左操作符,左操作符的优先级是从右到左,对于1.常量指针(Constant Pointers)int * const p先看const再看* ,是p是一个常量类型的指针,不能修改这个指针的指向,但是这个指针所指向的地址上存储的值可以修改。实例1:Vie
阅读全文
摘要:非常惭愧,我过去也仅仅了解boost、STLport这样的库,以及一些GUI库,但是居然有如此众多的C++库,其实令我惊讶。当然,这个问题应该辩证的看,对于拿来主义确实可以直接使用这些库,但是如果学习和专业的开发,确实应该自己写,因为——适合的才是最好的。无论效率还是简洁性都是自己开发的好,否则还要那么多程序员干什么。程序就像做衣服,需要量身定做,拼凑起来的,一定不会好用,不过借鉴也是必须的,可以少走弯路。 还有什么库希望大家补充。 在C++中,库的地位是非常高的。C++之父 Bjarne Stroustrup先生多次表示了设计库来扩充功能要好过设计更多的语法的言论。现实中,C++的库门类..
阅读全文
摘要:现在的计算机图书发展的可真快,很久没去书店,昨日去了一下,真是感叹万千,很多陌生的出版社,很多陌生的作者,很多陌生的译者,书名也是越来越夸张,什么××天精通××,精通××编程, ××宝典等等,书的印刷质量真的很好,纸张的质量也是今非昔比啊,但书的内容好象却是越来越让人失望,也许是我老了,我的思想我的观念已脱离现实社会,也许是外面的世界变化得太快,我编程数月,出去一走,路已不是原来的路……回家看着书架上的旧书发呆,听着李克勤的旧欢如梦,才发现自已原来太喜欢怀旧. 笔者从事软件开发多年,其中有两年多的时间一直是与Win
阅读全文
摘要:我们将创建的第一种类型的库是动态链接库 (DLL)。 使用 DLL 是一种重用代码的绝佳方式。 您不必在自己创建的每个程序中重新实现同一例程,而只需对这些例程编写一次,然后从需要该功能的应用程序引用它们即可。本演练涵盖以下内容:创建新的动态链接库 (DLL) 项目。向动态链接库添加类。创建引用动态链接库的应用程序。在控制台应用程序中使用类库的功能。运行应用程序。系统必备本主题假定您具备 C++ 语言的基础知识。 如果您是刚开始学习 C++,建议您参阅 Herb Schildt 编写的“C++ Beginner's Guide”(《C++ 初学者指南》),该书可从http://go.mi
阅读全文
摘要:我们将创建的下一个库类型是静态库 (LIB)。 使用静态库是重用代码的一种绝佳方式。 您不必在自己创建的每个程序中重新实现同一例程,而只需对这些例程编写一次,然后从需要该功能的应用程序引用它们即可。本演练演示如何完成以下任务:创建静态库项目。向静态库添加类。创建引用静态库的控制台应用程序。在应用程序中使用静态库的功能。运行该应用程序。系统必备本主题假定您具备 C++ 语言的基础知识。 如果您是刚开始学习 C++,建议参阅 MSDN Library 中的此教程:第一层:C++ 初学者指南。创建静态库项目在“文件”菜单中,选择“新建”,然后选择“项目”。在“项目类型”窗格中,选择“Visual C
阅读全文
摘要:如果可能我想用打包类来实现。唉!,就叫我封装先生吧。 你算是找对地方了。但是我要先声明我的解决办法不是你所希望的-甚至也不是我自己所希望的! 什么是autocomplete呢?你也许已经注意到当你在IE的地址编辑框中敲入什么东西的时候,就会出现一个下拉组合框显示所有匹配敲入字符的URLs,亮条落在第一个匹配项上,你只要按下回车键就可以了(图一)。在“文件/打开”对话框及Windows其它地方也有相同的效果。Autocompletion真是个了不起的东西。可惜 到了Windows 2000才有,来得太迟了。 (图一) 我第一次看到你的问题时,说句实话,我还从来没有听说过 IAutoComple.
阅读全文
摘要:8推荐在浏览器中嵌入activex后,线程中触发的事件就没有动静了,如果在调试的情况下,还能发现浏览器有非法错发生。而同样的activex如果使用应用程序来调用则正常。解决方法是取巧的方式,在线程中发出消息,控件响应消息后再FireEvent。1.创建控件项目。 2.类向导, 使用 Add 方法将启动二线程并返回。 下面的代码显示方法启动二线程并立即返回 MFCActiveX 控件中。 全局函数以作为二线程工作函数还声明: LONG ThreadProc(LPVOID pParam); void CFireeventCtrl::StartLengthyProcess() { ...
阅读全文
摘要:1. 点击【开始】->【运行】 命令:regedit.2. 定位到HKEY_LOCALMACHINE -> SOFTWARE -> Microsoft -> Internet Explorer -> Main3. 在【右边区域】【右键】新建一个名称为TabProcGrowth的DWORD值, 数值数据设置为0.VS不用重启,直接可以按F5进行调试ActiveX了!参看: http://social.microsoft.com/Forums/en-US/vsdebug/thread/e2c795cd-b7a0-4fad-b7c9-b1ca40d7302e 网页中OC
阅读全文
摘要://比较好的教程ocx 在 win7 系统会出现注册需要管理员权限的问题,这时候需要用管理员身份运行 cmd,然后运行 regsvr32注册。很麻烦尝试使用 nsis 做成安装包, 采用 regdll 注册 ocx, 成功。ocx和外面的程序交互主要通过提供方法属性 + 事件 方法属性可以提供给js调用,事件可以给js 通过下面的方式进行回调注入<object id="xxx"></object><script language="JavaScript" for="xx" Event="even
阅读全文
摘要:.h 文件#define WM_TEST WM_USER + 1class CTestThread : public CWinThread{ DECLARE_DYNCREATE(CTestThread)protected: CTestThread (); virtual ~CTestThread ();public: virtual BOOL InitInstance(); virtual int ExitInstance();protected: afx_msg void OnTest(WPARAM wParam,LPARAM lParam); DECLARE_MESSAGE_MAP()}.
阅读全文
摘要:问题描述:新建一个MFC ActiveX工程,添加一对话框资源,上面有一些标准控件,如按钮、编辑框、树形列表等,并生成一个类CCtrlPanel。 在CXXXXCtrl类中: int CXXXXCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (COleControl::OnCreate(lpCreateStruct) == -1) return -1; m_CtrlPanel.Create(IDD_CTRLPANEL,this); //m_CtrlPanel在.h文件中申明为:CCtrlPanel m_CtrlPanel; ...
阅读全文
摘要:原文发表在[http://community.csdn.net/expert/Topicview2.asp?id=3072485]带子窗口的ActiveX控件问题,如何获取回车键? 问题:新建一个MFC ActiveX工程,添加一对话框资源,上面有一些标准控件,如按钮、编辑框等,并生成一个类CCtrlPanel。在CXXXXCtrl类中:int CXXXXCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct) {if (COleControl::OnCreate(lpCreateStruct) == -1) return -1;m_CtrlPanel.Cre
阅读全文
摘要:自 Panr 的 Blog // 关键词:// 面对对象编程、超类化、子类化、Superclassing// MFC、CWnd::SubclassWindow// 通用控件、CMNCTRL//// 主题:// 通过CWnd::SubclassWindow 函数的分析,浅谈MFC中超类化技术的实现////// 背景// 我在2002-12月见了mahongxi (烤鸡翅膀)(色摸)在CSDN上的一个帖// 介绍了MFC中窗体的超类化的概念,以下是对我个人回贴的总结//// 日志// 修改:Panr 2002-12-15 13:30 版式整理,转帖到CSDN文档中心// 修改:Pa...
阅读全文
摘要:孙鑫VC学习笔记:ActiveX 控件作者:华仔|录入时间:2007-12-26|点击:313次打印此文章|字体:大中小基本概念:容器和服务器程序 容器应用程序时可以嵌入或链接对象的应用程序。Word 就是容器应用程序。服务器应用程序是创建对象并且当对象被双击时,可以被启动的应用程序。Excel 就是服务器应用程序。ActiveX 控件不能独立运行,它必须被嵌入容器应用程序中,和容器应用程序一起运行。---------------------------------------------------------------------------------编写一个 ActiveX 时钟控件
阅读全文
摘要:本文简单介绍了当前Windows支持的各种Socket I/O模型,如果你发现其中存在什么错误请务必赐教。一:select模型二:WSAAsyncSelect模型三:WSAEventSelect模型四:Overlapped I/O 事件通知模型五:Overlapped I/O 完成例程模型六:IOCP模型老陈有一个在外地工作的女儿,不能经常回来,老陈和她通过信件联系。他们的信会被邮递员投递到他们的信箱里。这和Socket模型非常类似。下面我就以老陈接收信件为例讲解Socket I/O模型~~~一:select模型老陈非常想看到女儿的信。以至于他每隔10分钟就下楼检查信箱,看是否有女儿的信~~~
阅读全文
摘要:一。程序运行效果图二。程序源代码三。程序设计相关基础知识 1.计算机网络 2.IP地址 3.协议 4.网络体系结构 5.TCP/IP体系结构与特点 6.客户机/服务器模式 7.TCP/IP特点 8.套接字的引入 9.面向 连接/无连接 的套接字的系统调用时序图/流程图一。程序运行效果图二。程序源代码[cpp] view plaincopyprint?//server.cpp #include<iostream> #include<cstdio> #include<Winsock2.h> usingnamespacestd;intmain(){//加载sock
阅读全文
摘要:单个服务器对多个客户端程序: 一。简要说明二。查看效果三。编写思路四。程序源代码五。存在问题一。简要说明:程序名为:TcpSocketOneServerToMulClient程序功能:实现单个服务器对多个客户端通讯功能的小程序。PS: 这是继上次简单的 Tcp Windows Socket 编程后的再一程序,程序实现依然不是很严谨,还待完善~二。查看效果:三。编写思路:由上一次的程序思路来看,如果想实现单个服务器对多个客户端程序的通讯的话,这次程序编写尝试从多线程的角度来考虑问题:在服务器的实现中:可以main函数作为主线程,不断地接客户端的连接请求。 再新建子线程——每连接一个客户端,就专为
阅读全文
摘要:IOCP模型与网络编程一。前言: 在老师分配任务(“尝试利用IOCP模型写出服务端和客户端的代码”)给我时,脑子一片空白,并不知道什么是IOCP模型,会不会是像软件设计模式里面的工厂模式,装饰模式之类的那些呢?嘿嘿,不过好像是一个挺好玩的东西,挺好奇是什么东西来的,又是一个新知识啦~于是,开始去寻找一大堆的资料,为这个了解做准备,只是呢,有时还是想去找一本书去系统地学习一下,毕竟网络的资料还是有点零散。话说,本人学习这个模型的基础是,写过一个简单的Socket服务器及客户端程序,外加一个简单的Socket单服务器对多客户端程序,懂一点点的操作系统原理的知识。于是,本着一个学习与应用的态度开始探
阅读全文
摘要:最近看到网上说include包含路径的说法比较乱,而且有一些有错误,在此纠正一下,做下记录: include头文件时的参考路径是 相对于本文件的路径 即: 1.h中#include “2.h”时,是相对于1.h文件所在目录的路径; 1.cpp中#include “2.h”时,是相对于1.cpp文件所在目录的路径;
阅读全文
摘要:解决方法是在CDialog::PreTranslateMessage() 的重载函数中将ESC和回车按键的消息处理掉. 直接上代码: CResultCollectorDlg::PreTranslateMessage(MSG* pMsg) { if(pMsg->message == WM_KEYDOWN) { switch(pMsg->wParam) { case VK_RETURN: //回车 return TRUE; case VK_ESCAPE: //ESC return TRUE; } } return CDialog::PreTranslateMessage(...
阅读全文
摘要:使用Tab Control,并且从CTabCtrl控件类继承自己的类(CTabSheet)来处理。 首先我先介绍一下如何使用CTabSheet。 先要制作子对话框类,这次的子对话框类不要从CPropertyPage继承,而是直接从CDialog继承。并且各个子对话框资源的属性应设置为:Style为Child, Border为None。 在主对话框资源中,加入一个Tab Control,并且适当调整位置和大小。利用ClassWizard来为这个Tab Control创建一个CTabSheet的控件变量。 步骤/方法 在主对话框的OnInitDialog()加入: m_sheet.Add...
阅读全文
摘要:1. 利用VisualC++新建一个对话框2. 对话框类的继承特性:cobject ccmdtarget cwnd //由cwnd派生,是一个窗口类 cdialog在VC++ 中,一个窗口与一个C++类进行关联,对话框的基类为CDialog 类。对话框分为模态对话框与非模态对话框,模态对话框在应用程序能进行其它操作之前必须关闭,非模态的对话框允许不关闭对话框而进行应用程序操作.MSDN中的说明:This class is the base class used for displaying dialog boxes on the screen. Dialog boxes are of two
阅读全文
摘要:在写 头文件的时间 经常会有一些 class QFile 等这类 看似 是声明的东西..例如下面#ifndef WINDOW_H#define WINDOW_HQT_BEGIN_NAMESPACEclass QTcpServer;class QTcpSocket;class QProgressBar;class QLabel;class QDialogButtonBox;class QFile;QT_END_NAMESPACE//code endclass QAction;class QCheckBox;...如果没有 声明 将会 出现类似下面的错误ISO C++ forbids declar
阅读全文
摘要:一,问题描述MSVCRTD.lib(crtexew.obj) : error LNK2019:无法解析的外部符号_WinMain@16,该符号在函数___tmainCRTStartup中被引用Debug\jk.exe : fatal error LNK1120: 1个无法解析的外部命令error LNK2001: unresolved external symbol _WinMain@16debug/main.exe:fatal error LNK 1120:1 unresolved externalserror executing link.exe;二,产生这个问题可能的原因产生这个问题的真
阅读全文
摘要:一、汉字编码的种类汉字编码中现在主要用到的有三类,包括GBK,GB2312和Big5。 1、GB2312又称国标码,由国家标准总局发布,1981年5月1日实施,通行于大陆。新加坡等地也使用此编码。它是一个简化字的编码规范,当然也包括其他的符号、字母、日文假名等,共7445个图形字符,其中汉字占6763个。我们平时说6768个汉字,实际上里边有5个编码为空白,所以总共有6763个汉字。 GB2312规定“对任意一个图形字符都采用两个字节表示,每个字节均采用七位编码表示”,习惯上称第一个字节为“高字节”,第二个字节为“低字节”。GB2312中汉字的编码范围为,第一字节0xB0-0xF7(对应十..
阅读全文
摘要:msvcprt.lib(MSVCP90.dll) : error LNK2005: "public: void __thiscall std::_Mutex::_Lock(void)" (?_Lock@_Mutex@std@@QAEXXZ) 已经在 libcpmtd.lib(xmutex.obj) 中定义好几百条网上说解决办法:保证需要链接的几个项目的运行时库使用同一个类型就OK了!例如我的工程中有GameCore、Plugin_D3D9RenderSystem、Plugin_Win32Platform三个工程,那么就去设置每个工程的C/C++ ->代码生成->
阅读全文
摘要:很久没有写程式设计入门知识的相关文章了,这篇文章要来谈谈程式库 (Library) 连结,以及关于 MSVC 与 CRT 之间的种种恩怨情仇。如果你使用的作业系统是 Linux、Mac 或其他非 Windows 平台,你可以忽略这篇文章;如果你使用的作业系统是 Windows 平台,但没有用 Microsoft Visual Studio C++(以下简称为 MSVC)软体撰写 C++ 程式的话,这篇文章对你的帮助可能很有限;但如果你的作业系统是 Windows,而且你使用的程式整合开发环境是 MSVC 软体撰写 C++ 程式的话,这篇文章应该能够帮助你釐清一些重要的基础观念。身为程式设计者,
阅读全文
摘要:为什么会出现这个错误??“error LNK2005: 已经在aaa.obj中定义”编程中经常能遇到LNK2005错误——重复定义错误,其实LNK2005错误并不是一个很难解决的错误。弄清楚它形成的原因,就可以轻松解决它了。 造成LNK2005错误主要有以下几种情况: 1.重复定义全局变量。可能存在两种情况: A、对于一些初学编程的程序员,有时候会以为需要使用全局变量的地方就可以使用定义申明一下。其实这是错误的,全局变量是针对整个工程的。正确的应该是在一个CPP文件中定义如下:int g_Test;那么在使用的CPP文件中就应该使用:extern int g_Test即可,如果还是使用int
阅读全文
摘要:我们以CListCtrl控件为例来分析WM_NOTIFY消息。CListCtrl控件在Report样式下会包含CHeaderCtrl标头控件,即CHeaderCtrl标头控件为CListCtrl控件的子控件,所以不难理解,拖动CHeaderCtrl标头控件的列分隔栏会投递HDN_BEGINTRACK消息(WM_NOTIFY消息,通知码为HDN_BEGINTRACK)给其父窗口CListCtrl控件。但是,我们在对话框窗口中也可以收到CHeaderCtrl标头控件的HDN_BEGINTRACK消息,这作何解释呢?如下所示:我们在对话框窗口中响应HDN_BEGINTRACK消息,当开始拖动标头控件
阅读全文
摘要:boost::lexical_cast为数值之间的转换(conversion)提供了一揽子方案,比如:将一个字符串"123"转换成整数123,代码如下:strings="123"; inta=lexical_cast<int>(s);这种方法非常简单,笔者强烈建议大家忘掉std诸多的函数,直接使用boost:: lexical_cast。如果转换发生了意外,lexical_cast会抛出一个bad_lexical_cast异常,因此程序中需要对其进行捕捉。现在动手编写如下程序,体验如何使用boost:: lexical_cast完成数值转换。
阅读全文
摘要:参考文章:白乔原创:VC之美化界面篇在每个控件开始绘制之前,都会向其父窗口发送WM_CTLCOLOR通告消息,在该消息的处理函数中,可以设置控件显示文本的前景色、背景色以及字体。该消息处理函数还要求返回一个画刷的句柄,用于在控件具体的绘制之前擦除其客户区。WM_CTLCOLOR映射消息处理函数为afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)。常用代码为:[cpp] view plaincopyprint?pDC->SetTextColor(RGB(255,0,0));//设置文本前景色 pDC->Set
阅读全文
摘要:1. MFC的消息反射机制http://blog.csdn.net/cay22/article/details/61716162. CButtonST v3.9http://www.codeproject.com/Articles/57/CButtonST-v3-9-MFC-Flat-buttons3. 白乔原创:VC之美化界面篇http://blog.csdn.net/bluejoe2000/article/details/4269540#comments4. MoreWindows:秒杀多线程系列http://blog.csdn.net/morewindows/article/detail
阅读全文
摘要:代码下载:subclass(请点击进入论坛回复以后下载)也许你需要一个特殊的Edit来限制浮点数的输入,但是现有的Edit却并不能完成这项工作――因为它只能够单纯的限制大小写或者纯数字。当你在论坛上求救的时候,某个网友告诉你:“用子类化。”你也许会在看到一线曙光的同时多出了一连串的问题:何为子类化?子类化的原理是什么?如何实现子类化?下面就让我从一个简单的C++程序开始,一步步解开你的疑团吧。 首先,我为你列出以下这个C++程序:01.#include <iostream>02.usingnamespacestd;03.classParent04.{05.public:06.voi
阅读全文
摘要:Win32下的消息流程清晰明了,但在MFC下,由于封装的缘故,隐藏的有点深,对一般的开发人员而言,就不甚明了喽。本文试图粗略展示出MFC下消息处理的基本流程。一、先看一下Win32下的消息处理流程 每一个线程都对应有一个消息队列,利用API函数GetMessage从消息队列中获取消息,然后利用TranslateMessage翻译消息(主要是一些键盘消息),再利用DispatchMessage将消息分发给对应的窗口过程函数处理。 一般我们在WinMain函数中利用如下代码来处理消息:[cpp] view plaincopyprint?while(GetMessage(&msg,NUL..
阅读全文
摘要:目标由于医保是目前与HIS系统唯一需要接口的业务,且由于各地区的医保接口不相同,也不相通,但是主要的业务的处理模型基本上是相通的,即都需要进行收费明细处理.为满足能够灵活的支持各种医保接口且减少我们自己的HIS系统与医保接口的强藕合,则需要对医保的业务处理进行必要的抽象建模.但是,由于B/S系统需要考虑交互上的问题,则对这个业务的需求就需要使用JS来完成.JS有一定的面向对象的机制,但不是很全面,目前的了解应该可以采用变通的方式实现抽象.JS对象模型1.对象图这里,采用了类图的描述方式,但是实现的方式需要采用变通的方法1. OCXBase:OCX完成与对本地医保的接口调用封装,使JS可以与医保
阅读全文
摘要:比如我有两个变量,我要将a转换成字符串,将b转换成JSON对象:view sourceprint?1var a={"name":"tom","sex":"男","age":"24"}; 23var b='{"name":"Mike","sex":"女","age":"29"}';在Firefox,chrome,opera,safari,ie9
阅读全文
摘要:我很早的时候写过一篇MFC中CDialog与其对话框资源的绑定,但这几天在MFC DLL上做了一些工作后发现当时的理解实在肤浅。说不定过了几年再回头看看目前这篇文章,又觉得本文也是鬼话连篇了吧,哈哈。使用DLL中的资源面临的一个主要问题是,DLL和EXE中都有资源集,但是程序在运行态到底会去哪个资源集中找常常令我们疑惑。考虑如下的经典情况:在新建MFC DLL工程时选中Regular DLL using shared MFC DLL选项,新建一个与MFC自身DLL共享的DLL。在新DLL中新建一个ID名为IDD_DLLDIALOG的对话框资源。在这个DLL中导出一个ShowDialog()函数
阅读全文
摘要:最近对于对话框选定资源的过程有了更进一步的了解按一般的风格,MFC的对话框中一般都会有这么一行:enum { IDD = xxxxx };在这个对话框的构造函数里一般会这样写查看源代码打印帮助1InvoiceDialog::InvoiceDialog(CWnd* pParent /*=NULL*/) : 2CDialog(InvoiceDialog::IDD, pParent), 3m_Invoice(NULL) 4{ 5//{{AFX_DATA_INIT(InvoiceDialog) 6// NOTE: the ClassWizard will add member initializati
阅读全文
摘要:1. int to string一、使用atoi说明:itoa( int value, char *string, int radix ); 第一个参数:你要转化的int; 第二个参数:转化后的char*; 第三个参数:你要转化的进制; 举例://------------------------------------- //功能:C++ int 转 string (使用atoi) //环境:VS2005 //------------------------------------- #include "stdafx.h" #include <iostream>
阅读全文
摘要:setCapture函数的作用就是将后续的mouse事件都发送给这个对象,releaseCapture就是将鼠标事件还回去,由 document、window、object之类的自行来处理。这样就保证了在拖动的过程中,不会由于经过了其它的元素而受到干扰-另外,还有一个很重 要的事情是,在Win32上,mouse move的事件不是一个连续的,也就是说,并不是我们每次移动1px的鼠标指针,就会发生一个mousemove,windows会周期性检查mouse 的位置变化来产生mousemove的事件。 所以,如果是一个很小的页面对象,比如一个直径5px的圆点,如果没有setCapture和 rel
阅读全文
摘要:ClipCursor 函数功能:该函数把鼠标限制在屏幕上的一个矩形区域内,如果调用SetCursor或用鼠标设置的一个随后的鼠标位置在该矩形区域的外面,则系统自动调整该位置以保持鼠标在矩形区域之内。 函数原型:BOOL ClipCursor(CONST RECT * lpRect); 参数: IpRect:指向RECT结构的指针,该结构包含限制矩形区域左上角和右下角的屏幕坐标,如果该指针为NULL(空),则鼠标可以在屏幕的任何区域移动。 返回值:如果成功,返回值非零;如果失败,返回值为零。若想获得更多错误信息,请调用GetLastError。 备注: 1.光标是一个共享资源,如果...
阅读全文
摘要:在网上找了一段代码,能工作,但是颜色不对,红的变成蓝色的,黄的变青色了,有时间找找问题。这个问题在我初学DirectX是困惑了我很久,贴出来为初学者提供一个参考。#include "ddraw.h" #pragma comment(lib,"ddraw.lib")#define FILE_HEIGHT 288 #define FILE_WIDTH 352#define DRAW_TOP 0 #define DRAW_LEFT 0 #define DRAW_HEIGHT 288 #define DRAW_WIDHT 352BOOL DrawYV12(HWN
阅读全文
摘要:[背景] 做过ActiveX控件的朋友都知道,要想把自己做的ActiveX控件功能放在自己的网页上使用,那么用户在客户端就必须进行本地的注册,也就是说用户得首先要把该ActiveX控件(test.ocx)放在本机的%system%/system32下,然后运行DOS工具里面运行regsvr32 test.ocx命令进行注册。但如果真是这么去做的话,那么代表着你处于危险之中了,因为您是通过让用户自己去部署设置环境来达到你的目的,这就失去软件项目本身所存在的价值。那么面对这种情况,我们应该如何解决呢?聪明的你一定会很快就想到,我们可以使用户在客户端自动下载安装该ActiveX控件,这样一来即可以实
阅读全文
摘要:ActiveX 控件是基于组件对象模型 (COM) 的可重用软件组件,广泛应用于桌面及Web应用中。在VC下ActiveX控件的开发可以分为三种,一种是直接用COM的API来开发,这样做显然非常的麻烦,对程序员要求也非常高,因此一般是不予考虑的;一种是基于传统的MFC,采用面向对象的方式将COM的基本功能封装在若干MFC的C++类中,开发者通过继承这些类得到COM支持功能。MFC为广大VC程序员所熟悉,易于上手学习,但缺点是MFC封装的东西比较多,因此用MFC开发出来的控件相对会比较大,因此比较适于开发桌面ActivexX控件,尤其是有GUI界面的控件。第三种就是基于ATL的,ATL可以说是专
阅读全文
摘要:绍:CPPToolTip是一个非常棒的工具提示实现,它支持HTML-lite语句、CSS样式表、菜单、工具条、淡入淡出、超链接、动画、表格等等超强功能。 正文:下载源代码CPPToolTip是一个非常棒的工具提示实现,它支持HTML-lite语句、CSS样式表、菜单、工具条、淡入淡出、超链接、动画、表格等等超强功能。一、使用CPPToolTip的第一步:文件的引用文件描述PPTooltip.hPPTooltip.cppCPPTooltip 类PPHtmlDrawer.h PPHtmlDrawer.cppCPPHtmlDrawer类. 在tooltip里画出HTML字符串。PPDrawManag
阅读全文
摘要:SmartWin++遵循BSD许可协议的C++ GUI库,建立在Windows API之上,但仍可以通过使用WineLib在Linux/xNix上使用。也支持Pocket PC和基于Windows CE的应用程序...XCLASSXCLASS库是X Windows环境中的一个C++ GUI工具包的。它是基于Xlib的,由一套组件,包括从简单部件到复杂的,其中也包括许多常用的对话框。组件有MS Windows外观风格。Windows++Windows++是一个轻量级的C++应用程序框架,它可以让你的C++程序中使用窗口FOXFOX是一个C++开发图形用户界面库,方便和有效的基础工具包。V C++
阅读全文
摘要:(1)ACE庞大、复杂,适合大型项目。开源、免费,不依赖第三方库,支持跨平台。http://www.cs.wustl.edu/~schmidt/ACE.html(2)AsioAsio基于Boost开发的异步IO库,封装了Socket,简化基于socket程序的开发。开源、免费,支持跨平台。http://think-async.com/(3)POCOPOCO C++ Libraries 提供一套 C++ 的类库用以开发基于网络的可移植的应用程序,功能涉及线程、线程同步、文件系统访问、流操作、共享库和类加载、套接字以及网络协议包括:HTTP、 FTP、SMTP 等;其本身还包含一个 HTTP 服务
阅读全文
摘要:下载源代码一.前言在实际运用中,经常需要根据操作来增减菜单和菜单项。在VC++开发环境下,动态生成菜单的方法有多种。例如:可以利用资源编辑器创建菜单资源,然后在程序运行中动态加入菜单,这种动态生成菜单的方法比较常见,运用比较多。用这种方法动态增加菜单时,首先需要在Resource.h中添加菜单ID;由于是动态生成的菜单选项,所以要实现它的功能就不能在ClassWizard中映射函数了,需要在头文件中手动添加消息函数原型,在代码文件中手动添加消息映射和添加消息响应函数。动态生成菜单的另一种方法,不能事先对每个菜单ID进行定义,比如从数据库中读出的每条记录内容动态添加为菜单项,菜单项的数量不是固定
阅读全文
摘要:窗口样式参考列表WS_POPUP - 弹出式窗口(不能与WS_CHILDWINDOW样式同时使用)WS_CHILDWINDOW - 子窗口(不能与WS_POPUP合用)WS_MINIMIZE - 最小化状态WS_VISIBLE - 可见状态WS_DISABLED - 不可用状态WS_CLIPSIBLINGS - 使窗口排除子窗口之间的相对区域WS_CLIPCHILDREN - 当在父窗口内绘图时,排除子窗口区域WS_MAXIMIZE - 具有最大化按钮,须指定WS_SYSTEM样式WS_CAPTION - 有标题框和边框(和WS_TILED样式相同)WS_BORDER - 有单边框WS_DLG
阅读全文
摘要:菜单项属性说明:ID 标识菜单的唯一常量。Caption 菜单项标题,“&" 后面的字符为快捷键,在菜单项后的字符将加下划线。Separator 水平线,其它属性无效。Pop_up 有子菜单Grayed 无效,标题以灰色显示Inactive 无效,标题正常显示Checked 在标题前加一个对钩break 为None时,使它和它的兄弟们一行或一列显示。Help 只对最上层菜单项有效,使它及后面的最上层菜单移到窗口的右上角。Prompt 当鼠标指向它时的提示信息多文档应用程序除了生成IDR_MAINFRAME外,还生成标识符为IDR_xxxxTYPE,其中xxxx为应用程序名。它
阅读全文
摘要:CMenu类从CObject类派生而来。为什么要使用CMenu类呢?AppWzard不是把菜单做好了吗?在资源编辑器上修改菜单不是很方便吗?我是个vc++初学者,自从当斑竹以来,天天看贴子,也学到了不少东西。感觉学vc++稍微深入一点好,至少要能搞清楚AppWizard在背后都干了些什么东西。 事实上mfc就是用CMenu类来生成菜单的。让我们就从CMenu开始吧。CMenu生成的菜单有两种:Popup类型和非Popup类型。这两种方法里又可以分成使用资源编辑器生成的菜单资源和不使用这个资源。对于非Popup类型的菜单,必须在创建出来后把它张贴到某个窗口上,它才会显示出来,从而才有用处。Po
阅读全文
摘要:1.AfxWndProc()该函数负责接收消息,找到消息所属的CWnd对象,然后调用AfxCallWndProc 2.AfxCallWndProc() 该函数负责保存消息(保存的内容主要是消息标识符和消息参数)供应用程序以后使用,然后调用WindowProc()函数 3.WindowProc()该函数负责发送消息到OnWndMsg()函数,如果未被处理,则调用DefWindowProc()函数 4.OnWndMsg()该函数的功能首先按字节对消息进行排序,对于WM_COMMAND消息,调用OnCommand()消息响应函数,对于WM_NOTIFY消息调用OnNotify()消息响应函数。任何被
阅读全文
摘要:CreateMenu和CreatePopupMenu都是用来创建菜单,都可以用AppendMenu 或InsertMenu 向其中添加菜单。两者的不同点在于使用TrackPopupMenu 上:例:CMenu menu;menu.CreateMenu();menu.AppendMenu(MF_STRING, 23423, _T("sdfwef"));menu.AppendMenu(MF_STRING, 23423, _T("sdfwef2"));menu.TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, po
阅读全文
摘要:之前有学过ASP.NET MVC 3,但那也只是浮光掠影般的看了看而已,这次专门接了本书,系统的学习下,这里只是摘录总结一些重点而已,并非详细的介绍,算是读书笔记吧,希望可以对大家有所帮助。第一章入门1.1.2MVC模式简介MVC(Model-View-Contorller)模式是一种用户界面模式,将应用程序的用户界面分为三部分:l模型:组类,描述要处理的数据以及修改和操作数据的业务规则l视图:定义应用程序用户界面的显示方式l控制器:一组类,用于处理来自用户、整个应用程序流程及其特定应用程序逻辑的通信1.1.3MVC在web框架中的应用在ASP.NETMVC中,MVC的三个主要部分的定义如下:
阅读全文
摘要:视图3.1视图的作用视图的职责是向用户提供用户界面,向它提供对模型的引用后,它会将模型转换为准备提供给用户的格式。在ASP.NETMVC中这个过程由两部分组成:检查控制器提交的ViewDataDictionary(通过ViewData属性访问),另一部分是将其内容转换为HTML格式从ASP.NETMVC3开始,视图数据可以通过ViewBag属性访问,该属性是动态的,语法简单,可以访问通过ViewData属性访问的相同数据。封装了ViewData,因此可以用类似访问属性的语法来检索字典中的值,如:ViewBag.Message等同于ViewData["Message"]两者的
阅读全文
摘要:5.1表单的使用5.1.1action和method的特性表单是包含输入元素的容器,包含按钮、复选框、文本框等元素,表单的这些输入元素使得用户能够向页面中输入信息,并把输入信息提交给服务器。Action特性告知浏览器将URL提交到哪里,method特性来说明用何种方式告知浏览器,默认为get方法5.1.2Get和Post方法1、如果不想让浏览器把输入值放入查询字符串中,而是想放入HTTP请求的主体中,可以为method赋值post,post可以用来提交信用卡信息、向购物车添加专辑或者修改密码等,post请求通常会改变服务器上的状态,重复提交等。POST请求用于写操作2、Get请求所有的参数都在
阅读全文
摘要:Web开发中,目前由于Jquery的大行其道,因此很多弹出对话框,都用到了Jquery技术,反而原始的弹出对话框的方式较为少用了。不过基于JQuery的方式实现对话框窗口弹出,也有很多控件可以利用,由于工作需要及业余兴趣所至,我比较了近10种的对话框控件,其中发现有一些做得很好的,除了功能强大,而且也支持多种皮肤样式,甚至有些对话框的居中都考虑到了,细节决定体验,有些真的不错。1、原始的弹出对话框实现(弹出窗口也可以)我们知道,以前在没有应用其他javascript库(例如各种类型的Jquery库)的时候,一般是通过window.open或者window.showModalDialog来弹出非
阅读全文