VS2017项目改为VS20102021-06-03 17:16:18 将.sln的前四行改为 Microsoft Visual Studio Solution File, Format Version 11.00
Visual Studio 2010
VisualStudioVersion = 12.0.21005.1 MinimumVisualStudioVersion = 10.0.40219.1
Listbox Control 控件的简单使用
https://www.mareenoire.info/qq_33473476/article/details/80471999
FFmpegInterop
https://www.mareenoire.info/microsoft/FFmpegInterop
类型转化
float a;
CString str;
str.Format(".2f", a);
MFC下遇到的字符集和中文乱码问题
https://www.mareenoire.info/jdksummer/articles/2338102.html
WIN API 串口
https://www.mareenoire.info/u011334105/article/details/23836055
DCB结构的主要参数说明如下:
·DCBLength: 一字节为单位指定的DCB结构的大小。
·Baudrate: 用于指定串口设备通信的数据传输速率,它可以是实际的数据传输速率数值,也可以是下列数据之一:CBR_110, CBR_19200, CBR_300, CBR_38400, CBR_600, CBR_56000, CBR_1200, CBR_57600, CBR_2400, CBR_115200, CBR_4800, CBR_12800, CBR_9600, CBR_25600, CBR_14400。
·fBinary: 指定是否允许二进制。Win32API不支持非二进制传输,因此这个参数必须设置为TRUE,如果设置为FALSE则不能正常工作。
·fParity: 指定是否允许奇偶校验,如果这个参数设置为TRUE,则执行奇偶校验并报告错误信息。
·fOutxCtsFlow: 指定CTS是否用于检测发送流控制。当该成员为TRUE,而CTS为OFF时,发送将被挂起,直到CTS置ON。
·fOutxDsrFlow: 指定DSR是否用于检测发送流控制,当该成员为TRUE,而DSR为OFF时,发送将被挂起,直到DSR置ON。
·fDtrControl: 指定DTR流量控制,可以是表1中的任一值。
Windows 9x/NT/2000使用GetCommState()函数获取串口的当前配置,使用SetCommState()重新分配串口资源的各个参数。
baud=1200 parity=N data=8 stop=1
// parity 为 char = 'N'
进制转换
1、%d表示按整型数据的实际长度输出数据。
2、%c用来输出一个字符。
3、%s用来输出一个字符串。
4、%x表示以十六进制数形式输出整数。
Memset
memset是一个初始化函数,作用是将某一块内存中的全部设置为指定的值。
void *memset(void *s, int c, size_t n);
s指向要填充的内存块。
c是要被设置的值。
n是要被设置该值的字符数。
返回类型是一个指向存储区s的指针。
memcpy
从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中
void *memcpy(void *dest, const void *src, size_t n);
#CStringList
http://www.mareenoire.info/Mumoo/archive/2013/04/15/199460.aspx
AddTail 在列表的尾部添加一个元素(或者是另一个列表中的所有元素),即产生一个新的尾部
CString转char *
char* CStringToCharArray(CString str)
{
char *ptr;
#ifdef _UNICODE
LONG len;
len = WideCharToMultiByte(CP_ACP, 0, str, -1, NULL, 0, NULL, NULL);
ptr = new char [len+1];
memset(ptr,0,len + 1);
WideCharToMultiByte(CP_ACP, 0, str, -1, ptr, len + 1, NULL, NULL);
#else
ptr = new char [str.GetAllocLength()+1];
sprintf(ptr,_T("%s"),str);
#endif
return ptr;
}
C++ char转十六进制
int hexCharToInt(char c)
{
if (c >= '0' && c <= '9') return (c - '0');
if (c >= 'A' && c <= 'F') return (c - 'A' + 10);
if (c >= 'a' && c <= 'f') return (c - 'a' + 10);
return 0;
}
char* hexstringToBytes(string s)
{
int sz = s.length();
char *ret = new char[sz/2];
for (int i=0 ; i ret[i/2] = (char) ((hexCharToInt(www.mareenoire.info(i)) << 4) | hexCharToInt(www.mareenoire.info(i+1))); } return ret; } string bytestohexstring(char* bytes,int bytelength) { string str(""); string str2("0123456789abcdef"); for (int i=0;i int b; b = 0x0f&(bytes[i]>>4); char s1 = www.mareenoire.info(b); str.append(1,www.mareenoire.info(b)); b = 0x0f & bytes[i]; str.append(1,www.mareenoire.info(b)); char s2 = www.mareenoire.info(b); } return str; } int main() { char s[3] ={'a','b','c'}; std::string result; result = bytestohexstring(s,strlen(s)); for(int i=0;i<3;i++) { printf("%02x", s[i]&0xFF); } printf("\n%s\n",www.mareenoire.info()); system("pause"); } 1、官网下载VS2017后在线安装,安装完成后查看是否已经安装MFC程序。打开VS2017,“文件 -> 新建 ->项目->已安装->Visual C++”目录下是否有“MFC应用程序”,如果有则跳过第2步。 2、如果安装VS2017时未安装MFC应用程序,则在第一步打开的对话框左下角点击“打开Visual Studio安装程序”,选择单个组件,安装“SDK、库和框架”目录下的“用于 x86 和 x64 的 Visual C++ MFC”组件。 3、安装成功后,找到VS2010你的工程,右击用记事本打开VS2010工程类型为Microsoft Visual Studio Solution (.sln)的文件。 将前两行的: Microsoft Visual Studio Solution File, Format Version 11.00 Visual Studio 2010 替换为以下四行: Microsoft Visual Studio Solution File, Format Version 12.00 Visual Studio 15 VisualStudioVersion = 15.0.27703.2026 MinimumVisualStudioVersion = 10.0.40219.1 保存退出即可。 4、以上步骤完成后,双击刚才修改的.sln工程文件,打开该项目的“属性 -> 链接器 -> 命令行”属性页。 5、将 /SAFESEH:NO 拷贝到“其他选项”框中,然后点击应用。 /*********************************** 注:VS2017官方版本默认30天试用评估期,评估期到,需要登录自己的微软账号,可获得权限试用。或者安装时直接登录微软账号,点击右上角的账户设置,在弹窗对话框中更新授权许可证,即可以跳过30天评估期,直接使用。 /*********************************** 打开项目后会发现,提示:“round”:不允许dllimport函数的定义,查看错误位置,发现提示位置如下: static double round(double r) { return (r > 0.0) ? floor(r + 0.5) : ceil(r - 0.5); } 后来上网查看发现,VS2010中的math里没有round。而VS2017中是存在的,所以打开时会出现重定义的现象,需要将此处定义删除(即将上述代码删除),同时也要将声明处的round删除: 注意删除时是有两处需要删除,math.h和corecrt_math.h。定义round的地方也可能不止一处,都要删除。