![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MFC&WIN32
Howard_Liu1314
这个作者很懒,什么都没留下…
展开
-
l2tp的相关资料
VPN转载 2016-06-29 16:10:53 · 1056 阅读 · 0 评论 -
数字音频编程
远文章地址:http://blog.csdn.net/wangweitingaabbcc/article/details/6928382首先需要了解一些基本知识。一、数字音频基础知识Fourier级数:任何周期的波形可以分解成多个正弦波,这些正弦波的频率都是整数倍。级数中其他正线波的频率是基础频率的整数倍。基础频率称为一级谐波。PCM:pulse c转载 2013-06-24 19:26:55 · 1127 阅读 · 0 评论 -
关于waveInStart录音例子有杂音问题的解决
如下为例子的代码,录音有杂音.现在将红色字体的值都改为16 则录音效果很好,杂音很小! //allocate buffer memory m_pBuffer1 = (PBYTE)malloc(INP_BUFFER_SIZE); m_pBuffer2 = (PBYTE)malloc(INP_BUFFER_SIZE); if转载 2013-06-24 19:15:34 · 3090 阅读 · 0 评论 -
服务管理
服务函数下面的函数用于被服务执行或者使用函数 描述Handler An application-defined callback function used with the RegisterServiceCtrlHandler function.HandlerEx RegisterServiceCtrlHandle转载 2013-05-14 22:40:39 · 1216 阅读 · 0 评论 -
《Windows核心编程》 CloseHandle()
在《Windows核心编程》中看到一个线程内核对象的初始引用计数是2不是1,在CloseHandle()后,计数会减1,线程运行完成后,会再减1.如果是下面这样的情况:C/C++ code?1234567891011121314151617181920212223原创 2013-05-14 14:20:27 · 1112 阅读 · 0 评论 -
UNICODE,GBK,UTF-8区别
UNICODE,GBK,UTF-8区别 简单来说,unicode,gbk和大五码就是编码的值,而utf-8,uft-16之类就是这个值的表现形式.而前面那三种编码是一兼容的,同一个汉字,那三个码值是完全不一样的.如"汉"的uncode值与gbk就是不一样的,假设uncode为a040,gbk为b030,而uft-8码,就是把那个值表现的形式.utf-8码完全只针对uncode来组织的,如转载 2013-05-13 22:11:14 · 667 阅读 · 0 评论 -
CAutoCriticalSection 互斥量对象编程
///////////////////////////////////////////////////////////// Class CAutoCriticalSection///////////////////////////////////////////////////////////CAutoCriticalSection::CAutoCriticalSection(LPCR原创 2013-05-13 21:01:20 · 1349 阅读 · 0 评论 -
模块定义 (.Def) 文件
参考资料:http://msdn.microsoft.com/zh-cn/library/28d6s79h模块定义 (.def) 文件是包含一个或多个描述 DLL 各种特性的 Module 语句的文本文件。如果不使用__declspec(dllexport) 关键字导出 DLL 的函数,则 DLL 需要 .def 文件。.def 文件必须至少包含下列模块定义语句原创 2013-05-12 18:36:05 · 951 阅读 · 0 评论 -
Windows事件驱动机制及消息循环
1、Windows事件驱动机制 我们当中不少使用VC、Delphi等作为开发语言的程序员是一步步从DOS下的Basic、C++中走过来的,而且大多在刚开始学习编程时也是先从DOS下的编程环境入手的,因此在习惯了DOS下的过程驱动形式的顺序程序设计方法后,往往在向Windows下的开发环境转型的过程中会对Windows所采取的事件驱动方式感到无法适应。因为DOS和Windows这两种操作系统的转载 2013-05-03 22:48:06 · 684 阅读 · 0 评论 -
Windows消息循环: PreTranslateMessage
第一个版本首先让我们来写一个最容易让人想到的消息循环的形式:MSG msgwhile( GetMessage(&msg,NULL,0,0) ){ TranslateMessage (&msg); DispatchMessage(&msg);}GetMessage函数第一 个参数是用来获取MSG结构的指针。第二个参数是一个窗口句柄(HWND),用来获取指定窗口的消息转载 2013-05-03 23:05:03 · 1338 阅读 · 0 评论 -
Visual Studio 2008 中的可执行文件中嵌入清单文件(manifest) Vista/win7 UAC中把应用程序标注为“需要管理员权限”
由于需要提升应用程序的权限,所以找了一些文章之前看到一些参考Vista UAC中把应用程序标注为“需要管理员权限”的四种方法 http://www.cnblogs.com/taoxu0903/archive/2007/09/07/885588.html如何在 Visual Studio 2005 中可执行文件中嵌入清单文件http://support.microsoft.转载 2013-04-25 22:59:28 · 1161 阅读 · 0 评论 -
分析与理解MFC消息反射机制
前言: 我曾写过一篇文章对通知消息WM_NOTIFY进行分析,消息反射是MFC中对通知消息的处理方式,两者之间关系十分紧密,因此,我写了这篇文章,希望能够描绘出通知消息的完整印象。消息反射的基础知识 1、消息反射解释: 父窗口将控制子窗口发给它的通知消息,首先反射回子窗口进行处理(即给控制子窗口一个机会,让控制子窗口处理此消息),这样通知消息就有机会能被子窗口自身进原创 2013-04-15 22:22:29 · 1629 阅读 · 1 评论 -
MFC 如何添加自定义消息
如果用户自定义的类要求响应普通的Windows消息(也就是以WM_开头,除了WM_COMMAND以外的消息,这类消息在WM_USER以下的是系统消息,WM_USER以上的可以由用户自己定义),那就要求自定义的类必须从CWnd中派生。这是由于此类消息的处理机制决定的,这类消息没有命令消息那条繁琐的流动路径,而是消息发出者直接发给对应 CWnd的窗体句柄,由CWnd负责消息的响应。转载 2013-04-15 21:59:46 · 661 阅读 · 0 评论 -
WPARAM 和 LPARAM的区别
wParam和lParam 这两个是Win16系统遗留下来的产物,在Win16API中WndProc有两个参数:一个是WORD类型的16位整型变量;另一个是LONG类型的32位整型变量。因此根据匈牙利命名法,16位的变量就被命名为wParam, 32位的变量就被命名为lParam。到了Win32API中,原来的16位变量也被扩展为32位,因此此时wParam和lParam的大小完全相同转载 2013-04-15 22:15:17 · 883 阅读 · 0 评论 -
ClistCtr HDN_BEGINTRACK这个WM_NOTIFY消息
我尝试在CListCtrl中映射HDN_BEGINTRACK这个WM_NOTIFY消息。轻松的用ClassWizard建立了消息映射,几秒中完成了所有工作之后发生的事情却让我很长时间轻松不起来了。消息根本映射不上!!BEGIN_MESSAGE_MAP(CPrevList, CListCtrl)//{{AFX_MSG_MAP(CPrevList)ON_NOTIFY_REFLECT转载 2013-04-22 23:05:45 · 3518 阅读 · 0 评论 -
Wav文件格式及相关API解释
什么是Wav文件.Wav文件直接反映了一个声音在每个时刻的大小值,比如说以下一段波形: 我们按每人0.1秒取一点,得到的wav文件数值就是0,1,1,-1,0,1。因此,假如我们能把许多Wav文件的数据直接相加,你听到的就是所有的声音,这就是混音器的原理。下面我们分析一下Wav文件结构: 我们可以打开一个Wav文件直接看其二进制码: C:/user/wave/22.wav转载 2013-06-26 09:12:28 · 1834 阅读 · 0 评论 -
WH_KEYBOARD和WH_KEYBOARD_LL的区别
转个问答:1down votefavoritewhat is the difference between the working of two ? For WH_KEYBOARD_LLi read that it Installs a hook procedure that monitors low-level keyboard i转载 2013-08-02 16:32:22 · 2572 阅读 · 0 评论 -
WH_MOUSE 与WM_MOUSE_LL的区别
坏境:windows XP在使用SetWindowsHook截获鼠标事件时,如果使用WH_MOUSE参数,则只能监控钩子所在模块的鼠标事件。如需要截获整个系统的鼠标事件,那么使用WH_MOUSE_LL参数。 [c-sharp] view plaincopy//install hmouse=SetWindowsHookEx(WH_MOUSE_LL,(HO转载 2013-08-02 16:33:57 · 1510 阅读 · 0 评论 -
C++ Bridge 设计模式
C++ Bridge 设计模式 Bridge模式是应用最广泛也是我个人比较喜欢的一个C++设计模式之一。Bridge模式意图:降低抽象和实现之间的耦合。面向对象系统设计和分析中最重要的一点就是:高内聚,低耦合。Bridge模式使得抽象和实现能够相对独立。 Bridge模式结构图:转载 2015-05-25 18:06:23 · 649 阅读 · 0 评论 -
在window service中调用外部exe或.bat等
windows servicesession在您的服务程序中直接调用:UserProcess.StartProcessAndBypassUAC("your appPath","parameters",processInfo)[csharp] view plaincopyusing System; using System转载 2014-12-26 17:13:07 · 3109 阅读 · 0 评论 -
VS2008中自定义C++工程模板与修改新建文件默认编码的办法
VS2008中自定义C++工程模板与修改新建文件默认编码的办法write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie讨论新闻组及文件一、 需求网上讲VS(以下VS均特指VS2008)自定义模板的不少,不过大部分都是讲C#或者Web开发的,什么export template的,都不适合C++工程,由于MS的确是减弱了对C++的支持,(这转载 2014-11-27 15:18:44 · 3317 阅读 · 1 评论 -
win7如何清理图标缓存
taskkill /f /im explorer.exerem 清理系统图标缓存数据库 rem attrib -h -s -r "%userprofile%\AppData\Local\IconCache.db" del /f "%userprofile%\AppData\Local\IconCache.db" attrib /s /d -h -s -r "%userp转载 2014-10-15 10:13:50 · 1109 阅读 · 0 评论 -
VC++ 导入自定义资源
在VC中使用自定义资源,FindResource,LoadResource一、添加添加资源时选择自定义,IDE会为你生成一个新的二进制资源,然后你就可以将你已经存在的二进制文件作为自定义的资源类型导入到项目中来了。二、使用要使用自定义资源,我们可能要用到的几个API函数有FindResource、LoadResource和LockResource等,这里每一个函数的原创 2014-03-07 21:59:13 · 5307 阅读 · 0 评论 -
进程间的几种通讯方式Code
事件通信:事件通信主要是发送信号,作为事件通知使用,占用资源少,速度快 发送端:[cpp] view plaincopyprint?hEvent = ::CreateEvent(NULL,TRUE,FALSE,_T("MYMESSAGE")); if ((hEvent == INVALID_HANDLE_VALUE) || (hEvent == 0)) {转载 2013-11-07 10:06:54 · 643 阅读 · 0 评论 -
MT.exe 的使用
脚本:AutoManifestSign.bat@echo mt.exe -manifest .\ApplicationController.exe.manifest -outputresource:.\Exe\ApplicationController.exe;#1manifest:文件名称:ApplicationController.exe.manifest原创 2013-10-14 14:44:33 · 1573 阅读 · 0 评论 -
VC编程,使子窗口在父窗口居中的方法
如果要让窗口内的一个控件在父窗口的客户区居中,或在某一位置,可以用SetWindowPos,注意里面的第三个和第四个参数是相对于父窗口的客户区的坐标的,父窗口的客户区的坐标的左上角left,top都是0如果在父窗口里弹出一个DialogBox子窗口,这时你可能希望这个DialogBox在父窗口的客户区居中显示,你只需要在这个DialogBox的WM_INITDIALOG处理函数里加入以下代码:转载 2013-09-27 20:49:57 · 1660 阅读 · 0 评论 -
CToolTipCtrl控件的用法
一: 定义全局变量 CToolTipCtrl m_tooltip和CWnd* pwnd;//pwnd用来指定要显示控件的指针二:在窗体的OnInitDialog()中或OnShowWindow()中创建m_tooltip. //创建m_tooltip m_tooltip.Create(pwnd); //将CToolTipCtrl与相应的控件对应起来转载 2013-05-03 22:35:17 · 716 阅读 · 0 评论 -
client输入内容发送到server端输出
[1].[代码] [C/C++]代码跳至[1][2] view sourceprint?01#include 02#include 03#include 04#pragma comment(lib, "ws2_32.lib"转载 2013-09-02 16:22:45 · 607 阅读 · 0 评论 -
VC使用CRT调试功能来检测内存泄漏
C/C++ 编程语言的最强大功能之一便是其动态分配和释放内存,但是中国有句古话:“最大的长处也可能成为最大的弱点”,那么 C/C++ 应用程序正好印证了这句话。在 C/C++ 应用程序开发过程中,动态分配的内存处理不当是最常见的问题。其中,最难捉摸也最难检测的错误之一就是内存泄漏,即未能正确释放以前分配的内存的错误。偶尔发生的少量内存泄漏可能不会引起我们的注意,但泄漏大量内存的程序或泄漏日益增多的转载 2013-08-30 17:43:07 · 489 阅读 · 0 评论 -
strtok和strtok_r
strtok和strtok_r原型:char *strtok(char *s, char *delim);功能:分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。说明:首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL。 strtok在s中查找包含在delim中的字符并用NULL('/0')来替换,直到找遍整个字符串。返回值:转载 2013-08-30 13:52:45 · 519 阅读 · 0 评论 -
WM_CLOSE WM_DESTROY WM_QUIT 区别
在发送 WM_QUIT消息时,要使用PostMessage发送,否则,窗口已经关闭,但任务管理器中进程还存在。可以通过 pDlg->PostMessage(WM_QUIT);或DWORD dwThreadId = GetWindowThreadProcessId(pDlg->GetSafeHwnd(),NULL);PostThreadMessage(dwThreadId,WM_转载 2013-08-16 15:38:51 · 740 阅读 · 0 评论 -
Win32 下 如何发送Http请求
第一:如果是MFC的应用可以使用MFC的封装类库: #include #pragma comment(lib, "wininet.lib")BOOL PostXmlToUrl(string &address){ CInternetSession m_winet(NULL,1,INTERNET_OPEN_TYPE_DIRECT,NULL,NULL原创 2013-08-21 09:56:01 · 4517 阅读 · 0 评论 -
C++自定义ClistCtrl控件响应数据项的点击事件&&消息反射的原理
ON_NOTIFY不反射消息.如果自己处理不了,就传给上级窗口,如果再处理不了,在往上传.实在处理不了,由框架默认处理.ON_NOTIFY_REFLECT 反射消息.把消息传给上级窗口处理,如果上级都处理不了,再反射回来,自己处理.这就是MFC强大的消息反射机制.如果上级窗口处理,则子窗口不处理;为了项目的需要,往往需要编写自定义控件。当然,很多时候都是在现转载 2013-04-22 22:33:17 · 2770 阅读 · 1 评论 -
SetRegistryKey的作用
SetRegistryKey导致CWinApp::WriteProfileInt等操作注册表而不是INI文件这样配置就在注册表中否则配置文件在c:windows/下,如果写入了详细路径,则在指定路径下在利用mfc框架的时候,在App应用类的InitInstance()函数中,初始化时总有一个 SetRegistryKey("字符串XXX"),不知道究竟有何用处,这天转载 2013-04-08 21:36:35 · 3007 阅读 · 0 评论 -
sscanf,sscanf_s及其相关用法
#include 定义函数 int sscanf (const char *str,const char * format,........);函数说明 sscanf()会将参数str的字符串根据参数format字符串来转换并格式化数据。格式转换形式请参考scanf()。转换后的结果存于对应的参数内。返回值 成功则返回参数数目,失败则返回-1,错误原因存于errno中。 返回0表翻译 2013-04-08 23:16:22 · 657 阅读 · 0 评论 -
CListCtrl使用技巧汇总(二)
21. 在CListCtrl显示文件,并根据文件类型来显示图标 网上找到的代码,share BOOL CTest6Dlg::OnInitDialog() { CDialog::OnInitDialog(); HIMAGELIST himlSmall; HIMAGELIST h转载 2012-12-05 22:51:03 · 446 阅读 · 0 评论 -
CListCtrl使用技巧汇总
http://blog.csdn.net/lixiaosan/archive/2006/04/07/653563.aspx以下未经说明,listctrl默认view 风格为report相关类及处理函数MFC:CListCtrl类SDK:以 “ListView_”开头的一些宏。如 ListView_InsertColumn//整理过程中加入自己实践过程的一些使用代码1.转载 2012-12-05 22:58:51 · 539 阅读 · 0 评论 -
CListCtrl使用技巧汇总(一)
以下未经说明,listctrl默认view 风格为report相关类及处理函数MFC:CListCtrl类SDK:以 “ListView_”开头的一些宏。如 ListView_InsertColumn//整理过程中加入自己实践过程的一些使用代码1. CListCtrl 风格 LVS_ICON: 为每个item显示大图标 LVS_SMALLICON转载 2012-12-05 22:50:22 · 385 阅读 · 0 评论 -
树形控件CTreeCtrl的使用详解(一)
树型视的三个结构TVINSERTSTRUCT、TVITEM、NMTREEVIEWTVINSERTSTRUCT 包含添加新项到树形视控件所使用的信息。这个结构被TVM_INSERTITEM消息使用。这个结构与TV_INSERTSTRUCT结构是一样的,但它已经按当前的命名习惯重命名了。typedef struct tagTVINSERTSTRUCT { HTREEITEM h转载 2012-12-05 22:49:25 · 1562 阅读 · 0 评论 -
VC下遍历文件夹查找文件
今天看到以前的一些代码,觉得比较常用,放在下面供初学者使用吧。下面的代码都采用VS2002编译测试通过。参数dir是查找的根目录,filename为要查找的文件名(区分大小写), 第三个参数为找到后返回找到的文件路径,传入TCHAR resultPath[MAX_PATH];类型。 [cpp] view plaincopy/** * 1. 采用Win32 AP转载 2012-11-30 20:50:31 · 1398 阅读 · 0 评论