VC/MFC
文章平均质量分 87
bookish_2010_prj
喜交朋友;愿与同仁切磋编程技术;乐施好学
展开
-
跨线程问题
一、窗口的跨线程问题 MFC中,窗口不能跨线程绘制,不能跨线程更新,不能跨线程创建。简单的说,不能跨线程访问MFC窗口对象,MFC句柄封装类只在创建句柄的线程中有效,在其它线程中访问会出现无法预料的结果。 当我们要跨线程操作时,有2种方法可以解决: 一种是用FromHandle来复制句柄,然后使用复制的句柄来操作。 另外一种是通过发消息的方法,转到该窗口的UI线程去处理.二、内存的跨线程问题 跨线程delete操作为什么会失败? http://topic.csd原创 2011-01-08 14:49:00 · 2169 阅读 · 0 评论 -
线程、进程、窗口句柄相关API整理
<br />这几天在学习线程和进程,今天特别把MSDN中的相关资料整理一下,特地发出来。这样找MSDN的时候不会大盲目。如果还有更多的或是什么地方有错误请指出。 <br />如果进程只有一个线程,那么线程ID与进程ID就是指同一个ID<br />1,由窗口句柄得到进程ID和线程IDDWORD GetWindowThreadProcessId( //返回值为线程ID HWND hWnd, //参数:窗口句柄 LPDWORD lpdwProcessId //返回值:进程ID的指针);<br /转载 2011-01-08 14:35:00 · 3107 阅读 · 0 评论 -
创建一个真正隐藏的窗口
<br />ATOM MyRegisterClass(HINSTANCE hInstance)<br />{<br /> WNDCLASSEX wcex;<br /> wcex.cbSize = sizeof(WNDCLASSEX);<br /> wcex.style = CS_HREDRAW | CS_VREDRAW;<br /> wcex.lpfnWndProc = HeartBeatWin;<br /> wcex.cbClsExtra = 0;<br /> wcex.cbWndExtra =转载 2010-11-09 19:31:00 · 4049 阅读 · 0 评论 -
VC对话框全屏显示及相应控件位置改变
一、简单对话框全屏显示方法在OnInitDialog()中任意加入:1、ModifyStyle(WS_CAPTION,0,0); //如果不想去掉标题栏,去掉该句。<br />SendMessage(WM_SYSCOMMAND,SC_MAXIMIZE,0); 2、ShowWindow(SW_SHOWMAXIMIZED); 二、复杂一点的对话框全屏显示方法,随屏幕的分辩率而调节void CMainFrame::OnFullScreen() { GetWindowPl转载 2010-11-08 17:20:00 · 3270 阅读 · 0 评论 -
如何检测设备变动信息
一、处理设备变动信息 可以在某个窗口类中使用WindowProc函数处理:LRESULT CXXXDogDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam){ //wParam标识事件类型,如设备插入事件、拔出事件 if(message == WM_DEVICECHANGE && (wParam == DBT_DEVICEARRIVAL || wParam == DBT_DEVICEREMOVECOMPLETE))原创 2010-11-08 11:19:00 · 1374 阅读 · 0 评论 -
VC自绘按钮的实现(NO MFC)
使用MFC的CBitmapButton或者CButtonST等类很容易在按钮上画出位图+文字的Button。但是如果不使用MFC该怎么画呢?下面就是纯粹的SDK做的位图+文字的Button:// OwnerDrawBtn.cpp : Defines the entry point for the application.//#include "stdafx.h"#include "resource.h"#define ICON_HEIGHT 32#define ICON_WIDTH 32static HIN转载 2010-12-29 10:10:00 · 556 阅读 · 0 评论 -
HDC与CDC相互转换(转载)
<br />首先说一下什么是DC(设备描述表):Windows应用程序通过为指定设备(屏幕,打印机等)创建一个设备描述表(Device Context, DC)在DC表示的逻辑意义的“画布”上进行图形的绘制。DC是一种包含设备信息的数据结构,它包含了物理设备所需的各种状态信息 。Win32程序在绘制图形之前需要获取DC的句柄HDC,并在不继续使用时释放掉。<br /> <br />在c++ 编程中常会见到HDC,CDC,CClientDC,CPaintDC,CWindowDC这样的类<br />HDC是DC转载 2010-12-29 10:19:00 · 430 阅读 · 0 评论 -
WinCE虚拟串口驱动
WinCE虚拟串口驱动(一)WinCE虚拟串口驱动(二)转载 2010-11-02 14:23:00 · 509 阅读 · 0 评论 -
非模态对话框 模态对话框 --创建和销毁过程
先看一下MSDN的原文:<br /><br />When you implement a modeless dialog box, always override the OnCancel member function and call DestroyWindow from within it. Don’t call the base class CDialog::OnCancel, because i转载 2010-10-28 19:28:00 · 367 阅读 · 0 评论 -
Windows主机端与自定义USB HID设备通信详解
<br />Windows主机端与自定义USB HID设备通信详解<br /> <br />说明: <br />- 以下结论都是基于 Windows XP 系统所得出的,不保证在其他系统的适用性。 <br />- 在此讨论的是 HID 自定义设备,对于标准设备,譬如 USB 鼠标和键盘,由于操作系统对其独占,许多操作未必能正确执行。 <br /> <br />1 . 所使用的典型 Windows API <br />CreateFile <br />ReadFile转载 2010-10-27 10:10:00 · 1034 阅读 · 0 评论 -
改写dll字符串资源
<br />建一个dll文件。<br />打开vc,<br /> 一 File->New->Win32 Dynamic-link Library<br /> Project name 输入dlltest ->ok->A simple DLL project->Finish<br /> 二 在dlltest.cpp中添加如下代码 1 (见后) <br /> 三 添加资源,Insert->Resource 属性框中选择String Table->New,双击出现的ID Val转载 2010-10-25 15:02:00 · 2559 阅读 · 0 评论 -
CString类型转换,字符串操作和UNICODE、ANSI字符集
<br />一.CString与LPCWSTR<br /> 两者的不同:LPCWSTR 是Unicode字符串指针,初始化时串有多大,申请空间就有多大,以后存贮若超过则出现无法预料的结果,这是它与CString的不同之处。而CString是一个串类,内存空间类会自动管理。<br /> CString转换成LPCWSTR<br /> 方法一:CString strFileName;<br /> LPCWSTR lpcwStr = strFileName转载 2010-12-09 16:25:00 · 1189 阅读 · 0 评论 -
C++中处理XML文件
<br />一、C++中处理XML文件<br />FCL中的System.Xml多简单啊,连Steve Ballmer都知道怎么用。 <br />事情不会总是那么理想的,如果你要在C/C++程序里处理XML怎么办呢?<br />选择一:市面上的XML lib还是有几个的,最有名的当然是libxml。我一年前用过,很不错,我还特意写了一份简明教程,后来不知搁哪儿了。<br />选择二:MS的MSXML,我要介绍的就是这个。<br />先说一下在MSDN哪里找文档吧,往下看的时候也好有个参考:在Index里打:转载 2010-12-08 18:22:00 · 576 阅读 · 0 评论 -
VC配置文件ini的读写
<br />ini文件(即Initialization file),这种类型的文件中通常存放的是一个程序的初始化信息。ini文件由若干个节(Section)组成,每个Section由若干键(Key)组成,每个Key可以赋相应的值。读写ini文件实际上就是读写某个的Section中相应的Key的值,而这只要借助几个函数即可完成。<br /> <br />一、向ini文件中写入信息的函数<br />1. 把信息写入系统的win.ini文件<br />BOOL WriteProfileString(<br />转载 2010-12-08 18:12:00 · 424 阅读 · 0 评论 -
uml简介
一、 uml五类图第一类是用例图:从用户角度描述系统功能,并指出各功能的操作者第二类是静态图:包括类图,对象图,包图。类图描述系统中类的静态结构,不仅定义系统中的类,表示类之间的联系如关联、依赖、聚合等也包括类的内部结构(类的属性和动作)。类图描述的是一种静态关系,在系统的整个声明周期都是有效的,对象图是类图的实例,几乎使用与类图相同的标识。他们的不同点在于对象图显示类图的多个对象实例,而不是实际的类,一个对象图是类图的一个实例。由于对象存在生命周期,因此对象图只能在系统的某个时间段存在,包图由包和类组成,原创 2010-11-16 14:26:00 · 569 阅读 · 0 评论 -
vss安装与配置简单总结
<br />1.vss 用的是vss 6.0d 版,下载可以BAIDU一下(15M左右).<br />2.安装时产品ID可以填111 111111,如果已经安装过,请卸载、删除原解压目录后,重启再安装.如果没有删除,程序会找到原来的目录。安装原有的目录上,后期会有很多意想不到的错误。基本安装NEXT就可以了。<br />3.安装后在服务端创建数据库,用户,工程。可以参考以下资料:<br />VSS 的全称为 Visual Source Safe 。作为 Microsoft Visual Studio 的一名转载 2010-11-19 10:37:00 · 2823 阅读 · 0 评论 -
COM编程简介
COM编程入门 第一部分——什么是COM,如何使用COMhttp://www.vckbase.com/document/viewdoc/?id=212COM编程入门 第二部分——深入COM服务器http://www.vckbase.com/document/viewdoc/?id=213ATL介绍http://blog.csdn.net/wanshi131/archive/2005/11/16/530666.aspx转载 2011-05-10 15:52:00 · 546 阅读 · 0 评论 -
实战DeviceIoControl
<br />http://blog.csdn.net/bhw98/default.aspx转载 2011-05-09 15:35:00 · 524 阅读 · 0 评论 -
VC操作注册表函数
<br /> 1. 打开注册表键<br /><br />LONG RegOpenKeyEx(<br />HKEY hKey, // handle to open key主键<br />LPCTSTR lpSubKey, // subkey name子键<br />DWORD ulOptions, // reserved。必须是0<br />REGSAM samDesired, // security access mask读写标识<br />PHKEY phkResult转载 2011-05-07 14:31:00 · 812 阅读 · 0 评论 -
WritePrinter 向打印机输出数据
<br />OpenPrinter, WritePrinter,直接写打印机端口,只要知道打印机采用的语言就可以。////////////////WritePrinter 向打印机输出数据 <br />例: <br />uses CommDlg; <br /><br />{$IFNDEF WIN32} <br /> const MAX_PATH = 144; <br />{$ENDIF} <br /><br />procedure TForm1.Button1Click(Sen转载 2011-04-18 09:26:00 · 7161 阅读 · 0 评论 -
VC断点不可用的问题
文章一今天我笔记本的VC编译器莫名其妙的就进入不了断点了,而台式机确是好的,问题是一进入调试,断点就自动被取消了,郁闷了一下午,无法进入断点的原因很多,都有想重装VC编译器的打算了,晚上回来查查资料,发现原来是我的VC配置出了问题,解决方法:Project -> Setting -> Linkgenrealselectd“ Generate debug info”现在把与此问题相关的一些设置和问题的解决方法奉献给大家:1、Project -> Setting -> c/c++ table->genreal转载 2011-04-12 16:48:00 · 2391 阅读 · 0 评论 -
vs2008数据库编程笔记
vs2003中正常访问数据库的代码在vs2005或vs2008中编译报错如:解决办法是去掉no_namespace, 在用到的地方单独加namespace,如using namespace ADODB;另一个不知道是什么,我只好将他改名:#import "C://Program Files//Common Files//System//Ole DB//oledb32.dll" rename_namespace("OLEDB") // no_namespace1>c:/users/elva/desktop/s转载 2011-03-03 14:48:00 · 3529 阅读 · 0 评论 -
Ghost使用图解
[导读]Ghos(幽灵)软件是美国赛门铁克公司推出的一款出色的硬盘备份还原工具,可以实现FAT16、FAT32、NTFS、OS2等多种硬盘分区格式的分区及硬盘的备份还原。俗称克隆软件。 1. Ghost简介 Ghost是赛门铁克公司推出的一个用于系统、数据备份与恢复的工具。其最新版本是Ghost10。但是自从Ghost9之后,它就只能在windows下面运行,提供数据定时备份、自动恢复与系统备份恢复的功能。 本文将要介绍的是Ghost 8.x系列(最新为8.3),它在DOS下面运行,能够提供对系转载 2011-03-02 19:28:00 · 613 阅读 · 0 评论 -
VC ADO技术简介
<br /> ADO 2.0 实际上是基于 MSADO15.DLL 这个动态链接库的,这个库文件的名字虽然和 ADO 1.5 的一样,但是它实现了更新的接口。 <br /> ADO 2.0 里的新技术有:<br /> 1、异步操作和事件模型<br /> 2、数据集的持续性<br /> 3、层次化的数据传输<br /><br />ADO特点概述<br /><br /><br />用ADO访问数据元的特点可概括如下:<br /><br />易于使用,可以说这转载 2011-03-02 12:46:00 · 1030 阅读 · 0 评论 -
ON_NOTIFY 消息详解
<br />http://blog.csdn.net/wzyzb/archive/2009/03/09/3974360.aspx转载 2010-11-25 18:13:00 · 830 阅读 · 0 评论 -
vc调试:使用MAP文件快速定位程序崩溃代码行
作为程序员,平时最担心见到的事情就是程序发生了崩溃,无论是指针越界还是非法操作,都将给我们的应用系统 造成巨大的损失。但在一个大型系统的测试过程中,初期出现程序崩溃似乎成了不可避免的事。其实测试中出现程序崩溃并不可怕,反而是测试的成功。我们更为关 心的是程序中的哪一行导致了系统崩溃,这样我们才能有针对性的进行改正。 在VC中,我们可以利用出现程序崩溃时VC的自动跳转,定位到出错代码行。但在大量的压力测试时,尤其是多线程测试时,同时出现几十个错,这时VC本身的出错跳转往往会失灵。 在这里我们介绍一种转载 2011-01-18 14:01:00 · 2358 阅读 · 0 评论 -
热键控件使用示例 CHotKeyCtrl
<br /> <br />记得以前刚学VC时候不知道怎么使用控件面斑上的 HOTKEY控件, 那时看不懂MSDN英文帮助,在网上找了好久都无该控件的使用帮助,今天整理硬件看到我写的这个代码,看看是这么的简单啊,:) <br />==================================================================================<br />BOOL CMyHotKeyDlg::OnInitDialog()<br />{<br /> CDial转载 2010-11-23 15:21:00 · 629 阅读 · 0 评论 -
VSS使用手册
VSS使用手册1 VSS概述<br /><br /> 版本控制是工作组软件开发中的重要方面,它能防止意外的文件丢失、允许反追踪到早期版本、并能<br /><br />对版本进行分支、合并和管理。在软件开发和您需要比较两种版本的文件或找回早期版本的文件时,源代<br /><br />码的控制是非常有用的。<br />Visual SourceSafe 是一种源代码控制系统,它提供了完善的版本和配置管理功能,以及安全保护和跟踪<br /><br />检查功能。VSS通过将有关项目文档(包括文本文件、图象转载 2010-11-19 10:35:00 · 420 阅读 · 0 评论 -
伪句柄
伪句柄在使用很多函数的时候,我们都需要获得一个对象的句柄,而某些函数返回的是伪句柄。伪句柄本身不会打开内核对象的句柄表,因此内核对象的使用计数就不会增加。它本身就只指向调用它的主调进程或线程。会因为调用者的不同而改变,比如:调用者A使用一个伪句柄,这个句柄指向调用者A,而调用者A将该句柄传递给调用者X,则这个句柄就指向调用者X。我们可以通过调试的方式查看伪句柄,可以得知,进程的伪句柄总是0xffffffff,而线程的伪句柄总是0xfffffffe。通过使用DuplicateHandle这个强大的函数,可以将转载 2010-11-18 15:57:00 · 1387 阅读 · 0 评论 -
VC++中调用Com组件的方法详解
<br />Requirement:<br />1.创建myCom.dll,该COM只有一个组件,两个接口IGetRes--方法Hello(),<br /> IGetResEx--方法HelloEx()<br />2.在工程中导入组件或类型库<br /> #import "组件所在目录myCom.dll" no_namespace<br /> 或<br /> #import "类型库所在目录myCom.tlb"<br /> using namespace MYCOM;<br /转载 2010-10-13 16:44:00 · 721 阅读 · 0 评论 -
关闭烦人的vs自动调试
关闭烦人的vs自动调试2009-02-16 16:15<br />删除:<br />HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/AeDebug/Debugger<br />HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/.NETFramework/DbgManagedDebugger<br />删除后打开visual studio 2005,选工具-选项-调试-实时,把右面的三个选项的对勾都去掉就转载 2010-12-02 14:59:00 · 603 阅读 · 0 评论 -
我自己的线程类, 比mfc的那个简单,灵活
<br /> <br />这是范例, 头文件在后边<br />#pragma warning(disable: 4530)<br />#pragma warning(disable: 4786)<br />#include <cassert><br />#include <iostream><br />#include <exception><br />#include <algorithm><br />#include <math.h><br />#include <iomanip><br />usi转载 2010-10-09 14:53:00 · 505 阅读 · 0 评论 -
CString的工作原理介绍
看了很多人写的程序,包括我自己写的一些代码,发现很大的一部分bug是关于MFC类中的CString的错误用法的.出现这种错误的原因主要是对CString的实现机制不是太了解。 CString是对于原来标准c中字符串类型的一种的包装。因为,通过很长时间的编程,我们发现,很多程序的bug多和字符串有关,典型的有:缓冲溢出、内存泄漏等。而且这些bug都是致命的,会造成系统的瘫痪。因此c++里就转载 2010-05-13 17:07:00 · 459 阅读 · 0 评论 -
在VC中使用自定义资源,FindResource,LoadResource,LockResource
在VC中使用自定义资源,FindResource,LoadResource,LockResource2008年08月26日 星期二 17:57关键字:VC 自定义资 源FindResource LoadResource LockResource一、前言 在VC环境中除了我们所常用的Dialog、Menu和Bitmap等标准资源类型之外,它还支持自定义资源类型(Cust转载 2010-05-10 16:57:00 · 838 阅读 · 0 评论 -
DLL里的Dialog.DoModal返回-1
今天简直是太郁闷了,昨天好好的程序,今天早上来了突然运行不了。回想昨天主要是新增了VC的一个时间控件和一LISTVIEW控件。去除,然后得新生成DLL,重新测试,不行。一开始是运行是调用DLL生成对话框没反应,不知道什么原因,后来查发现是什么NTDLL这个动态库不匹配,一大堆的不匹配,这可能程序昨天不能“CANNOT ADD NEW MEMBER”我修改了程序的原因,然后重新编译DLL,加入转载 2010-04-27 18:32:00 · 4305 阅读 · 0 评论 -
VC++动态链接库(DLL)编程
VC++动态链接库(DLL)编程(一)――理解库http://21cnbao.blog.51cto.com/109393/120777 VC++动态链接库(DLL)编程(二)--非MFC DLL http://21cnbao.blog.51cto.com/109393/120774 VC++动态链接库(DLL)编程(三)--MFC规则DLL http://www.exa转载 2010-04-27 18:04:00 · 639 阅读 · 0 评论 -
VC获取MAC地址的4种方法
有需求才有创造,有了问题才会想着去解决,那么我这里的获取MAC地址的第4种方法也是在这种情况下产生的。因为公司有一个服务器产品,要写一个注册模块,而注册模块需要获取硬件信息,而硬件信息有很多,可以是硬盘序列号,CPU序列号,和网卡MAC,我首先使用的是硬盘序列号,因为GOOGLE一下一大堆,我要感谢所有这些无私奉献自己智慧结晶的可爱的人。很快地写完一个注册模块,经过几个PC机,笔记本的测试,一转载 2010-04-23 15:10:00 · 747 阅读 · 0 评论 -
获取系统网络MAC地址的三种方法
方法一 - 用Netbios API 这个方法是通过微软的Netbios API来得到MAC地址。这些API是一组提供比的Winsock更底层的网络支持的命令。通过Netbios来得到地址。这种方法要求必须安装了Netbios(如果在一个Windows网络上并使用了文件共享,就没有这个问题)。另外,这个方法快速又准确。Netbios API只包含了一个简称为Netb转载 2010-04-23 15:29:00 · 911 阅读 · 0 评论 -
“Visual C++范例大全”详细目录
第一篇 VC程序开发基础第1章 VC与C++开发基础 11.1 C++面向对象特性 1实例1:实现C++类的多重继承 1实例2:使用虚函数实现运行时多态 3实例3:使用操作符重载实现编译多态——复数的加法运算 6实例4:使用函数模板实现不同数据类型的极值函数 71.2 C++常用的操作与算法原创 2010-04-10 14:58:00 · 2044 阅读 · 1 评论 -
VC++下的Unicode编程
VC++的Unicode编程作者:韩耀旭一、什么是Unicode 先从ASCII说起,ASCII是用来表示英文字符的一种编码规范。每个ASCII字符占用1个字节,因此,ASCII编码可以表示的最大字符数是255(00H—FFH)。其实,英文字符并没有那么多,一般只用前128个(00H—7FH,最高位为0),其中包括了控制字符、数字、大小写字母和其它一些符号。而最高位为1的另12转载 2010-04-06 11:22:00 · 521 阅读 · 0 评论