1、toupper()函数
toupper是一个库函数
toupper的头文件:#include <ctype.h>
函数的原型:int toupper(int c);
函数说明:若参数 c 为小写字母则将该对应的大写字母返回。
返回值:返回转换后的大写字母,若不须转换则将参数c 值返回。
toupper的头文件:#include <ctype.h>
函数的原型:int toupper(int c);
函数说明:若参数 c 为小写字母则将该对应的大写字母返回。
返回值:返回转换后的大写字母,若不须转换则将参数c 值返回。
2.设置光标为等待状态
HCURSOR hCursor = LoadCursorW(NULL,IDC_WAIT);
SetCursor(hCursor);
ShowCursor(TRUE);
直接加入进去,如果没有等待,就是后面加入Sleep
3.字符串去掉头尾空格
CString.Replace(TEXT(" "), TEXT(""));//第一个是空格,第二个是\0
如果是char数组,去前后空格算法,还可以精炼:
int su = 1;
int su_long = 0;//长度
for (int i = 15; i > 0; i--)
{
if (CreateName[i] != '\0')
{
if (CreateName[i] == 32 && su == 1)
{
CreateName[i] = '\0';
}
else
{
su = 0;
su_long = i;
break;
}
}
}
su = 1;
while (1)
{
if (CreateName[0] == 32)
{
for (int j = 0; j < 14; j++)
{
CreateName[j] = CreateName[j + 1];
}
CreateName[su_long] = '\0';
su_long--;
}
else
{
break;
}
}
如果是字符串,首先转换为char数组,然后使用上面的算法,计算完后,再赋值给字符串:
int PCN_sum = PreName.GetLength();
if (PreName.GetLength() > 100)
PCN_sum = 100;
char a[100] = {0};
//如果是中文时这样就会有错
//for (int i = 0; i < PCN_sum; i++) //逐个元素赋值
// a[i] = PreName[i];
//中英文都可以
WideCharToMultiByte(CP_ACP, 0, PCName.GetBuffer(0), PCName.GetLength(), a, PCN_sum*2, 0, 0);
int su = 1;
int su_long = 0;//长度
for (int i = 15; i > 0; i--)
{
if (a[i] != '\0')
{
if (a[i] == 32 && su == 1)
{
a[i] = '\0';
}
else
{
su = 0;
su_long = i;
break;
}
}
}
su = 1;
while (1)
{
if (a[0] == 32)
{
for (int j = 0; j < 14; j++)
{
a[j] = a[j + 1];
}
a[su_long] = '\0';
su_long--;
}
else
{
break;
}
}
PreName = a;//char数组转换为字符串
4.Compare函数
CString add1 = TEXT("123");
CString add2 = TEXT("456");
①add.Compare(add2); //判断结果是否等于0,等于0即为相等
②add.Compare(1,2,add2);//add从第一个字符后截取2个字符,判断是否和add2相等
③add.Compare(1,2,add2,2,1);//add从第一个字符后截取2个字符,判断是否和add2从第二个字符后开始截取的1个字符相等
④add.Compare(0,2,TEXT("123"),2);//add从开头截取2个字符,判断是否和指定字符串前2个字符相等
5、数字转换为CString
char ss[10];
_itoa(int, ss, 10);
CString add = ss;
6、动态库和静态库的使用
①、使用.h和lib的方法
将.h文件和lib文件放在项目.h和.cpp目录中
添加
#include "FR.h"
#pragma comment(lib,"FR.lib")
然后就可以直接使用里面的参数了,直接调用函数
②、使用dll的方法
将dll放在项目目录中
添加
#pragma comment(lib,"FR.dll")
extern "C" _declspec(dllimport) void abc(int a,int b);
然后调用函数使用
7、添加相应左键双击的消息WM_LBUTTONDBLCLK
需要添加窗口相应双击的样式wndclass.style = CS_DBLCLKS
8、uint8_t转换为float,无符号整型转float
float a = 1.23456;
uint8_t b[4];
uint8_t *p = (uint8_t*)&a;
memcpy(p,b,32);
9、设置指定窗口为键盘焦点
::SetFocus(MainFrameHwnd);
10、数组操作
memset(数组,0,长度)//置0
wcscpy
memcpy
11、线程
HANDLE hTHreadTHDataDeal = (HANDLE)_beginthreadex(NULL, 0, COM_DataDealThread, NULL, 0, NULL);
CloseHandle(hTHreadTHDataDeal);
unsigned int WINAPI COM_DataDealThread(PVOID lpParameter)
{
while (1)
{
if (IsRecDataEnd == FALSE)
{
IsRecDataEnd = TRUE;
//响应函数
IsRecDataEnd = FALSE;
}
Sleep(5);
}
return 0;
}
12、string的头文件
#include <string>
using namespace std;
13、CString值无故变为BULL
使用会崩溃
解决方法:将在.h和.cpp中声明放在最前面
14、typedef unsigned int UINT和unsigned char
使用unsigned char来进行for循环出现过问题
15、将CString转换为UINT8
CString ProductKeyname = TEXT("AA-BB-CC-DD-EE-FF-00-11-22-33-44-55-66-77-88-99");
CString add = TEXT("");
UINT8 DataBuff[16];
for (int i = 0; i < 16; i++)
{
add = ProductKeyname.Mid(i * 3, 2);
int a;
char *stops, s[3];
s[0] = add.GetAt(0);
s[1] = add.GetAt(1);
s[2] = 0x0;
a = (unsigned char)strtoul(s, 0, 16);
DataBuff[i] = (UINT8)a;
}
16、获取剪切板数据
BOOL CtrlHold = false;
LRESULT CALLBACK EditProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_KEYUP:
CtrlHold = FALSE;
return 0;
case WM_KEYDOWN:
if (wParam == VK_CONTROL)//Ctrl
{
CtrlHold = TRUE;
}
break;
case WM_CHAR:
SHORT res;
res = GetAsyncKeyState((int)'V');
if ((res & 0x8000) && CtrlHold)//判断为按住CTRL+V键
{
CString add = TEXT("");
::OpenClipboard(hwnd); // 打开剪贴板
HANDLE hClipMemory = ::GetClipboardData(CF_TEXT);// 获取剪贴板数据句柄
DWORD dwLength = GlobalSize(hClipMemory); // 返回指定内存区域的当前大小
LPBYTE lpClipMemory = (LPBYTE)GlobalLock(hClipMemory); // 锁定内存
add = CString(lpClipMemory); // 保存得到的文本数据
GlobalUnlock(hClipMemory); // 内存解锁
::CloseClipboard(); // 关闭剪贴板
//然后操作add显示到什么控件上面
SetWindowText(hwndEdit, add);
}
}
}
17、获取exe路径
TCHAR exeFullPath[MAX_PATH]; // Full path
GetModuleFileName(NULL, exeFullPath, MAX_PATH);
std::wstring strFullPath = (std::wstring)(exeFullPath);
int nStart = strFullPath.find_last_of(TEXT("\\"));
CString exe_Path = exeFullPath;
exe_Path = exe_Path.Mid(0, nStart+1);//exe所在路径
exe_Path = exe_Path.Mid(nStart + 1, strFullPath.length() - 4);//exe完成名称