自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 资源 (1)
  • 收藏
  • 关注

转载 Delphi参数传递修饰符效率总结

对于string类型 const按地址传递,而不是像默认方式那样只是增加引用计数 默认只是增加引用计数,被修改后才产生本地副本(copy-on-write)比如procedure Method1(S: string);begin S := S + k;end;只有在S被修改后副本才会产生,S的地址才会变化var按地址传递参数, 同const结论:const修

2009-05-06 21:20:00 1135 1

原创 Delphi网络Web编程心得

 URL编码可以使用HttpApp.pas中的HTTPEncode对百度,直接使用HTTPEncode()编码就好了,但对Google,有点特别,需要做如下的编码HTTPEncode(UTF8Encode(url))即先做utf8编码再做url编码  IdHTTP的设置  IdHTTPWorker.AllowCookies := False; I

2009-04-25 20:04:00 1890

原创 正则表达式入门

对于文字字符,有11个字符被保留作特殊用途。他们是:[ ] / ^ $ . | ? * + ( )这些特殊字符也被称作元字符   不可显示字符可以使用特殊字符序列来代表某些不可显示字符:>代表Tab(0x09)>代表回车符(0x0D)>代表换行符(0x0A)  字符集字符集是由一对方括号“[]”括起来的字符集合。使用字符集,你可以告诉正则表达式引擎仅仅匹配多

2009-04-18 22:44:00 1814

转载 SAFEARRAY的使用

