
VC++
dijkstar
IT技术让中国未来领先世界,微信:dijkstar
展开
-
VC程序里一种很好的线程退出方式,算是复习Event
直接看程序://1. 初始化的地方创建“退出事件”HANDLE ExitEvent = ::CreateEvent(NULL,FALSE,FALSE,NULL);//2. 下面是放在一个线程里while(1){ //不断的检测事件是否触发?否则1ms后超时(相当于Sleep(1)了) DWORD st = ::WaitForSingleObject(ExitEvent, 1);原创 2016-02-10 18:15:43 · 1141 阅读 · 0 评论 -
STL的string如何使用UNICODE?
#include "stdafx.h"#include "TestCmd.h"#ifdef _DEBUG#define new DEBUG_NEW#endifCWinApp theApp;using namespace std;#ifdef _UNICODE#define tstring wstring#else#define tstring string#endi原创 2016-05-08 20:49:24 · 1842 阅读 · 0 评论 -
C语言中的sprintf函数使用记事
发现sprintf函数还可以“”对自己“”格式化:char str[1000]={0};sprintf(str, "%s\r\n", "hello.cpp");sprintf(str, "%s%s\r\n", str, "Tiny.cpp");sprintf(str, "%s%s\r\n", str, "Thanks.cpp");printf(str);输出:hello.cpp原创 2016-07-02 19:58:16 · 1377 阅读 · 0 评论 -
VC(VS)的64位编程小结
1. 在Win7 x64下编程产生的程序,可以是Win32(x86),可以是x64的,都能运行,在【任务管理器 -> 进程】页面上,Win32的程序会以*32标记;2. 高版本的VC,如VS2008,若产生了x64的程序,实际上定义了宏【_WIN64】,_WIN64可以用来判断当前程序是编译在何版本上的一个有效标志。(注,无论在x86还是在x64平台上,_WIN32宏是一定被定义着的)原创 2016-03-23 13:26:07 · 4206 阅读 · 0 评论 -
用DirectShow写一个“合并左右声道”的Filter实现小结
因工作关系,需要完成将两个音频采集设备,同时进来的两路立体声,分别抽取每一路中的一路,合并成一个立体声声源,合并后的左、右声道分别是两路立体声的一路,原理图如下:原创 2016-09-08 14:42:21 · 1255 阅读 · 0 评论 -
对线程函数数组、函数指针数组在应用中的一些总结
在工作中遇到这样的一个问题:假设有1000个串口的数据需要接收并处理(串口的个数极端一些,目的是好说明问题),以Windows下的VC为例,一般的每一个串口接收都对应一个接收并处理函数,是不是需要写1000个这样的函数?这是第一个问题。如果每一个串口的接收处理函数都基本相同,唯一不同可以从传递进来的参数,在做接收处理时用该参数区分开来,那么是否可以将这1000个函数写成一个“共用”函数?这是第二个原创 2016-09-25 11:31:18 · 817 阅读 · 0 评论 -
DirectShow中的工具GraphEdit使用小结
一. 安装完Windows SDK 7.0或7.1后,在C:\Program Files\Microsoft SDKs\Windows\v7.0\Bin下有32位的graphedt.exe,及x64目录下有64位版本的graphedt.exe,当使用任何一个版本不正常的行为时,换成另一个版本试试;二. 在Win7下,GraphEdit的【Connect To Remote Graph】原创 2016-04-10 15:19:45 · 8961 阅读 · 0 评论 -
字节序处理函数
首先在msdn上查找htons、 htonl、 ntohl、 ntohs几个函数的说明介绍,它们是用来转换本地计算机和网络计算机字节序的;那么,它们一定可以用来出来字节序问题(抛开网络流不谈): #include #include #pragma comm原创 2011-10-16 12:20:16 · 1908 阅读 · 0 评论 -
VC生成的DLL给QT的EXE调用时lib路径问题小结
VC生成的DLL给QT调用,有两种方式,一种是隐式调用调用(使用.lib文件方式):① 在*.pro工程文件中添加VC生成的lib文件路径时,或者使用一个绝对路径,如:LIBS += "D:/Test/QT_ex/VC_DLL.lib"或者使用一个相应路径,如:LIBS += "VC_DLL.lib"注:该相对路径指的是build-VCDLL_QTXXX-Desktop原创 2015-10-02 13:21:48 · 3814 阅读 · 0 评论 -
Linux的消息队列,Windows的邮件槽,使用有感
在Linux环境下面,经常使用“消息队列”(mq_open、mq_send、mq_receive等),它非常好用,因为现在的工作中经常处理多线程,要处理好多线程,免不了要有“排队”的处理,上述的消息队列可以很好的实现FIFO类型的队列操作。Linux这么好用的消息队列,在Windows使用有对应呢?答案有:邮件槽,下面来看一个具体的示例,客户端线程快速将数据压入“队列”,服务器线程慢速原创 2017-04-02 11:04:03 · 1438 阅读 · 0 评论 -
VC中使用Sleep函数的注意事项
VC中的Sleep函数在延时应用中很好用,比如通信程序中,一方需等待另一方若干个毫秒后再处理,或者在死循环中,让出CPU不至于资源占用100%等等;但是,在界面操作中不要使用Sleep函数,比如按钮事件中,不要调用这个函数,否则会出现意外的情况!!那么如何处理延时一段时间执行呢?使用定时器,将按钮事件中调用Sleep函数中的地方,改为启动一个一段时间执行后的定时器:SetTimer(定时器编号...原创 2012-02-04 20:13:53 · 50722 阅读 · 3 评论 -
opengl编程指南第9版源码编译注意事项
1. 到:https://github.com/openglredbook/examples 下载完全版的源码examples-master.zip,大小有131MB左右,不要下载缩略版的,否则\bin\media里面会缺少一些资源文件,无法实现文章中的一些功能;这里百度盘备份了一份:https://pan.baidu.com/s/18NMwFfFZRl-3Dp317hrBag2. 编译会用到...原创 2019-01-06 11:52:57 · 2037 阅读 · 1 评论 -
vc下和gcc的结构体紧凑对齐格式存储【#pragma pack(push,1)、__attribute__ ((packed, aligned(1)))】
一台windows机器和一台Linux(vxworks gnu)机器传输一个结构体时,声明同样的结构体很有必要,但首先要保证每个变量在内存中位置是一样的,这样应该用紧凑格式存储:VC下声明“紧凑”格式的结构体:#pragma pack(push,1) //第二个参数1是指单字节对齐,32位的机器上默认4字节对齐 typedef struct { int source; i原创 2013-03-30 16:27:01 · 4300 阅读 · 0 评论 -
MFC的CArray排序小结(结合std::sort)
MFC的CArray非常好用(相对于C/C++的静态数组),但无法根据某个成员排序。下面是结合std::sort一块实现的CArray排序,废话少说,直接上程序干货:#include "stdafx.h"#include "Test.h"#include #ifdef _DEBUG#define new DEBUG_NEW#endif//// 自定义的数据结构//typ原创 2016-05-07 18:07:27 · 7838 阅读 · 0 评论 -
VS2008高版本VC使用微软串口控件mscomm小结
在VS2008中使用mscomm的文章有很多,这里把关键的几处小结一下:1. 最好安装一遍VC++6.0,因为mscomm控件在VC6中是自带的。装好了VC6,在VS2008中就可以直接使用mscomm了;如果不想安装VC6的,那么直接到这里下载mscomm控件,直接运行里面的批处理文件注册;2. 在VS2008中使用该控件的方法:选择菜单【工具】--选择工具箱项--COM组件--原创 2016-05-07 17:41:36 · 6262 阅读 · 1 评论 -
VC编程DLL通知应用程序exe通信(使用自定义消息实现)
源文件下载:1. 用VC创建两个工程,一个工程是DLL的(基于使用MFC的动态链接库的),假设名字为MFC_DLL;另一个是EXE的(基于MFC的应用程序),设工程名为MFC_EXE;2. MFC_DLL实现了两个导出函数://导出函数WIN32DLL_API void Start(HWND hWnd);WIN32DLL_API void End();第一个导出函数Start的窗原创 2015-09-27 12:36:15 · 3332 阅读 · 1 评论 -
C/C++语言,对MSB、LSB的读/取处理
1. 做硬件的都知道,串口是LSB优先,I2C、1553B是MSB优先,这里的MSB、LSB指的是二进制位的位置,区别于【字节序】(通信中,先发送低字节,还是高字节的问题,那叫大端big-endian、小端little-endian)如果需要自己来实现MSB、LSB的读取、转换,如何实现呢?下面给出C/C++程序:#include "stdio.h"#define BITS_W原创 2015-09-27 11:56:06 · 6386 阅读 · 0 评论 -
DOS批处理命令递归删除给定的文件(夹),兼VC工程清理小工具
使用dos批处理命令递归删除指定的文件(夹):原创 2014-06-03 21:17:08 · 6413 阅读 · 0 评论 -
Win7下设置DirectShow编译环境小结(特别的x64位环境)
1. 下载DirectShow由于现在directShow没有和direcxtx一起发布,而是和windows sdk 打包发布了,Windows SDK 7.1 地址:http://www.microsoft.com/download/en/details.aspx?id=8442,或者到百度盘下载:http://pan.baidu.com/s/1i3TkpGp按系统类型下载。原创 2016-03-19 22:32:30 · 5638 阅读 · 2 评论 -
win7 writefile写磁盘失败解决
引用链接:http://msdn.microsoft.com/en-us/library/windows/desktop/aa364562.aspx http://msdn.microsoft.com/en-us/library/windows/desktop/aa364575(v=vs.85).aspx http://msdn.microsof转载 2016-03-21 16:32:33 · 7063 阅读 · 1 评论 -
VC、Linux、vxWorks读写物理扇区小结
直接上程序:1. Windows下的VC:HANDLE hDevice = CreateFile("\\\\.\\I:", GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL ); if (hDevice ==原创 2016-02-25 14:48:59 · 2071 阅读 · 0 评论 -
VC下的产生区间随机数小结
1. 如果要产生的随机数范围不大,可以使用下面一个函数,int my_rand(int M,int N){ return (int)((double)rand()/(double)RAND_MAX*(N-M+1)+M);}因为上述的RAND_MAX的是0x7FFF(32767);2. 如果在高版本的VC下,使用rand_s,得到一个范围较大的随机数区间,可以使用下面原创 2016-03-22 13:45:16 · 1476 阅读 · 0 评论 -
DirectShow示例CAMSchedule找不到编译错误的解决
DirectShow中的例子,在编译的过程中经常会出现这样的错误:Error 1 error C2061: syntax error : identifier 'CAMSchedule' c:/program files/microsoft sdks/windows/v6.0/samples/multimedia/directshow/baseclasses/refclock.h 80转载 2016-03-23 16:33:43 · 1154 阅读 · 0 评论 -
安全字符串函数stringcchXXX与 stringcbXXX什么区别?
以StringCbCat 和 StringCchCat为例:StringCbCat :cbDest [in] Type: size_t The size of the destination buffer, in bytes(用字节方式). The maximum number of bytes allowed is STRSAFE_MAX_CCH * sizeof(TCHAR).原创 2016-03-24 14:58:19 · 2201 阅读 · 0 评论 -
VC支持十六(16)进制的字符串转换为数值函数strtoul
直接看示例: char str[100] = "ab12"; //或者”0xab12”均可; unsigned long x = strtoul(str, NULL, 16); //得到的 x= 0xab12若记不住函数名strtoul,在MSDN上搜索“atoi”,最下面的see also里即是原创 2016-02-10 17:54:39 · 12505 阅读 · 0 评论 -
MFC的CByteArray、CString类用做动态字节数组使用
在原创 2014-07-12 22:06:58 · 13167 阅读 · 2 评论 -
Linux下有用的 myprintf 函数
输出如:2019-09-09 18:29:30:391 [test1.cpp-> myprintf-> L34] hello: 8898,即带了精确到毫秒级时间的printf,对调试时序逻辑的程序非常有用(如多线程时序同步),用法和普通的printf一样:#include <sys/time.h>#include <time.h>#inclu...原创 2019-09-19 17:57:57 · 485 阅读 · 0 评论