自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 资源 (3)
  • 收藏
  • 关注

原创 winsocket异步模型--select模式介绍

winsocket创建的套接字默认都是阻塞的,阻塞的意思其实很简单,就是不到黄河不死心的工作方式,譬如我们现在要从这个socket recv数据,如果这个时候没有数据可读或者不可读,那它就会等在那,recv下面的代码也不会执行,直到有数据可读;winsocket提供了系统调用,可以设置socket的模式为非阻塞,很简单unsigned long on=1; ioctlsocket(m_

2014-07-02 10:38:35 2692

原创 定位CPU高的方法

CPU占用高,最常见的原因是死循环或者类死循环的操作,如果要逐一排查代码,费时费力,可以先用工具工具1.windbg,windows出品的牛刀一枚以管理员运行windbg,File->Attach to Process!runaway   //会显示每个线程的CPU占用时间(user mode),里面Time值最大的就是CPU占用最高的线程~*kb     //显示线程的cal

2014-07-02 10:36:12 1094

原创 CFileDialog文件过滤的奇葩行为

CFileDialog是MFC提供文件打开保存对话框,其中用的最多的可能就是文件的过滤,21世纪的UI方向是让用户只见可见的,CFileDialog对于过滤包装的还是很方便的,[code]LPCTSTR lpszFilter = _T("可执行Files(*.exe)|*.exe|All Files(*.*)|*.*||"); CFileDialog fileDlg(TRUE,NU

2014-07-02 10:34:15 4038

原创 MFC消息截获之pretranslatemessage

前几天,查了一个batch的问题,问题大致是这样,父窗口消息一个鼠标消息,弹出一个模态框,CPU负荷就飚升到100%(双核就是50%),非常怪异,用windbg,分析哪个线程占用CPU,定位到鼠标响应函数,也就是弹出模态框的函数,windbg提供的信息有限,只能自己分析,经过各种尝试,发现与模态框里面的控件无关,所以应该还是父窗口的问题,仔细看了下父窗口的代码,发现父窗口为了截获F1按下的消息,而

2014-07-02 10:32:29 4964

转载 一劳永逸让windows 64位操作系统 禁止强制驱动签名

如何让WINDOWS7 64位直接加载“禁用强制驱动程序签名”方式启动 Windows Client 论坛 > Windows 7问题0登录进行投票因为开发需要,要装一台设备的驱动,但是在WIN7下没有经过数字签名的认证,因为每次在启动系统的时候必须按F8键进

2013-12-10 10:50:43 81516

转载 WinDbg报pdb文件不正确,导致!analyze -v 命令一无所获解决办法

WinDbg中Your debugger is not using the correct symbols解决办法其实跟WinDbg中Check for invalid symbols or bad syntax解决办法的问题是类似,贴出来是方便更多的同学******************************************************************

2012-10-31 09:14:39 4656

转载 遍历目录下文件夹并删除

常用文件函数:if(finder.IsDirectory() && !finder.IsDots()) //如果是目录{ }IsDirectory()判断是否目录IsDots()) 判断目录是否为“.”或".."在dos中每个目录下都有缺省的两个目录分别为"."和".."分别表示上一层目录和本层目录.因此当我们遍历目录树下的文件时要过滤掉这两个缺省目录。每个

2012-08-06 21:33:33 1052

转载 面试题

求下面函数的返回值(微软) -- 统计1的个数-------------------------------------int func(int x){    int countx = 0;    while(x)    {        countx++;        x = x&(x-1);    }    return countx;}

2012-04-19 11:04:48 452

转载 递归-斐波那契

题:   若一头小母牛,从出生起第四个年头开始每年生一头母牛,按此规律,第n年有多少头母牛?具体分析:1.分析题目:(从出生起第四个年头开始每年生一头母牛)时间(年) 未成熟母牛(头) 成熟母牛(头) 母牛总数(头)1   1      0   12   1      0   13   1      0   14   0      1   15   1

2012-04-19 11:00:40 1049

转载 飞漫软件公司十年反思--节选软件工程管理章节

三、软件工程管理在飞漫软件发展各阶段,我们曾采用过多种软件开发管理模型。以 MiniGUI 为例。最初,基本上是作坊式的小团队,没有独立的质量保证团队。MiniGUI 1.0 到 2.0 的各个版本,基本上出自本人以及当时公司的另外一个主要创始人Snig。那时,基本上没有什么管理,靠的是兴趣和一腔热情编码。在飞漫软件开始开发一些 MiniGUI 的外围软件时,比如简易浏览器

2012-04-19 09:47:16 2898

原创 32位驱动安装到64位操作系统时出错

在32位操作系统上,一直运行挺好的驱动,但当操作系统安装了windows 2008 R2 (64bits),再安装以前的驱动时,一直报0x800f0203错误,windows对此的错误定义是“没有为设备信息集或元素选择驱动程序”。驱动安装采用的是微软win2000 DDK 中提供的snetcfg.exe,安装语法如下:snetcfg [-v] [-l ] -c -i     wher

2012-02-24 17:27:33 10031

转载 MFC使用控制台界面

在MFC程序中输出调试信息的方法有两种,一种是使用TRACE宏,可以向Output窗口输出调试信息;另一种是用MessageBox,弹出消息框来输出调试信息,但会影响程序的运行。其实有一种方法可以更为方便的输出调试信息,就是输出到控制台(Console)中,即不影响程序运行,又便于查看调试信息。方法如下:1、#include 2、在需要开启控制台窗口的地方调用AllocCons

2011-12-12 17:31:31 5805

转载 如何调试程序的 Release 版本

很多时候程序的 Debug 版本运行没有任何问题,但是一旦发布 Release 版本后,运行就出错,着实让人郁闷。大家知道,VC++ 中 Release 版本是对无法对源代码进行调试的。一般的做法是在怀疑有错误的代码前后插入MessageBox 函数,在函数中显示可能导致错误的变量的值。或者插入写文件的语句,输出可能导致错误的变量的值到一个记录文件。其实,除了上面讲的这个办法之外,还有其它的途径来

2011-12-12 16:49:07 513

转载 系统托盘编程完全指南

原文:http://www.hellocpp.net/Articles/Article/574.aspx第一部分自从Windows 95面市以来,系统托盘应用作为一种极具吸引力的UI深受广大用户的喜爱。使用系统托盘UI的Windows应用程序数不胜数,比如"金山词 霸"、"Winamp"、"RealPlayer"等等。那么如何编写自己的托盘应用呢?本文是系列文章中的第一篇,这些文章将比较系

2011-11-24 08:33:13 1021

转载 Pure virtual function call error探讨

在实习的单位搞CxImage库时不知为什么在Debug时没有问题,但是Release版里竟然跳出个Pure virtual function call error! 啥东西呀,竟然遇上了,就探个究竟吧!MSDN上的解释http://forums.msdn.microsoft.com/zh-CN/clr/thread/bfa759a8-0cc0-4d65-8711-d2d0d6765687/

2011-11-22 11:41:31 770

转载 开始菜单排序

WinXP中安装一些软件,再打开【所有程序】后,一般来说,开始菜单里面的程序列表会变的杂乱不堪,其实是系统将我们安装的软件目录按照安装时间排序了。其实系统中也提供了按名字排序的方法,但是每次安装完毕之后,都需要我们手动的去操作一下,比较麻烦(下文会写出方法)。如何让菜单自动排序呢?方法一:打开【控制面板】→【任务栏和“开始”菜单】选择“开始菜单”页选择【经典开始菜单】→【自定义】

2011-11-22 09:42:00 3396

转载 DLL导出函数

经常使用VC6的Dependency查看DLL导出函数的名字,会发现有DLL导出函数的名字有时大不相同,导致不同的原因大多是和编译DLL时候指定DLL导出函数的界定符有关系。VC++支持两种语言:即C/C++,这也是造成DLL导出函数差异的根源我们用VS2008新建个DLL工程,工程名为“TestDLL”把默认的源文件后缀 .CPP改为.C(C文件)输入测试代码如下

2011-11-10 13:10:24 3717

转载 VC++的Unicode编程

VC++的Unicode编程对于从VC++6.0转到VS2005编译环境中的程序员。往往会碰到字符集之间的转换。VC6.0采用的是ANSI字符集,而VS2005或者VS2008是采用的Unicode字符集。L:比如创建一个窗口类:HWND hWnd=CreateWindow(L"ClassName",L"最简单的Direct3D程序",

2011-11-03 15:05:04 537

转载 预译头之前世今生

预编译头文件说明TAG:预编译和宏定义,VC++,预编译头文件说明TEXT:所谓头文件预编译,就是把一个工程(Project)中使用的一些MFC标准头文件(如Windows.H、 Afxwin.H)预先编译,以后该工程编译时,不再编译这部分头文件,仅仅使用预编译的结果。这样可以加快编译速度,节省时间。   预编译头文件默认通过编译stdafx.cpp生成,以工程

2011-10-28 14:50:39 484

转载 #pragma data_seg

#pragma data_seg在Win16环境中,DLL的全局数据对每个载入它的进程来说都是相同的;而在Win32环境中,情况却发生了变化,DLL函数中的代码所创建的任何对象(包括变量)都归调用它的线程或进程所有。当进程在载入DLL时操作系统自动把DLL地址

2011-10-17 09:58:33 382

转载 #pragma data_seg

#pragma data_seg在Win16环境中,DLL的全局数据对每个载入它的进程来说都是相同的;而在Win32环境中,情况却发生了变化,DLL函数中的代码所创建的任何对象(包括变量)都归调用它的线程或进程所有。当进程在载入DLL时操作系统自动把DLL地址

2011-10-17 09:58:33 331

转载 #pragma data_seg

#pragma data_seg在Win16环境中,DLL的全局数据对每个载入它的进程来说都是相同的;而在Win32环境中,情况却发生了变化,DLL函数中的代码所创建的任何对象(包括变量)都归调用它的线程或进程所有。当进程在载入DLL时操作系统自动把DLL地址

2011-10-17 09:58:32 374

转载 VC程序查错之内存访问异常

作者:langouster先来看下面这张图,相信很多程序员都见过类似。---------------------------test1.exe - 应用程序错误---------------------------"0x00401002" 指令引用的 "0

2011-10-17 09:52:49 1368

转载 通往WinDbg的捷径

通往WinDbg的捷径(一)原文:http://www.debuginfo.com/articles/easywindbg.html译者:arhat时间:2006年4月13日关键词:CDB WinDbg 导言你钟情什么样的调试器?如果你问我这个问题

2011-10-13 17:20:59 1041

转载 Reading a Dr. Watson Log File

Reading a Dr. Watson Log FileThe Dr. Watson log file records the details of the crash dump creation process. (It is distinct from the ac

2011-10-13 14:18:47 565

原创 dump文件定位程序崩溃代码行

1.dump文件2.程序对应的pdb步骤一:安装windbg步骤二:通过windbg打开crash dump文件步骤三:设置pdb文件路径,即符号表路径步骤四:运行命令!analyze -v,这是windbg提供的一个自动分析命令,正常情况下,会显示出导致崩溃

2011-10-12 14:55:57 3960

原创 com口连接的设备被误认作Microsoft Serial ballpoint设备,而一直占用com口

问题:电脑Com口连接GPS对时信号,电脑上有一个程序,从Com口读取GPS时间信号,然后设置电脑本地时间;但问题是程序打开Com口一直失败,报Com口已经被占用,     不能再次打开Com口,奇怪Com口怎么会被占用呢?问题原因:原来Com口连接的GPS设备,因为满足了微软对Serial ballpoint设备的检测要求,被微软误认为Com口连接的是Serial ballpoint设备,操

2011-09-22 15:10:08 24561

转载 程序员应该做的事

1、版权和版本-------好的程序员会给自己的每个函数,每个文件,都注上版权和版本。对于C/C++的文件,文件头应该有类似这样的注释:/**********************************************************************  文件名:network.c**  文件描述:网络通讯函数集**  创建人: Hao Chen, 2003年2月

2011-06-20 20:08:00 837

原创 笔记本电脑外接显示器或投影仪的切换热键

<br />笔记本电脑外接显示器或投影仪的切换热键<br />     如果你有过使用笔记本电脑连接投影仪,遇到找不到信号的情况,虽然笔记本电脑连接到已打开的投影仪上,却不能显示笔记本电脑上的画面,此时,使用投影仪遥控器进行计算机信号搜索也无济于事。<br />  这个问题一般来说,各品牌的笔记本电脑通过信号线与投影仪连接后,通常使用不同的热键来使影像输出与切换计算机和投影仪的信号。例如:DELL笔记本电脑是“Fn+F8”,HP是“Fn+F4”等等。本站站长提供了一个参照表在下面供各位参考。<br />  

2011-04-10 18:03:00 2351

原创 进程绝杀

<br />其实用Windows自带的工具就能杀大部分进程:  w3T_e[]1  <br />MypK&E2Sr  <br />c:>ntsd -c q -p PID ( v"Zdi5T  <br />‑]Z}7KD!)O  <br />  只有System、SMSS.EXE和CSRSS.EXE不能杀。前两个是纯内核态的,最后那个是Win32子系统,运行ntsd本身需要它。  62Je!X+<br />  <br />(r/G>~K=  <br />ntsd命令是从2000开始的系统自带的调试工具

2011-04-10 18:00:00 685

原创 电脑系统盘空间不足解决之道

<br />临时文件夹 <br />开放分类: 软件 操作系统 系统文件夹<br /> <br />临时文件夹顾名思义就是装临时文件用的。<br />在windowsXP的系统盘里一共有三个临时文件夹<br />1.系统临时文件夹的路径:C:/Windows/Temp <br />此文件夹是Windows系统用来转储临时文件的地方。一般地,使用者多是系统服务类型的软件(如,Exchange Server)。因此,此文件夹里的文件是很少的。<br />2.计算机用户帐户临时文件夹:C:/Documents a

2011-04-10 17:58:00 801

原创 病毒USB 2.0

<br />病毒在C盘创建一个rotinom文件夹,把U盘的内容都copy到这个文件夹,系统无原故的报C盘空间不足时,才会发现隐藏了这个文件夹!!

2011-04-10 17:57:00 1437

原创 串口相关

SetupComm Function 设置串口的接收与发送缓存区大小<br />Initializes the communications parameters for a specified communications device.SyntaxCopyBOOL WINAPI SetupComm( __in  HANDLE hFile, __in  DWORD dwInQueue, __in  DWORD dwOutQueue);ParametershFile [in]

2011-03-04 23:06:00 635

原创 用creatprocess创建启动进程

<br />主进程示例:<br /> <br /> STARTUPINFOA si;<br /> si.cb   =   sizeof(STARTUPINFO);//必须初始化si<br /> si.lpReserved   =   NULL; <br /> si.lpDesktop   =   NULL; <br /> si.lpTitle   =   NULL; <br /> si.dwFlags   =   0; <br /> si.cbReserved2   =   0; <br /> si.lpR

2011-03-04 22:32:00 1011

转载 用户界面线程实现

<br />用户界面线程实现的技巧<br />1.问题阐述<br />MFC中有两类线程,分别称为工作者线程和用户界面线程。二者的主要区别在于工作者线程没有消息循环,而用户界面线程有自己的消息队列和消息循环。<br />工作者线程没有消息机制,通常用来执行后台计算和维护任务,如冗长的计算过程,打印机的后台打印等。用户界面线程一般用于处理独立于其他线程执行之外的用户输入,响应用户及系统所产生的事件和消息等。但对于Win32的API编程而言,这两种线程是没有区别的,它们都只需线程的启动地址即可启动线程来执行任务

2011-02-19 20:50:00 2895

转载 _beginThreadex的用法

<br />建议创建线程应该用_beginThreadex,ripple里面就是用的这个。<br />例子如下:<br />//sipvoiplink.h<br />class SIPVoIPLink<br />{<br />private:<br />       static unsigned __stdcall ReceivingThrd(void * pParam);<br />}<br /> <br />//sipvoiplink.cpp<br />#include <Winsock2.h><br

2011-02-19 20:49:00 2973 2

转载 哈佛图书馆自习室墙上的训言

<br />哈佛图书馆自习室墙上的训言 1.此刻打盹,你将做梦;而此刻学习,你将圆梦。 2.我荒废的今日,正是昨日殒身之人祈求的明日。 3.觉得为时已晚的时候,恰恰是最早的时候。 4.勿将今日之事拖到明日。 5.学习时的苦痛是暂时的,未学到的痛苦是终生的。 6.学习这件事,不是缺乏时间,而是缺乏努力。 7.幸福或许不排名次,但成功必排名次。 8.学习并不是人生的全部。但,既然连人生的一部分——学习也无法征服,还能做什么呢? 9.请享受无法回避的痛苦。 10.只有比别人更早、更勤奋地努力,才能尝到成功的滋味。

2010-12-25 13:36:00 521

原创 串口编程,在win7上调用PurgeComm清输入缓存区时异常

<br />伪代码如下:<br />int timer()<br />{//周期执行<br />     <br />     Purge(PURGE_RXCLEAR);//读之前清一下输入缓存区,在WIN7上多次执行后,这句会异常,而在XP上不会!!!!<br />     mcom.ReadFile(buf,1);//从输入缓存区中读1个字节<br />    <br />}<br />在网上搜索了好久,也没有找到可以信服的原因,为什么WIN7上会出现问题,而XP上不会!!!<br />最终我选择的方法

2010-11-29 20:03:00 3076

VC++动态链接库(dll)编程深入浅出

VC++动态链接库(dll)编程深入浅出

2008-12-30

高质量C++编程高质量C++编程

高质量C++编程高质量C++编程高质量C++编程

2008-12-30

LINUX核心0.01版的源代码

LINUX核心0.01版的源代码 学习linux的可以学习学习

2008-12-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除