以下就是SAFEARRAY的Win32定义:  typedef struct tagSAFEARRAY   {    unsigned short cDims;    unsigned short fFeatures;    unsigned long cbElements;    unsigned long cLocks;    void * pvData;    SAFEARRAYBOUND

2009-03-03 12:44:00 4573 2

转载 几种拆焊方法

拆DIP引脚时焊锡吸不干净原因有5:1:烙铁温度不够;2:吸锡器漏气,造成瞬间吸力不足;3:原来焊接的焊料差,熔点高,一遇到低温的东西就固化;4:吸锡器的使用与电烙铁头配合不当;5技术有待提高。我拆单面板上的DIP的IC时都是两个脚一起用吸锡器将焊锡吸掉的,烙铁用35W外热的,头是尖头或扁头,并且在吸锡器的锡嘴上用美工刀开了一个三角形的小缺口,可以使烙铁头刚好卡在缺口里,这样一来当吸锡器吸

2008-11-06 15:34:00 23687 1

原创 VC中导出能被excel正确识别的UNICODE格式文本

在VC中导出文本,特别是含有中文字符的文本,常会碰到用excel打开为乱码,而用记事本打开则正常的状况,经研究,用下述方法可以解决该问题关键方法:1, 使用MultiByteToWideChar() API2, 用CFile写入文件而非CStdioFile3, 写入0xFF,0xFE至文件头部,以告知excel等外部编辑器打开的文本是unicode编码4, CFile::Wri

2008-07-11 12:34:00 2136

原创 CPaintDC及其与BeginUpdate、EndUpdate的前因后果

我们知道,CPaintDC类在其ctor和dtor中调用了BeginUpdate()和EndUpdate(),因此它也只能用在WM_PAINT的消息响应函数中,那为什么会这样呢?这样就要牵涉到BeginUpdate()和EndUpdate()做了那些事 MSDN上说到:The BeginPaint function automatically sets the clipping regio

2008-07-08 13:32:00 1002

转载 the format control string

The format-control string contains format specifications that determine the output format for the arguments following the lpFmt parameter. Format specifications, discussed below, always begin with a p

2008-06-27 14:36:00 1544 1

转载 windbg the easy way

WinDbg太强大了!---1,http://www.debuginfo.com/articles/easywindbg.html2,http://www.debuginfo.com/articles/easywindbg2.html

2008-06-26 10:49:00 897

转载 MSDN-Windows消息机制总览

Message and Message Queue Overviews http://msdn.microsoft.com/en-us/library/ms644927(VS.85).aspxMessage氛围Queued和Nonqueued前者以外围输入为主,鼠标、键盘等后者则直接发送给窗口函数,我们熟悉的SendMessage()就是发送Nonqueued类消息 

2008-06-24 10:20:00 1407

转载 用VC写DLL中"error LNK2005: _DllMain@12 already defined"的应对

用Visual C++编写DLL,如果在new project时选了MFC DLL,而后又想写成Regular DLL,即拥有自己的DllMain()入口函数,则在build时会遇到类似如下的link错误: error LNK2005: _DllMain@12 already defined in xxx.OBJ几种解决方案:1, 你只需要在工程设置里面,把WIN32,NDEBUG

2008-06-24 09:42:00 10584 11

转载 GetMessage与PeekMessage的区别及其在WH_GETMESSAGE钩子中的不同表现

区别一: peekmessage不管消息队列里有没有消息都会马上返回,有消息返回消息,没消息返回空值, getmessage等待到有消息的时候才返回, 区别二: peekmessage可以根据参数决定是否将消息保留在队列中, PM_NOREMOVE:该参数指示保留消息 PM_REMOVE:该参数指示移去消息而getmessage获得消息后回把消息从消息队列中删去 例程: // GetMessage

2008-06-23 21:32:00 4636

转载 仅通过崩溃地址找出源代码的出错行

标 题:仅通过崩溃地址找出源代码的出错行 (11千字)发信人:老罗时 间:2003-2-7 14:01:56详细信息:作为程序员,我们平时最担心见到的事情是什么?是内存泄漏?是界面不好看?……错啦!我相信我的看法是不会有人反对的——那就是,程序发生了崩溃! “该程序执行了非法操作,即将关闭。请与你的软件供应商联系。”,呵呵,这句 M$ 的“名言”,恐怕就是程序员最担心见

2008-06-21 22:09:00 1043

转载 备忘:用Visual C++编写DLL

VC支持三种DLL,它们是(转自http://dev.csdn.net/Develop/article/19/19966.shtm): 1.Non-MFC Dlls 指的是不用MFC的类库结构,直接用C语言写的DLL,其输出的函数一般用的是标准C接口,并能被非MFC或MFC编写的应用程序所调用 2.Regular Dlls Regular DLL:和下述的Extension Dll

2008-06-20 21:43:00 2305

原创 用Windbg分析程序意外崩溃

可以针对Release版本程序的以为崩溃进行源代码级的定位:Usage of  Error LocaterStep 1: Add following file to your projectCrashFileNames.hdbghelp.hExceptionHandler.hFunctionStackTrace.hGetWinVer.hMiniVersion.h

2008-06-20 14:38:00 2369

原创 隐藏任务栏最大化程序窗口中碰到的一些问题及应对方法

在最大化程序窗口时可能会碰到这样的问题:有时最大化窗口后会遮挡任务栏,而有时当你想全屏显示隐藏任务栏,那任务栏区域却死活无法被占用,哪怕任务栏已被隐藏经过一轮google,终于找到了解决方法,该方法源自某位网页的答复,转载如下://------------------------------------------ from pomelowu(羽战士)回复于 2005-05-08 15

2008-06-19 16:35:00 3859

原创 提高GDI+绘制效率的一些方法

GDI+因为其较好的代码封装使得程序员代码的编写更高效,但随之而来的是对其绘图效率低下的诟病,究竟它的绘图效率是不是低下我不好说(个人觉得就算低下其程度也十分有限,据说Visio就是用GDI+写的),但下面一些编程中的trick相信能较大程度上提高GDI+的绘图效率1,Graphics.SetSmoothingMode(SmoothingModeHighSpeed); //高速、低画质

2008-06-17 21:07:00 5016

转载 逻辑坐标和设备坐标的区别

备忘fromhttp://www.lzu.edu.cn/netteach/jiaochen/vc++5.0/vc++5.0/chap7/chap7_3.htm在Windows中,文档坐标系称作逻辑坐标系,视图坐标系称为设备坐标系。它们之间的关系如下图所示:图7-11文档坐标和视图坐标 在视图滚动后,如果用户在视图中单击鼠标,那么会得到鼠标位置的设备(视图)坐标。在使用这个数据处

2008-06-06 13:44:00 1571 1

原创 跨进程传递字符串(数据)的一点心得

想用发送自定义消息的方式跨进程传递字符串,尝试过并失败的方法有:1, new一个CString2, TCHAR 数组3, API GlobalAlloc()皆因为分配的内存都在发送方进程的heap内这里使用GlobalAlloc()也失败的原因是,在win32内,该函数与LocalAlloc()已没有分别,但好像如果不使用GMEM_FIXED参数,而是GMEM_MOVEABLE

2008-05-26 16:13:00 3473 4

转载 C++字符串完全指引二

http://www.w3sky.com/2/2618.html

2008-05-19 15:39:00 986

转载 C++字符串完全指引一

原文出处:CodeProject:The Complete Guide to C++ Strings, Part I2005089632引言  毫无疑问,我们都看到过像 TCHAR, std::string, BSTR 等各种各样的字符串类型,还有那些以 _tcs 开头的奇怪的宏。你也许正在盯着显示器发愁。本指引将总结引进各种字符类型的目的,展示一些简单的用法,并告诉您在必要时,如何实现各

2008-05-19 15:32:00 1107

转载 常用数据类型使用转换详解

(作者:程佩君, from http://www.vckbase.com/study/article/data_convert.htm)int i = 100;long l = 2001;float f=300.2;double d=12345.119;char username[]="程佩君";char temp[200];char *buf;CString str;_variant_t v

2008-05-16 10:19:00 557

转载 VC中char,wchar_t,TCHAR及相应字符串处理函数辨析(附常用数据类型转换)

1, VC中char,wchar_t,TCHAR(fromhttp://blog.csdn.net/yanonsoftware/archive/2005/12/05/544428.aspx)wchar_t是Unicode字符的数据类型,它实际定义在里: typedef unsigned short wchar_t;不能使用类似strcpy这样的ANSI C字符串函数来处

2008-05-16 10:15:00 2915

原创 DOS批处理命令心得

1, >> 表示追加, > 表示覆盖  2,搜索指定文件夹下所有指定类型的文件,并导出到列表,列表中只包括文件名,不包括路径、扩展名for /r d:/test %%a in (*.bat) do @echo %%~na >> a.txt 3,

2008-04-10 10:07:00 1707

原创 VC中使窗体无法被移动(move)和放大缩小(resize)的方法

只须拦截WM_WINDOWPOSCHANGING消息,并对其做如下修改即可 void CMainFrame::OnWindowPosChanging(WINDOWPOS* lpwndpos){    lpwndpos->flags |= SWP_NOMOVE | SWP_NOSIZE;    CFrameWnd::OnWindowPosChanging(lpwndpos);}

2008-03-25 16:09:00 2061

转载 线程同步机制的区别与比较及进程通信方法

有关多线程的一些技术问题:1、  何时使用多线程?2、  线程如何同步?3、  线程之间如何通讯?4、  进程之间如何通讯?先来回答第一个问题,线程实际主要应用于四个主要领域,当然各个领域之间不是绝对孤立的,他们有可能是重叠的,但是每个程序应该都可以归于某个领域:1、  offloading time-consuming task。由辅助线程来执行耗时计算,而使GUI有更好的反应。我想这应该是我们

2008-03-13 15:37:00 17173 3

转载 等待函数(wait function)的一点释疑

MSDN:A thread gets ownership of a mutex by specifying a handle to the mutex in one of the wait functions(WaitForSingleObject, etc.)While a thread has ownership of a mutex, it can specify the same

2008-03-12 16:47:00 1334

原创 VC进程间通信之消息传递

source:     const UINT WM_MYMESSAGE = WM_USER + 1;    CWnd *pWnd=CWnd::FindWindow(NULL,"GMS Version 1.1");//目标进程的窗口的captain    if(pWnd)       ...{           pWnd->SendMessage(WM_MYMESSAGE, NULL,

2008-03-10 10:46:00 3974

原创 在CFormView或对话框中动态添加CScrollView、CFormView

 本代码可以在CFormView中,根据事先画好的控件位置创建CScrollView也可以在CDialog中创建CScrollView、CFormView等注:若以下代码放在CMainRightView::OnCreate(LPCREATESTRUCT lpCreateStruct)内,则GetDlgItem()函数将调用失败,因为此时控件都还未被创建!void CMainRi

2008-03-06 14:28:00 4043

原创 何时基类应该使用虚析构

C++语言标准关于这个问题的阐述非常清楚:当通过基类的指针去删除派生类的对象,而基类又没有虚析构函数时,结果将是不可确定的。实际运行时经常发生的是,派生类的析构函数永远不会被调用 所以,很多人这样总结:当且仅当类里包含至少一个虚函数的时候才去声明虚析构函数这是一个很好的准则,大多数情况都适用但有时候,基类并没有虚函数(例如集成类不override基类的函数,只是增加几个函数进行功能

2008-02-27 14:54:00 733

原创 什么是ARGB

A = Alpha表示透明度 FF - 不透明00 - 全透明 

2008-02-27 11:13:00 4942

转载 MFC多线程同步方法

MFC提供了多种同步对象,下面我们只介绍最常用的四种: 临界区(CCriticalSection) 事件(CEvent) 互斥量(CMutex) 信号量(CSemaphore)A、使用 CCriticalSection 类   当多个线程访问一个独占性共享资源时,可以使用“临界区”对象。任一时刻只有一个线程可以拥有临界区对象,拥有临界区

2008-02-04 11:40:00 7687

转载 解析#pragma指令

 在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C ++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。其格式一般为: #Pragma Para其中Para 为参数,下面来看一些常用的参数。

2008-02-02 15:12:00 755

原创 Calling Convention

高级语言中大概有如下几种:__pascal__fortran__syscall__stdcall__cdecl__fastcall__thiscall__nakedcall __stdcall{Win32   API的调用协定,由被调用的函数清理堆栈,所有参数自右至左入栈,生成的代码中函数名有一个_(下划线)作前缀一个@和参数总字节数(十进制)作後缀。它

2008-01-25 11:23:00 830

转载 修改已经打开的对话框的浏览路径

 CWnd * pWnd = FindWindow(NULL,"另存为");CString sCtrlName;CWnd *pedit;CString filename;TCHAR BUF[512];if(pWnd){     CWnd *pwnd=pWnd->GetWindow(GW_CHILD);//枚举保存对话框的所有子控件     char *buf=new char[512];    

2007-08-15 21:34:00 673

转载 控件Radio Button的常用用法

先为对话框加上2个radio button,分别是Radio1和Radio2。问题1:如何让Radio1或者Radio2默认选上?如何知道哪个被选上了?关键是选上,“默认”只要放在OnInitDialog()即可。三种方法可以让它选上,第一种:((CButton *)GetDlgItem(IDC_RADIO1))->SetCheck(TRUE);//选上((CButton *)GetDlgIt

2007-05-14 20:02:00 1882

转载 标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast和const_cast

3.1 static_cast用法:static_cast ( expression ) 该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法:①用于类层次结构中基类和子类之间指针或引用的转换。进行上行转换(把子类的指针或引用转换成基类表示)是安全的;进行下行转换(把基类指针或引用转换成子类表示)时,由于没有动态类型检查,所以是不安

2007-05-06 16:27:00 961

原创 CString的几个字符串处理函数的index问题

CString Mid( int nFirst ) const;throw( CMemoryException );CString Mid( int nFirst, int nCount ) const;throw( CMemoryException );Return ValueA CString object that contains a copy of the specified

2007-05-02 14:14:00 3220

原创 ShellExecute隐式调用批处理并等待返回

SHELLEXECUTEINFO ShExecInfo = {0};ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;ShExecInfo.hwnd = NULL;ShExecInfo.lpVerb = NULL;ShExecInfo.lpFile = "E://My Do

2007-04-29 12:47:00 8435

原创 用批处理枚举指定目录下所有文件的文件名

@echo offfor  /r "D:/temp/zip"  %%a in (*.zip) do (echo %%a7za.exe e %%a %%~na.CUL)@echo on  %%~na表示只截取文件名部分,不包括路径和扩展名

2007-04-28 20:03:00 4567

mms协议下录制asf程序源代码

mms协议下录制成标准asf文件的程序源代码

2010-03-11

空空如也

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

TA关注的人

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