C/C++
文章平均质量分 80
magicggyy
这个作者很懒,什么都没留下…
展开
-
PostMessage与PostThreadMessage的区别
http://blog.csdn.net/jiangqin115/article/details/46987081消息队列是属于线程的,Post消息就是把消息放到目标线程的消息队列中。这两者的区别在于:PostMessage 通过指定目标窗口句柄来确定目标线程,通常情况下由窗口过程来处理消息;PostThreadMessage 直接指定目标线程ID来转载 2017-02-09 11:52:42 · 673 阅读 · 0 评论 -
控制台实现进度条
#include "stdio.h"#include #include int g_iCnt = 0;int l_iSum = 10000;HANDLE hSemaphore;void vDisplayProBar(int p_iNumBarCh, int p_iCompletedValue, int p_iSumValue);unsigned int _stdcall Th原创 2017-01-13 18:57:56 · 1070 阅读 · 0 评论 -
SendMessage()发送自定义消息在release版下可能崩溃的原因
http://blog.csdn.net/cosmoslife/article/details/8709271如果消息响应函数没有处理WPARAM和LPRAM,那么release版本在清理堆栈的时候会出问题,引起崩溃。比如:VOID OnSomeMsg();虽然在调试版下没有问题,但是在release版本下会崩溃而应该定义为:LRESULT OnSomeMsg转载 2017-02-14 13:57:29 · 1065 阅读 · 0 评论 -
在编辑框(CEdit)控件上追加内容
http://blog.csdn.net/visualeleven/article/details/6214725/// MFC 版本 CEdit* pEdit = GetDlgItem(IDC_EDIT1); ASSERT(pEdit && pEdit->GetSafeHwnd()); pEdit->SetSel(-1); pEdit->ReplaceSel(_T转载 2017-02-25 09:42:30 · 1378 阅读 · 0 评论 -
CString的GetBuffer与ReleaseBuffer
http://blog.pfan.cn/xman/43212.htmlhttp://www.cnblogs.com/jamesmile/archive/2010/04/19/1715756.html一.函数原型CString::GetBufferLPTSTR GetBuffer( int nMinBufLength );throw( CMemoryException )转载 2017-02-25 15:08:23 · 348 阅读 · 0 评论 -
CString 成员函数用法大全
http://www.cnblogs.com/Caiqinghua/archive/2009/02/16/1391190.htmlCString的构造函数CString( );例:CString csStr;CString( const CString& stringSrc );例:CString csStr("ABCDEF中文123456"); CS转载 2017-02-25 15:10:33 · 522 阅读 · 0 评论 -
/MT、/MD编译选项,以及可能引起在不同堆中申请、释放内存的问题
一、MD(d)、MT(d)编译选项的区别1、编译选项的位置以VS2005为例,这样子打开:1) 打开项目的Property Pages对话框2) 点击左侧C/C++节3) 点击Code Generation节4) 右侧第六行Runtime Library项目2、各个设置选项代表的转载 2017-05-04 18:50:56 · 505 阅读 · 0 评论 -
MFC SetSel和GetSel
通过实际的界面程序了解MFC的SetSel函数和GetSel函数的参数应该怎样传递。函数参数主要如下:SetSel(int nStartChar, int nEndChar, BOOL bNoScroll);GetSel(int& nStartChar, int& nEndChar);nStartChar表示起始的字符位置nEndChar表示结束的字符位置原创 2017-03-26 15:56:01 · 15153 阅读 · 5 评论 -
文件遍历
http://baike.baidu.com/link?url=I69JeVrODq0RnKEh-tbqyP1oA0GngIBccHJXJkNoi0RMBPK5KU84bx3cskvMB4DuCz-Eo5V_FDGdUdoJzOBJBt9OcTmqRQkeD_ODSAwJ6m7http://bbs.csdn.net/topics/390368005/1、FindFirstFil转载 2017-03-14 21:04:43 · 262 阅读 · 0 评论 -
LINK : fatal error LNK1104: cannot open file "mfc42
http://blog.sina.com.cn/s/blog_58c3f7960102uwaw.html编译CPPUNIT时没问题,可连接的时候出现LINK : fatal error LNK1104: cannot open file "mfc42ud.lib" 错误,发现居然冒出个缺少库文件的错误,琢磨了一会,原来发现,这个错误是因为缺少Unicode的支持文件,在装V转载 2017-02-22 11:53:11 · 864 阅读 · 0 评论 -
不定参数写文件
http://blog.csdn.net/sherlockhua/article/details/5628727一、vfprintf 函数名: vfprintf 功 能: 格式化的数据输出到指定的数据流中 用 法: int vfprintf(FILE *stream, char *format, va_list param); 函数说明转载 2017-02-22 11:09:10 · 314 阅读 · 0 评论 -
不定参数函数调用不定参数函数
#include #include int myprintf(const char *fmt, ...){ int ret; va_list ap; va_start(ap, fmt); ret = vprintf(fmt, ap); va_end(ap); return ret;} void logv(const char *f转载 2017-02-22 11:05:49 · 1559 阅读 · 0 评论 -
实现自己的printf函数
http://blog.csdn.net/xfeng88/article/details/6695848在嵌入式开发中,常常会通过串口打印一些信息到PC终端,这就需要实现自己的printf函数,下面介绍打印函数print的实现。print.h[cpp] view plain copy print?#ifndef __PRINT转载 2017-02-22 11:03:18 · 469 阅读 · 0 评论 -
Debug与Release版本的区别详解
http://blog.csdn.net/ithzhang/article/details/7575483Debug 和 Release 并没有本质的区别,他们只是VC预定义提供的两组编译选项的集合,编译器只是按照预定的选项行动。如果我们愿意,我们完全可以把Debug和Release的行为完全颠倒过来。当然也可以提供其他的模式,例如自己定义一组编译选项,然后命名为MY_ABC等转载 2017-02-12 10:51:26 · 4937 阅读 · 0 评论 -
C和C++运行库
http://blog.csdn.net/ithzhang/article/details/20160009在使用VC构建项目时,经常会遇到下面的链接错误: 初学者面对这些错误常常不知所错:libcmt.lib是什么东西?msvcrtd.dll又是干吗用的?在使用VC++时我们也常常对下面的运行库配置项感到疑惑转载 2017-02-12 10:07:10 · 249 阅读 · 0 评论 -
GPL和LGPL
GPL我 们很熟悉的Linux就是采用了GPL。GPL协议和BSD, Apache Licence等鼓励代码重用的许可很不一样。GPL的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用,但不允许修改后和衍生的代 码做为闭源的商业软件发布和销售。这也就是为什么我们能用免费的各种linux,包括商业公司的linux和linux上各种各样的由个人,组织,以及商 业软件公司开转载 2017-06-22 15:46:31 · 1957 阅读 · 0 评论 -
QT4.8.5+qt-vs-addin-1.1.11+VS2010安装配置和QT工程的新建和加载
http://qiusuoge.com/11848.html转载 2016-11-10 15:44:53 · 618 阅读 · 0 评论 -
WaitForSingleObject函数的使用
http://blog.sina.com.cn/s/blog_5cf500730101dpa9.html等待函数可使线程自愿进入等待状态,直到一个特定的内核对象变为已通知状态为止。 WaitForSingleObject 函数DWORD WaitForSingleObject(HANDLE hObject, DWORD dwMilli转载 2016-11-07 15:02:28 · 231 阅读 · 0 评论 -
MFC工程加入控制台调试信息输出
http://www.cnblogs.com/zhaomzs/archive/2013/01/23/2873764.html在MFC程序中,可以使用TRACE宏或者OutPutDebugString()函数输出调试信息,TRACE宏可以在调试时像Output窗口输出调试信息,OutPutDebugString()函数的输出则可以用DebugView捕获(DebugView也可以捕获TR转载 2016-11-07 14:25:11 · 247 阅读 · 0 评论 -
窗口销毁的相关函数与消息,ActiveX控件的销毁
http://www.cnblogs.com/yedaoq/archive/2012/02/07/2341591.htmlDestroyWindow函数DestroyWindow销毁窗口的正牌函数。DestroyWindows的MSDN说明如下:The DestroyWindow function destroys the specified win转载 2017-02-09 13:34:20 · 1352 阅读 · 0 评论 -
char、wchar、string、wstring互转
头文件:#pragma once#include class StrConvert{public: StrConvert(void); ~StrConvert(void); //static void Wchar_tToString(std::string& szDst, wchar_t *wchar); static std::string Wchar_tTo原创 2017-02-09 16:26:28 · 506 阅读 · 0 评论 -
ini配置文件读写实现
头文件:#pragma onceclass OperateIni{public: OperateIni(void); ~OperateIni(void); //获取字符串,不带引号 static int iniGetString(const char *section, const char *key, const char *defvalue, char *value,原创 2017-02-09 16:32:26 · 1671 阅读 · 0 评论 -
事件Event
#include "stdio.h"#include #include using namespace std;int tickets = 100;HANDLE g_hEvent;DWORD WINAPI ThreadProc1(LPVOID lpParam);DWORD WINAPI ThreadProc2(LPVOID lpParam);int main(){转载 2017-01-24 14:57:31 · 190 阅读 · 0 评论 -
信号量Semaphore
#include #include using namespace std;long g_lNum;unsigned int _stdcall ThreadFun(void *pPM);const int THREAD_NUM = 10;CRITICAL_SECTION g_csThreadCode;HANDLE hSemaphore;int main(){转载 2017-02-12 14:18:06 · 272 阅读 · 0 评论 -
多线程-生产者与消费者问题
参考http://blog.csdn.net/morewindows/article/details/7577591实现的简单例子一个生产者、一个消费者、一个缓冲区#include #include #include #include using namespace std;const int PRODUCE_NUMBER = 50;int g_iHole;HA转载 2017-02-12 17:00:14 · 278 阅读 · 0 评论 -
WaitForSingleObject 等待线程句柄
http://blog.csdn.net/dyzhen/article/details/5993396WaitForSingleObject(hThread/*某个线程的句柄*/,INFINITE)可以吗? hThread代表的线程如果在运行,就要一直等下去,直到线程退出来吗? 如果是这样,就是说我等到的时候,线程已经退出了?我还需要调用类似于ReleaseSema转载 2017-02-12 17:04:17 · 2424 阅读 · 0 评论 -
_beginThreadex的用法
http://blog.163.com/tfn2008@yeah/blog/static/1103213192012641036579/建议创建线程应该用_beginThreadex,ripple里面就是用的这个。例子如下://sipvoiplink.hclass SIPVoIPLink{private: static uns转载 2017-02-12 17:39:11 · 362 阅读 · 0 评论 -
_beginthreadex创建多线程
#include #include #include unsigned int __stdcall ulMyTread1(void* p){ int i = *((int*)p); while(i--) { printf("ggyy\n"); Sleep(1); } }unsigned int __stdcall ulMyTread2(void* p){ i原创 2017-01-24 14:59:23 · 252 阅读 · 0 评论 -
多线程函数声明为__stdcall
今天写线程函数时,发现msdn中对ThreadProc的定义有要求: DWORD WINAPI ThreadProc( LPVOID lpParameter); 不解为什么要用WINAPI宏定义,查了后发现下面的定义。于是乎需要区别 __stdcall和__cdecl两者的区别:#define CALLBACK __stdcall#define WINAPI __stdca转载 2017-01-23 15:01:14 · 886 阅读 · 0 评论 -
C语言中函数参数入栈的顺序
http://www.cnblogs.com/xkfz007/archive/2012/03/27/2420158.html先通过一个小程序来看一看:#includevoid foo(int x, int y, int z){printf("x = %d at [%X]n", x, &x);printf("y = %d at [%X]转载 2017-01-23 14:28:05 · 275 阅读 · 0 评论 -
MFC响应键盘及鼠标按键
BOOL CCarControlDlg::PreTranslateMessage(MSG* pMsg) { // TODO: Add your specialized code here and/or call the base class if(pMsg->message == WM_KEYUP) //键盘抬起操作 { switch(pMsg->wParam) //原创 2016-10-19 08:28:43 · 1807 阅读 · 0 评论 -
向其他进程注入代码的三种方法
转自:http://blog.sina.com.cn/s/blog_4ad042e50102e6a2.html原版地址:http://www.codeproject.com/threads/winspy.asp?df=100&forumid=16291&select=1025152&msg=1025152下载整个压缩包下载WinSpy 作者:Robert转载 2016-10-11 20:24:57 · 6132 阅读 · 0 评论 -
简单的 C++ SOCKET编程 ---基于TCP/IP协议(转)
server端: #include #include #pragma comment(lib,"ws2_32.lib")void main(){ //创建套接字 WORD myVersionRequest; WSADATA wsaData; myVersionRequest=MAKEWORD(1,1); int err; err=WSAStartup(myVersionR转载 2016-10-19 11:11:03 · 1886 阅读 · 0 评论 -
CWnd与HWND的区别与转换
一、区别HWND是句柄,CWnd是MFC窗体类,CWnd中包含HWND句柄成员对象是m_hWnd.HWND是Windows系统中对所有窗口的一种标识,即窗口句柄。这是一个SDK概念。 CWnd是MFC类库中所有窗口类的基类。微软在MFC中将所有窗口的通用操作都封装到了这个类中,如:ShowWindow等等,同时它也封装了窗口句柄即m_hWnd成员。二、如何得到窗口对象指针C转载 2016-10-24 15:22:22 · 266 阅读 · 0 评论