
MFC
Arno0377
C++/C# 工控开发
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
stringstream 数字转字符串 出现逗号 解决
stringstream 数字转字符串异常问题原创 2022-06-08 20:20:01 · 558 阅读 · 0 评论 -
C++ operator 简单使用
1、operator作类的转换函数类可以使用构造函数将其他类型转化为此类的对象,比如my_class a = my_class(int i);将int型转化为my_class类的一个对象。同样,也可以使用类的转换函数将类的对象转化为其他的类型。类的转换函数应当满足以下的几个条件:转换函数必须是类方法转换函数不能指定返回类型转换函数不能有参数下面是一个类转化函数的例子#include <iostream> using namespace std; class my_cl转载 2021-12-22 13:57:53 · 2912 阅读 · 0 评论 -
ATL中CA2T乱码问题
This code:CopyLPCTSTR szr = CA2T(szReplaceFile); is equivalent to this:``````cppLPCTSTR szr;{ CA2T temp(szReplaceFile); szr = temp.operator LPTSTR();} As the memory allocated by the temporary object and returned from the cast operator原创 2021-12-22 13:27:52 · 286 阅读 · 0 评论 -
窗口上绘制图像不显示问题
标题MFC窗口上bitblt不显示图像问题一个问题坑了半天都才解决,自己记录下来做个记录,为遇到同样困难的同学做一个指引。void CMFCShowPicDlg::OnBnClickedButton2(){ // TODO: 在此添加控件通知处理程序代码 CClientDC dc(this);//一定不要用Cpaintdc CString strFile = _T(""); CFileDialog dlgFile(TRUE, NULL, NULL, OFN_HIDEREADONLY,原创 2021-09-18 21:48:03 · 570 阅读 · 0 评论 -
A2T引起的堆栈溢出问题
A2T引起的堆栈溢出问题USES_CONVERSION是用来转换类型的,比如我们很常见的问题:在Socket编程时候,我们的IP地址从界面上输进去一般都使用CString类型的,可是在SOCKADDR_IN中的inet_addr却是const char *我们就不能直接用CString来用。我们就可以使用T2A()宏了。SOCKADDR_IN localaddr;CString m_IP = L"192.168.1.2";USES_CONVERSION;localaddr.sin_family原创 2021-09-01 17:34:28 · 571 阅读 · 0 评论 -
C++ GetVersion 替代
VS2019中GetVersion没法使用提示过期,用下面的函数来替代typedef struct _PEB { BOOLEAN InheritedAddressSpace; BOOLEAN ReadImageFileExecOptions; BOOLEAN BeingDebugged; BOOLEAN BitField; HANDLE Mutant; PVOID ImageBaseAddress; PVOID Ldr; PVOID ProcessParameters;原创 2021-06-09 10:21:02 · 507 阅读 · 0 评论 -
SetwindowText 之线程阻塞
示意代码:CriticalSection g_Section;CDialog g_Dlg;// 工作线程函数UINT TreadFunc_A(PVOID para){Sleep(10);g_Section.Lock();Sleep(3000);g_Dlg.m_Show_Edit.SetWindowText("TreadFuncA");// Beep(400,20);g_Section.Unlock();}// 窗口按钮消息函数void CDialog::OnButton转载 2021-04-06 15:37:08 · 534 阅读 · 0 评论 -
C++智能指针管理new出来的char* buffer
std::unique_ptr<char[]> chars(new char[1024]);原创 2020-12-10 08:52:51 · 1402 阅读 · 0 评论 -
MFC 判断窗口是否是置顶状态
VC++ 判断你的窗口是否置顶TopMost 大家可能已经知道,使你的窗口置顶(TopMost)或者总是最前(Always on Top)的方法:// Make topmost::SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); // Revert back::SetWindowPos(hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);原创 2020-09-05 14:42:16 · 1226 阅读 · 0 评论 -
使用Dependency Walker工具查看DLL文件
右上方一共有两个部分,其中,PI是Parent Import Function List View的简写,E是Export Function List View的简写。通过这两个部分,用户可以观察到该DLL文件从哪些其他文件中调用了函数(PI),又提供了哪些接口,让其他的程序调用(E)。需要特别注意的是,DependencyWalker中提供的函数名是C语言可以调用的函数名。...原创 2020-07-14 18:48:08 · 788 阅读 · 0 评论 -
CLR system::string^转std::string
In mixed mode, you sometimes must marshal your data between native and managed types. The marshaling library helps you marshal and convert data in a simple way. The marshaling library consists of a set of functions and a marshal_context class that perform原创 2020-07-03 13:42:00 · 725 阅读 · 0 评论 -
C++ 中#和##
#和##运算符#:构串操作符构串操作符#只能修饰带参数的宏的形参,它将实参的字符序列(而不是实参代表的值)转换成字符串常量#define STRING(x) #x#x#x#define TEXT(x) "class"#x"Info"//宏引用:int abc = 100;STRING(abc);TEXT(abc);//替换结果:abcabcabcclassabcInfo##:合并操作符合并操作符##将出现在其左右的字符序列合并成一个新的标识符注意:使用合并操作符##时,自身的原创 2020-06-22 19:08:11 · 272 阅读 · 0 评论 -
C++ ##作用
它是个用在宏中的关键字.表示将前后数据连接起来.如: #define Conn(str) str##MyName这样使用 Conn(123)则等价于 123MyName原创 2020-06-22 11:25:03 · 136 阅读 · 0 评论 -
log4cplus 无法退出问题解决方法
log4cplus::Initializer构造函数调用log4cplus::initialize(),析构函数调用log4cplus::Logger::shutdown()log4cplus::Initializer m_initializer;//构造函数调用log4cplus::initialize(),析构函数调用log4cplus::Logger::shutdown()还没完:当你使用了ThreadPool之后,log4cplus总是会在main函数执行之前使用static机制初始化,并创建原创 2020-05-12 17:17:40 · 1472 阅读 · 0 评论 -
visual studio 多进程调试方法
最近项目上用到多进程,需要在vs2015上调试多进程,查找资料以及自己实践,总结出两种调试多进程的方法:方法一:使用Microsoft Child Process Debugging Power Tool插件:https://marketplace.visualstudio.com/items?itemName=vsdbgplat.MicrosoftChildProcessDebuggingP...转载 2020-05-04 09:32:12 · 1103 阅读 · 0 评论 -
C++ 强枚举类型
为了解决c/c++中的enum类型的一系列缺点,比如:非强类型,允许隐式转换为int型,占用存储空间及符号性不确定。c++11引入了枚举类(又称为:强枚举类型strong-typed enum)语法格式:enum class 类型名 {枚举值表}; 如:enum class People{yellow,black,white};//这样就成功的定义了一个强类型的枚举People。注意...原创 2020-04-25 09:26:01 · 1530 阅读 · 0 评论 -
c++中setw()与setfill()的用法详情
在C++中,setw(int n)用来控制输出间隔。例如:cout<<'s'<<setw(8)<<'a'<<endl;则在屏幕显示s a//s与a之间有7个空格,加上a就8个位置,setw()只对其后面紧跟的输出产生作用,如上例中,表示’a’共占8个位置,不足的用空格填充。若输入的内容超过setw()设置的长度,则按实际长度...原创 2020-04-21 10:09:56 · 285 阅读 · 0 评论 -
C++ 格式化输出字符串
%d 十进制有符号整数%u 十进制无符号整数%f 浮点数%s 字符串%c 单个字符%p 指针的值%e 指数形式的浮点数%x, %X 无符号以十六进制表示的整数%0 ...原创 2020-04-20 19:29:12 · 2585 阅读 · 0 评论 -
C++ 标准库获取当前系统时间精确到ms
void usr_getCurDate(string& outTime){ SYSTEMTIME systime; GetLocalTime(&systime);//本地时间 char chatTm[80]; //格式化输出时间 sprintf_s(chatTm, "%04d%02d", systime.wYear, systime.wMonth); outTime ...原创 2020-04-20 14:32:38 · 740 阅读 · 0 评论 -
未定义标识符ULONG_PTR,BOOL等错误解决方法
在vs2013中出现错误:未定义标识符ULONG_PTR,BOOL等添加 #include<windows.h>原创 2020-01-09 23:22:24 · 1542 阅读 · 0 评论 -
CMake生成unicode VC工程
Just add this line in your top CMakeLists.txt file:add_definitions(-DUNICODE -D_UNICODE)原创 2020-01-08 21:53:27 · 1240 阅读 · 0 评论 -
static_cast 运算符
将转换表达式为的类型类型的 id, 仅根据表达式中存在的类型。语法static_cast <type-id> ( expression )备注在标准 C++ 中,不进行运行时类型检查来帮助确保转换的安全。 在 C++/CX 中,将执行编译时和运行时检查。 有关更多信息,请参见 强制转换中定义的接口的私有 C++ 特定实现。Static_cast运算符可用于操作,如指针转换为...原创 2019-11-27 15:25:31 · 282 阅读 · 0 评论 -
VS2019安装后缺少MFC
VS2017解决方案升级成VS2019项目后mfc的头文件找不到,后来发现没有安装MFC和ATL。installer中修改添加Visual studio扩展开发选项,选中MFC和ATL。原创 2019-08-10 09:33:13 · 3362 阅读 · 0 评论