WIN32開發之小知識點

2021-08-19 19:31:05 字數 4015 閱讀 4356

1、

toupper()函式

toupper是乙個庫函式

toupper的標頭檔案:#include 函式的原型:int toupper(int c);

函式說明:若引數 c 為小寫字母則將該對應的大寫字母返回。

返回值:返回轉換後的大寫字母,若不須轉換則將引數c 值返回。toupper的標頭檔案:#include 函式的原型: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--)

else}}

su = 1;

while (1)

createname[su_long] = '\0';

su_long--;

}else

}

如果是字串,首先轉換為char陣列,然後使用上面的演算法,計算完後,再賦值給字串:

int pcn_sum = prename.getlength();

if (prename.getlength() > 100)

pcn_sum = 100;

char a[100] = ;

//如果是中文時這樣就會有錯

//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--)

else

}} su = 1;

while (1)

a[su_long] = '\0';

su_long--;

} else

}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)

sleep(5);

}return 0;

12、string的標頭檔案

#include

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++)

16、獲取剪下板資料

bool ctrlhold  = false;

lresult callback editproc(hwnd hwnd, uint message, wparam wparam, lparam lparam)

break;

case wm_char:

short res;

res = getasynckeystate((int)'v');

if ((res & 0x8000) && ctrlhold)//判斷為按住ctrl+v鍵

}}

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完成名稱

win32 執行緒知識點梳理四

本節內容關於win32中線程優先權。這是程序的屬性之一,表現出它和別的程序相比的重要性。優先權類別 基礎優先權值 realtime priority class 24high priority class 13normal priority class 7 or 8 idle priority cl...

APP開發小知識點

1.獲得專案中info.plist檔案的內容 1 nsbundle mainbundle infodictionary 2 版本號在info.plist中的key kcfbundleversionkey 2.自定義控制器的view 重寫loadview方法 不需要呼叫 super loadview ...

Unity 開發小知識點

1 gear vr中多相機切換時 主相機在轉動之後,切換到副相機,unity會自動把當前頭盔的旋轉與副相機的初始狀態之間的偏移加到副相機上,使副相機也旋轉到與主相機相同的位置並且這個過程需要一點時間。2 當canvas的rendermode是cameraspace時,orderinlayer不起作用...