日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

win32汇编处理字符消息和给常量区标号赋值

發(fā)布時(shí)間:2025/4/14 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 win32汇编处理字符消息和给常量区标号赋值 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

程序運(yùn)行如下;當(dāng)按下一個(gè)按鍵,在窗口上顯示該字符;

程序;masm32;Build All;

當(dāng)消息為wm_char,即 uMsg==WM_CHAR;

所按下的鍵在wParam中,將此值轉(zhuǎn)到char中;然后調(diào)用InvalidateRect,調(diào)用此函數(shù)后,窗口無效,將執(zhí)行消息處理的WM_PAINT分支;

處理WM_PAINT消息時(shí),調(diào)用TextOut,在窗口上輸出了char的內(nèi)容;

看代碼,

? ??char WPARAM 20h

char 標(biāo)號(hào)定義在常量區(qū),類型是WPARAM;

假設(shè)現(xiàn)在我想在按下 o 鍵時(shí),在窗口上輸出 9 ;修改代碼如下圖;

構(gòu)建,如下圖;錯(cuò)誤,提示 標(biāo)號(hào)重定義:char;

看來還得使用push pop對(duì),改為如下;

好了,當(dāng)按下 o ,輸出 9;其他鍵不變;

.386 .model flat,stdcall option casemap:noneWinMain proto :DWORD,:DWORD,:DWORD,:DWORDinclude S:\masm32\include\windows.inc include S:\masm32\include\user32.inc include S:\masm32\include\kernel32.inc include S:\masm32\include\gdi32.inc includelib S:\masm32\lib\user32.lib includelib S:\masm32\lib\kernel32.lib includelib S:\masm32\lib\gdi32.lib.data ClassName db "SimpleWinClass",0 AppName db "wm_char Demo Window",0 char WPARAM 20h.data? hInstance HINSTANCE ? CommandLine LPSTR ?.code start: invoke GetModuleHandle,NULL mov hInstance,eax invoke GetCommandLine mov CommandLine,eax invoke WinMain,hInstance,NULL,CommandLine,SW_SHOWDEFAULT invoke ExitProcess,eaxWinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORDLOCAL wc:WNDCLASSEXLOCAL msg:MSGLOCAL hwnd:HWNDmov wc.cbSize,SIZEOF WNDCLASSEXmov wc.style,CS_HREDRAW or CS_VREDRAWmov wc.lpfnWndProc,OFFSET WndProcmov wc.cbClsExtra,NULLmov wc.cbWndExtra,NULLpush hInstpop wc.hInstancemov wc.hbrBackground,COLOR_WINDOW+1mov wc.lpszMenuName,NULLmov wc.lpszClassName,OFFSET ClassNameinvoke LoadIcon,NULL,IDI_APPLICATIONmov wc.hIcon,eaxmov wc.hIconSm,eaxinvoke LoadCursor,NULL,IDC_ARROWmov wc.hCursor,eaxinvoke RegisterClassEx,ADDR wcinvoke CreateWindowEx,NULL,ADDR ClassName,ADDR AppName,\WS_OVERLAPPEDWINDOW,100,100,\100,100,NULL,NULL,hInst,NULLmov hwnd,eaxinvoke ShowWindow,hwnd,SW_SHOWNORMALinvoke UpdateWindow,hwnd.while TRUEinvoke GetMessage,ADDR msg,NULL,0,0.break .if (!eax)invoke TranslateMessage,ADDR msginvoke DispatchMessage,ADDR msg.endwmov eax,msg.wParamretWinMain endp WndProc proc hWnd:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAMLOCAL hdc:HDCLOCAL ps:PAINTSTRUCT.if uMsg==WM_DESTROYinvoke PostQuitMessage,NULL.elseif uMsg==WM_CHARpush wParampop char.if char=='o'push '9'pop char.endifinvoke InvalidateRect,hWnd,NULL,TRUE.elseif uMsg==WM_PAINTinvoke BeginPaint,hWnd,ADDR psmov hdc,eaxinvoke TextOut,hdc,0,0,ADDR char,1invoke EndPaint,hWnd,ADDR ps.elseinvoke DefWindowProc,hWnd,uMsg,wParam,lParamret.endifxor eax,eaxretWndProc endp end start

?

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的win32汇编处理字符消息和给常量区标号赋值的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。