VC/MFC/Windows
farrellcn
这个作者很懒,什么都没留下…
展开
-
两个终止线程函数:ExitThread 和 TerminateThread
终止线程两个函数:ExitThread 和 TerminateThread 1 若要终止线程的运行,可以使用下面四种的方法: 线程函数退出循环来返回 (最佳方法 )。 通过调用ExitThread 函数,线程将自行撤消(尽量不要使用这种方法 )。 同转载 2011-05-16 11:47:00 · 1184 阅读 · 0 评论 -
VC异常处理
转自:http://blog.csdn.net/dyf7970268/article/details/6413327SEH定义 SEH("Structured Exception Handling"),即结构化异常处理.是(windows)操作系统提供给程序设计者的强有力的处理程序错误或异常的武器。 在VISUAL C++中你或许已经熟悉了_try{} _finally{} 和_tr转载 2012-02-08 13:24:17 · 1559 阅读 · 0 评论 -
利用SEH处理Unhandle Exception
昨天同事在使用我写的上位机配置软件时出了点问题,由于同事下位机初始化参数配置不正确,传给上位机软件的数据格式不对,导致配置软件内存泄露。同事让我在上位机软件加一个异常处理,然后由用户对下位机进行恢复出厂设置。有异常处理是写程序最基本的,但是前期图省事就没加,同事说了后,我想在程序里处理下位机传过来数据的地方加个try/catch就行了,加了过后发现程序捕获不到这个异常,仍旧会弹出内存读写错误。于是原创 2012-02-08 12:02:51 · 3287 阅读 · 0 评论 -
用spy++ 查看消息
Windows程序都是基于消息机制的,每个程序中都会有各种各样的消息,如果想通过消息来控制程序的运行,我们只用关心程序中的命令消息(WM_COMMAND)就行了,其他关于程序界面等等的消息,可以不管。要查看程序运行的消息,使用Visual Studio中自带的工具spy++。打开spy++,选择 spy|Windows,然后就会显示出当前的所有窗口,一些主窗口中的字窗口也会显示转载 2012-12-11 17:35:28 · 845 阅读 · 0 评论 -
ON_COMMAND ON_MESSAGE ON_NOTIFY区别与联系
ON_COMMAND是菜单和工具栏项处理消息的宏ON_MESSAGE是处理自定义消息的宏ON_NOTIFY 是控件向其父窗口发送消息处理的宏对这几个消息的理解要先了解一下Window消息的背景。在Windows3.1里,控件会将mouse, keybord等等的消息通知它的父窗口, 使用的消息就只有WM_COMMAND, 事件种类和控件ID被包含在wParam中, 控件转载 2012-12-25 13:31:11 · 365 阅读 · 0 评论 -
list control排序问题
这些时候研究ListControl的排序,真是头都要大了,我的情况是在一个 dialog上放了多个ListControl,要在点击其中一个的一列的时候进行排序,在网上找了好多资料,讲得都不是很清楚,现在想来,不是没讲到要点,就是讲得太不清楚,让人云里雾里的,真是郁闷啊,讲清楚了的就没一个!!都是缺这少那的,走了不少错路,唉~~~ ListControl排序,是要靠参数项(LVIF_转载 2012-12-13 17:53:20 · 3523 阅读 · 0 评论 -
获取 list control 中 单元格内容
添加一个 list 控件 变量 m_list:POSITION pos = m_list.GetFirstSelectedItemPosition();if (pos != NULL) { int nItem = m_list.GetNextSelectedItem(pos); CString strText = m_list.GetItemText(nItem,4)转载 2012-12-14 10:33:32 · 14345 阅读 · 0 评论 -
CListCtrl非第一列添加图标
一.CListCtrl在第一列添加图标CListCtrl可以很方便的在第一列添加图标, 并且在不同的显示方式(1:LVS_ICON: 为每个item显示大图标;2:LVS_SMALLICON: 为每个item显示小图标;3: LVS_LIST: 显示一列带有小图标的item;4:LVS_REPORT: 显示item详细资料)下, 都可以把第一列的图标显示出来.。具体方法为:转载 2012-12-17 15:51:25 · 997 阅读 · 1 评论 -
DLL编写教程
半年不能上网,最近网络终于通了,终于可以更新博客了,写点什么呢?决定最近写一个编程技术系列,其内容是一些通用的编程技术。例如DLL,COM,Socket,多线程等等。这些技术的特点就是使用广泛,但是误解很多;网上教程很多,但是几乎没有什么优质良品。我以近几个月来的编程经验发现,很有必要好好的总结一下这些编程技术了。一来对自己是总结提高,二来可以方便光顾我博客的朋友。好了,废话少说,言归正传转载 2014-01-20 07:43:25 · 483 阅读 · 0 评论 -
Delphi 调用 c编写的动态链接库,结构体指针作为参数
折腾了一天终于把 结构体指针作为在delphi和c动态链接库之间函数参数传递的问题彻底解决了,花了一天时间的主要原因是没有领会参数传递的精髓。现在把c代码和delphi代码粘上来,以供后来者学习参考。delphi程序代码:unit Unit3;interfaceuses Windows, Messages, SysUtils, Variants, Classes, G转载 2014-01-20 07:44:38 · 2512 阅读 · 0 评论 -
Windows程序员需要学什么
转自:http://www.cnblogs.com/pugang/archive/2011/11/26/2264107.html经常发现有人在网上提出这样的问题,现实中也确实有不少人在经历了3-5年的Windows开发之后就开始迷失方向,每天浑浑噩噩混日子,可能是因为这个问题粒度太大,没人愿意花时间回答,希望本文可以抛砖引玉,给大家节省些时间,同时也希望园子里面的兄弟们能尽力的补充,从而使转载 2017-08-17 09:34:10 · 593 阅读 · 0 评论 -
Windows消息机制
消息送到正确的线程消息队列大家都知道在键盘输入或点击鼠标时,Windows会将这些消息事件送入系统消息队列,再由系统消息队列送入相应程序的线程队列,那么Windows是如何知道这些鼠标或键盘输入是在哪个窗口发生,又是如何将消息送入正确的线程队列的呢?当用户键盘输入时,系统会找到当前的激活窗体;而根据用户点击鼠标的坐标,系统也可以找到是在哪个窗体区域内点击了鼠标,从而拿到窗体句柄。操作系统在原创 2017-08-10 13:49:54 · 279 阅读 · 0 评论 -
Windows客户端开发技能树
原创 2017-08-16 17:35:30 · 4632 阅读 · 0 评论 -
Windows共享内存示例
共享内存主要是通过映射机制实现的。 Windows 下进程的地址空间在逻辑上是相互隔离的,但在物理上却是重叠的。所谓的重叠是指同一块内存区域可能被多个进程同时使用。当调用 CreateFileMapping 创建命名的内存映射文件对象时,Windows 即在物理内存申请一块指定大小的内存区域,返回文件映射对象的句柄 hMap。为了能够访问这块内存区域必须调用 MapViewOfFile 函数转载 2017-08-21 16:17:37 · 406 阅读 · 0 评论 -
Layered windows and UpdateLayeredWindow 分层窗口
前段摘自MSDN的详尽介绍:http://msdn.microsoft.com/en-us/library/ms997507.aspxRecently I was playing with transparent (layered) windows in Windows XP.The basic information about layered windows is转载 2017-09-05 00:04:16 · 3333 阅读 · 0 评论 -
分层窗口(Layered windows)翻译
Janky_H contact me at Janky_H@hotmail.com 原文:https://msdn.microsoft.com/en-us/library/ms997507.aspx Layered WindowsWindows 2000 introduces a new extended window style bit:转载 2017-09-05 10:42:55 · 2101 阅读 · 0 评论 -
让程序在崩溃时体面的退出之SEH
转自:http://blog.csdn.net/starlee/article/details/6636723SEH的全称是Structured Exception Handling,是Windows操作系统提供的一种异常处理方式。SEH是属于操作系统的特性,不为特定语言设计,从它的名字就能看出它是一种结构化的异常处理方式。SEH包括了2个部分:终止处理__try/__finally和异常转载 2012-02-07 16:33:38 · 505 阅读 · 0 评论 -
让FormView上的控件大小随父窗口改变
今天写DTU服务器测试程序时,想要让RICHEDIT控件在程序窗口大小改变时随着变化,使其可以在任何时候都填满信息输出窗口。我的RichEdit控件是放在一个CFromView对象上的。在网上搜了一下,当窗口大小发生改变时,会发出WM_SIZE消息,响应该消息的函数为Cwnd::OnSize(UINT nType,int cy,int cy),OnSize参数的解释:nTypeSpecif原创 2012-01-05 17:57:40 · 6047 阅读 · 0 评论 -
实模式与保护模式
一直以来,都搞不清楚这几个概念。在网上搜了一下,把它晒上,不会再忘记! 有其它的内容,请看到的朋友请补充。 从80386开始,cpu有三种工作方式:实模式,保护模式和虚拟8086模式。只有在刚刚启动的时候是real-mode,等到linux操作系统运行起来以后就运行转载 2011-05-12 10:11:00 · 300 阅读 · 0 评论 -
VC连接MYSQL找不到MYSQL.H文件
你没有安装,API在include目录,重新安装mysql另外在vc 工具-选项-目录加上include files路径 ,如D:\MYSQL5\INCLUDE加上library files 路径 D:\MYSQL5\LIB\DEBUG在工程-设置-连接 加上对象转载 2011-10-12 14:31:53 · 2027 阅读 · 0 评论 -
MFC学习笔记(一)之虚函数、纯虚函数、抽象类
1、只要是拥有纯虚函数的类,就是一种抽象类,它是不能够被实例化的。也就是说,你不能根据它产生一个对象。2、如果父类是含有纯虚函数的一个抽象类,派生类如果没有改写该纯虚函数,那么该派生类也成了一个抽象类。3、抽象类不能产生出对象实例,但是我们可以拥有指向抽象类的指针,以便于操作抽象类的各个派生类。4、虚函数派生下去仍为虚函数,而且可以省略virtual关键词。CLASS Cshape原创 2011-11-15 16:31:30 · 790 阅读 · 0 评论 -
MFC学习笔记(二)之全局对象
对于全局对象,程序已开始,器构造函数就先被执行,比程序进入点更早(即WinMain);程序即将结束前其析构函数被执行。MFC程序就有这样一个全局对象,通常以application object 称呼之。原创 2011-11-23 11:02:32 · 476 阅读 · 0 评论 -
MFC学习笔记(三)之基类、派生类
1、如果你以一个“基类之指针”只想“派生类之对象”,那么经由该指针你只能够调用基类所定义的函数。2、如果你以一个“派生类之指针”指向一个“基类之对象”,你必须先做明显的转型操作(explicit cast)。这种做法很危险,不符合真实生活经验,在程序设计上也会带给程序员困惑。3、如果基类和派生类都定义了“相同名称之成员函数”,那么通过对象指针调用成员函数时,到底调用到哪一个函数,必须视该指原创 2011-11-23 11:57:27 · 1865 阅读 · 0 评论 -
使用RICHEDIT
在mfc中使用工具栏里的RichEdit 控件时,应该在程序初始话时加入AfxInitRichEdit,或者 AfxInitRichEdit2 否则的话 程序会起不来.也没有任何错误信息.这俩函数 是加载 Riched20.dll(Riched32.dll )的.1.设置edit只读属性 方法一: m_edit1.SetReadOnl转载 2011-11-24 11:27:19 · 516 阅读 · 0 评论 -
MFC学习笔记(三)之CreateWindow函数
CreateWindowThis function creates an overlapped, pop-up, or child window. It specifies the window class, window title, window style, and, optionally, the initial position and size of the window. T原创 2011-11-24 11:34:53 · 3569 阅读 · 0 评论 -
深入浅出VC++串口编程之基于控件
深入浅出VC++串口编程之基于控件源代码下载 MSComm控件 Visual C++为我们提供了一种好用的ActiveX控件Microsoft Communications Control(即MSComm)来支持应用程序对串口的访问,在应用程序中插入MSComm控件后就可以较为方便地实现对通过计算机串口收发数据。 要使用ActiveX控件MSComm,程序员必须将其添加入转载 2011-11-29 17:42:19 · 776 阅读 · 0 评论 -
解决使用MSComm控件过程中内存溢出的问题
现在做的一个项目需要实现上位机和单片机的串口通信,为了方便,使用了MSComm控件,但写程序时在处理接收数据遇到了问题,程序可以编译通过,但运行的过程中,程序只要接收到串口发来的数据,就会弹出内存溢出提示错误:in xx.exe(MFCO42D.DLL);0xC0000005,Acess Violation。处理接收数据部分程序如下:void CDemoDlg::OnOnCommMscom原创 2011-12-06 15:05:18 · 4943 阅读 · 5 评论 -
解决不能添加过多的控件对象
今天在将对话框上EDIT、COMBOBOX控件建立对象绑定时,绑定到一定的数量就不能再添加绑定了,编译可以通过,但运行时就会弹出错误。我试着减少绑定数量,到某个数量以下的时候,程序编译后可以正常运行,我以为是MFC限制了一个对话框上的控件与对象绑定数量,到网上搜了一下,在CSDN上看到大部分人说一个对话框上最大控件数量不能超过255个,故此我判断不是超过了限制的问题。在浪费了几个小时的搜索无果后,原创 2011-12-07 16:04:38 · 1039 阅读 · 0 评论 -
GetProcAddress
显式链接到 DLL 的进程调用 GetProcAddress 来获取 DLL 导出函数的地址。使用返回的函数指针调用 DLL 函数。GetProcAddress 将(由 LoadLibrary、AfxLoadLibrary 或 GetModuleHandle 返回的)DLL 模块句柄和要调用的函数名或函数的导出序号用作参数。由于是通过指针调用 DLL 函数并且没有编译时转载 2011-12-20 14:04:31 · 1041 阅读 · 0 评论 -
RICHEDIT不能换行,其实是在样式里没设置多行
RICHEDIT不能换行,其实是在样式里没设置多行原创 2011-12-13 11:49:37 · 2246 阅读 · 1 评论 -
主线程while死循环,导致不能处理消息
前天写串口通信程序时,写了这样一段代码setTimer(1,1000,NULL);while(m_connect==0){}killTimer(1);这段程序本意是想设置一个1000毫秒的定时器,然后等待设备与串口连接。但是程序运行时,结果却不是我想要的。于是调试,发现程序在运行到while(m_connect==0)后,并不会按照我设想地每1秒钟进入定时器消息响应函数。上网查原创 2011-12-15 14:54:17 · 5019 阅读 · 1 评论 -
VC调试WATCH跟踪变量CXX0017: Error: symbol "temp" not found 解决办法
出现这种问题主要原因,是以前运行留下来的记录没有更新,所以新添加的代码无法跟踪。解决方法:把工程下所有的临时文件全部的删除基本上是所有没有专门图标显示的文件,如aps、nbc等重新运行就没有问题了。在网上查了很久没有结果,自己因为这个问题,加上11.11,郁闷了很久,以至于怀疑我的编程能力,跟大家分享一下,希望大家尽量减少小石头绊脚。原创 2011-12-16 17:55:17 · 2702 阅读 · 0 评论 -
编辑框限制十六进制输入
在对应.h文件中加入 BOOL PreTranslateMessage(MSG* pMsg) ;声明。在.cpp文件中从新定义成员函数BOOL CTestdemoDlg::PreTranslateMessage(MSG* pMsg) { if((WM_CHAR == pMsg->message) && (::GetDlgCtrlID(pMsg->hwnd) == IDC_FIN转载 2011-12-16 17:58:18 · 3185 阅读 · 0 评论 -
FastMM报错
这次的项目中用到同事写的一个ComboBox控件,以前项目中也用过没问题,但这次在界面上第二次点击控件的下拉按钮就报错,今天跟进代码看了下,定位在FreeNode时调用FreeMem报错。Node是一个Record,使用AllocMem分配的空间。FastMM弹出的提示是说在其它地方已经释放了这个内存,这里又释放了一下。在代码中找了半天也没看到什么地方提前释放了这片内存。又仔细看了看FastMM的原创 2017-11-02 16:45:56 · 511 阅读 · 0 评论