
VC
大风起兮云飞扬~~~
这个作者很懒,什么都没留下…
展开
-
消息循环
MessageBox、AfxMessageBox自己有一个消息循环,模态对话框也一样。 如果他们接收到不属于自己的消息,如父窗口的消息,就会转发给父窗口。 如果使用模态对话框替换掉MessageBox、AfxMessageBox,会出现同样的情况。 所以在窗口A中打开模式窗口B,窗口A的消息循环是不会阻塞的,同样窗口A的Timer也会继续执行。 本文用菊子曰发布原创 2016-07-13 21:41:03 · 462 阅读 · 0 评论 -
CStringArray用法
CStringArray使用之前先设置数组尺寸SetSize,才能使用SetAt CStringArray m_strScrkRfid ; m_strScrkRfid.SetSize (5); m_strScrkRfid.SetAt (0, _T( "001"));原创 2016-07-13 21:41:42 · 11765 阅读 · 0 评论 -
VC2010 调用 Webservice
开发环境:VC2010,gsoap_2.8.23 http://blog.youkuaiyun.com/zhaiwenjuan/article/details/6590941 使用soapcpp2的时候要加参数-i 3个文件去掉预编译头 在调用的地方包含这两个头文件: #include "MobileServiceImplServiceSoapBinding.nsmap" #include原创 2016-07-13 21:42:02 · 545 阅读 · 0 评论 -
VC多线程的用法
.h 文件#define WM_TEST WM_USER + 1class CTestThread : public CWinThread{DECLARE_DYNCREATE(CTestThread)protected:CTestThread ();virtual ~CTestThread ();public:virtual BOOL InitInstance();virtual int原创 2016-07-13 21:42:19 · 626 阅读 · 0 评论 -
VC基于消息的异步套接字
用WSAStartup,需要在StdAfx.h头文件中需要声明#include #pragma comment(lib,"WS2_32.lib")用AfxSocket,需要在StdAfx.h头文件中需要声明#include 用到了两种,则需要:#include #pragma comment(lib,"WS2_32.lib")#include 上述方法是否可行,需要验证?(原创 2016-07-13 21:42:22 · 467 阅读 · 0 评论 -
不能返回函数内部new分配的内存的引用
以前在开发电子秤接口动态库时,曾尝试在用于获取重量的函数外面定义一个字符串指针,然后作为参数传入函数内部,然后在函数内部new,用来输出函数执行过程中发生的错误。但是总是出错,没有找到原因,后来无意中看到了下面的一段说明,忘记摘录出处了,感谢作者。如下:不能返回函数内部 new分配的内存的引用(这个要注意啦,很多人没意识到,哈哈。。。 )。 这条可以参照Effective C++[1]的 Item原创 2016-07-13 21:42:25 · 2078 阅读 · 1 评论 -
关于多线程与CRITICAL_SECTION的使用
CRITICAL_SECTION 只能针对多线程进行锁定,在同一个线程中,是可以进入很多次的。同一线程可以多次进入临界区。在测试程序(多线程同时访问CADOAccess类的对象)中,辅助线程不论是否使用::CoInitialize(NULL);和::CoUninitialize();两个线程连续同时访问数据库没有影响。原创 2016-07-13 21:42:27 · 1078 阅读 · 0 评论 -
VC中打开对话框选择文件和文件夹
1、选择文件 CFileDialogdlg(true, NULL, NULL, NULL, "所有文件 | *.*", this); if (IDOK == dlg. DoModal()) { MessageBox(dlg .GetPathName原创 2016-07-05 11:17:12 · 2116 阅读 · 0 评论 -
unsigned long类型转换为CString出现的问题
开发工具:VC2010 财务程序读卡时发现有的卡片读出的卡号异常,代码如下: // 读卡序列号unsigned long cardNo;CICReader reader(ICREADER_TYPE_KS8U);if (IC_SUCCESS != reader.ReadCardNo(cardNo)){ this->SetDlgItemTextA(IDC_STATIC_NOTIFY, _T(原创 2016-07-05 11:18:43 · 3131 阅读 · 0 评论 -
提示【启用“逐用户重定向”】
问题: C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(756,5): error MSB8011: 未能注册输出。请尝试启用“逐用户重定向”,或者使用提升的权限从命令提示符处注册该组件。 解决: Properties->Linker ->General->Pre-user Redir原创 2016-07-13 21:41:01 · 643 阅读 · 0 评论 -
调用动态库时声明的参数个数不一致导致的问题
问题: 原因:调用动态库时声明的参数个数不一致。 本文用菊子曰发布原创 2016-07-13 21:40:58 · 613 阅读 · 0 评论 -
VC写的短信收发程序
#include "stdafx.h" #include "Sms.h" #include "Comm.h" // 可打印字符串转换为字节数据 // 如:"C8329BFD0E01" --> {0xC8, 0x32, 0x9B, 0xFD, 0x0E, 0x01} // 输入: pSrc - 源字符串指针 // nSr转载 2012-08-11 18:22:24 · 979 阅读 · 0 评论 -
轻轻松松做内存检测
刚接触C++的时候总感觉内存泄露是很可怕的事,觉得手足无措,直到有一天发现心里的巨石居然是那么小的一个case。方法一:利用CRT调试堆函数举例说明:#ifdef _DEBUG#define CRTDBG_MAP_ALLOC#include #include #define new new(_NORMAL_BLOCK,__FILE__,__LINE__)#endi转载 2012-08-20 14:25:55 · 797 阅读 · 0 评论 -
如何使用扩展MFC dll
将普通的类转化成MFC Dll,只需要将将一个类的头文件的声明上加上AFX_EXT_CLASS即可,比如一个对话框类class CMyDlg : public CDialog,如果想将其改为MFC Dll项目,则可以新建一个MFC Dll项目,选择第三个“扩展MFC Dll”,点“完成”,将CMyDlg类的头文件和实现文件添加到该项目中,然后将CMyDlg的头文件声明改为:class AFX_EX转载 2013-04-07 21:52:32 · 895 阅读 · 0 评论 -
SAPI 包含sphelper.h编译错误解决方案
在使用Microsoft Speech SDK 5.1开发语音识别程序时,包含了头文件“sphelper.h”和库文件“sapi.lib”。编译时出错:1>c:/program files/microsoft speech sdk 5.1/include/sphelper.h(769) : error C4430: missing type specifier - int assumed. N转载 2013-04-08 16:43:14 · 1416 阅读 · 1 评论 -
Socket编程
客户端程序:// 下载基础信息void CTcpClientDlg::OnBnClickedBtnDownload(){ // TODO: 在此添加控件通知处理程序代码 WSADATA wsaData; int err; // 1、加载套接字库 err = WSAStartup(MAKEWORD(2, 2), &wsaData); if (err != 0) { Mes原创 2013-04-08 21:36:15 · 685 阅读 · 0 评论 -
初始化 DLL
DLL 通常具有在 DLL 加载时必须执行的初始化代码(如分配内存)。 使用 Visual C++ 时,在何处添加初始化 DLL 的代码取决于生成的 DLL 类型。 如果不需要添加初始化代码或终止代码,则在生成 DLL 时没有什么特别的事情要做。 如果需要初始化 DLL,则下表描述了应在何处添加代码。 DLL 类型转载 2013-04-10 16:38:52 · 1974 阅读 · 0 评论 -
VC6项目升级为VC2005
1、字符串函数cscpy、wcscpy等字符串函数不再允许使用,改为后面带_s的函数,并且每传入一个非const的字符串指针,都会要求后面跟一个表示字符串指针长度的参数老代码:wchar_t strTmp[100] = {0};wcscpy(strTmp, L”This is a Sample!”);新代码:wchar_t strTmp[100] = {0};wcscpy_原创 2013-04-13 15:43:13 · 884 阅读 · 0 评论 -
VC程序提示 Expression:("Buffer too small",0) 错误
错误:VC程序运行时提示下图的错误,但并不是每次都提示。解决:The call will fail if the string object itself is offered as a parameter to Format. For example, the following code: CString str = "Some Data"; str.For原创 2013-05-18 19:05:57 · 6761 阅读 · 0 评论 -
C#2005调用VC编写的DLL时出错
环境:Win8 64位;VS2005问题:在C#2005中调用VC编写的DLL时出错,提示错误如下:解决方法:在C#项目的属性中把“目标平台”修改为“x86”就OK啦。原创 2013-05-07 11:37:00 · 941 阅读 · 0 评论 -
strcpy_s与strcpy的比较
strcpy_s和strcpy()函数的功能几乎是一样的。strcpy函数,就象gets函数一样,它没有方法来保证有效的缓冲区尺寸,所以它只能假定缓冲足够大来容纳要拷贝的字符串。在程序运行时,这将导致不可预料的行为。用strcpy_s就可以避免这些不可预料的行为。这个函数用两个参数、三个参数都可以,只要可以保证缓冲区大小。三个参数时:errno_t strcpy_s(char *s转载 2012-08-11 14:14:38 · 1624 阅读 · 0 评论 -
VC程序提示 Expression:("Buffer too small",0) 错误
错误: VC程序运行时提示下图的错误,但并不是每次都提示。 解决: The call will fail if the string object itself is offered as a parameter to Format. For example, the following code: CString str = "Some Data"; str.Format("%原创 2016-07-05 11:19:16 · 2767 阅读 · 0 评论