按键精灵通过句柄获取窗口坐标_使用visual studio 2019 创建简单的Windows窗口「Win32」...
生活随笔
收集整理的這篇文章主要介紹了
按键精灵通过句柄获取窗口坐标_使用visual studio 2019 创建简单的Windows窗口「Win32」...
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
今天Bili發(fā)現(xiàn)網(wǎng)上好多MFC代碼都不能用,給大家分享一個簡單的MFC窗口語言:
學(xué)的不僅僅是技術(shù),更是夢想
學(xué)的不僅僅是技術(shù),更是夢想
學(xué)的不僅僅是技術(shù),更是夢想
學(xué)的不僅僅是技術(shù),更是夢想
復(fù)制代碼ing:#include//底層實現(xiàn)窗口的頭文件//6.處理窗口過程//CALLBACK 代表_stdcall 參數(shù)的傳遞順序:從右到左依次入棧,并且函數(shù)返回前清空堆棧LRESULTCALLBACK WindowProc(HWND hand,//消息所屬窗口句柄UINT uMsg, //具體消息名稱 WM_XXXX消息名WPARAM wParam, //鍵盤附加消息LPARAM lParam) { //鼠標(biāo)附加消息switch (uMsg){case WM_CLOSE://所有以XXXXWindow為結(jié)尾的方法,都不會進(jìn)入到消息隊列中,而是直接執(zhí)行DestroyWindow(hand);//發(fā)送另一個消息WM_DESTROYbreak;case WM_DESTROY:PostQuitMessage(0);break;case WM_LBUTTONDOWN://鼠標(biāo)左鍵按下{int xPos = LOWORD(lParam);int yPos = HIWORD(lParam);char buf[1024];wsprintf(buf, TEXT("x = %d,y = %d"),xPos,yPos);MessageBox(hand, buf, TEXT("按下鼠標(biāo)左鍵"), MB_OK);break;}case WM_KEYDOWN://鍵盤{MessageBox(hand, TEXT("鍵盤"), TEXT("按下鍵盤"), MB_OK);break;}case WM_PAINT://畫圖{PAINTSTRUCT ps;//畫圖結(jié)構(gòu)體HDC hdc = BeginPaint(hand, &ps);TextOut(hdc, 100, 100,TEXT("hello"), strlen("hello"));EndPaint(hand, &ps);break;}default:break;}//返回值用默認(rèn)處理方式return DefWindowProc(hand, uMsg, wParam, lParam);}/*程序入口函數(shù)_In_ HINSTANCE hInstance,//應(yīng)用程序?qū)嵗浔鷂In_opt_ HINSTANCE hPrevInstance,//上一個應(yīng)用程序句柄,在WIN32環(huán)境下一般為NULL,不起作用了_In_ LPSTR lpCmdLine,//char * argv[]_In_ int nShowCmd//顯示命令 最大化、最小化、正常WINAPI 代表_stdcall 參數(shù)的傳遞順序:從右到左依次入棧,并且函數(shù)返回前清空堆棧*/int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) {/*1.設(shè)計窗口2.注冊窗口3.創(chuàng)建窗口4.顯示和更新5.通過循環(huán)取消息6.處理消息(窗口過程)*///1.設(shè)計窗口WNDCLASS wc;wc.cbClsExtra = 0;//類的額外的內(nèi)存wc.cbWndExtra = 0;//窗口額外的內(nèi)存wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); //設(shè)置背景wc.hCursor = LoadCursor(NULL, IDC_HAND);//設(shè)置光標(biāo),如果第一個參數(shù)為null,代表使用系統(tǒng)提供的光標(biāo)wc.hIcon = LoadIcon(NULL, IDI_ERROR);//圖標(biāo),如果第一個參數(shù)為null,代表使用系統(tǒng)提供的圖標(biāo)wc.hInstance = hInstance; //應(yīng)用程序的實例句柄,傳入winmain的形參即可wc.lpfnWndProc = WindowProc;//回調(diào)函數(shù) 窗口過程wc.lpszClassName = TEXT("WIN");//指定窗口名稱wc.lpszMenuName = NULL;//菜單名稱wc.style = 0;//顯示風(fēng)格,0代表默認(rèn)//2.注冊窗口RegisterClass(&wc);//3.創(chuàng)建窗口/*lpszClassName,//類名lpWindowName,//標(biāo)題名dwStyle,//風(fēng)格 WC_OVERLAPPEDWINDOWx, //坐標(biāo) CW_USERDEFAULTy, //坐標(biāo)nWidth,//寬nHeight,//高h(yuǎn)WndParent, //父窗口 nullhMenu,//菜單 nullhInstance, //實例句柄lpParam//附加值 鼠標(biāo)附加值*/HWND hwnd = CreateWindow(wc.lpszClassName, TEXT("WINDOWS"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);//4.顯示和更新ShowWindow(hwnd, SW_SHOWNORMAL);UpdateWindow(hwnd);/*HWND hwnd;//主窗口句柄UINT message;//具體消息名稱WPARAM wParam;//附加消息 鍵盤消息LPARAM lParam;//附加消息 鼠標(biāo)消息DWORD time;//消息產(chǎn)生時間POINT pt;*///附加消息 鼠標(biāo)消息 x,y//5.通過循環(huán)取消息MSG msg;/*_Out_ LPMSG lpMsg,//消息_In_opt_ HWND hWnd,//捕獲窗口 填null表示捕獲所有窗口_In_ UINT wMsgFilterMin,//最大和最小的過濾消息 一般填0_In_ UINT wMsgFilterMax);*/while (GetMessage(&msg, NULL, 0, 0)){/*if (GetMessage(&msg, NULL, 0, 0) == FALSE) {break;}*///翻譯消息TranslateMessage(&msg);//不是false//分發(fā)消息DispatchMessage(&msg);}return 0;}總結(jié)
以上是生活随笔為你收集整理的按键精灵通过句柄获取窗口坐标_使用visual studio 2019 创建简单的Windows窗口「Win32」...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大白菜u盘启动引导修复工具怎么用 使用大
- 下一篇: macos可以升级到指定版本吗_iOS1