鍒涘缓绠鍗曠殑绐楀彛
鍙戝竷: 2008-6-26 22:56 | 浣滆: admin | 鏌ョ湅: 3娆
鍒涘缓绠鍗曠殑绐楀彛锛
銆銆鍦ㄦ湰璇句腑鎴戜滑灏嗗啓涓涓 Windows 绋嬪簭锛屽畠浼氬湪妗岄潰鏄剧ず涓涓爣鍑嗙殑绐楀彛銆
鐞嗚锛
Windows 绋嬪簭涓紝鍦ㄥ啓鍥惧舰鐢ㄦ埛鐣岄潰鏃堕渶瑕佽皟鐢ㄥぇ閲忕殑鏍囧噯 Windows Gui 鍑芥暟銆傚叾瀹炶繖瀵圭敤鎴峰拰绋嬪簭鍛樻潵璇撮兘鏈夊ソ澶勶紝瀵逛簬鐢ㄦ埛锛岄潰瀵圭殑鏄悓涓濂楁爣鍑嗙殑绐楀彛锛屽杩欎簺绐楀彛鐨勬搷浣滈兘鏄竴鏍风殑锛屾墍浠ヤ娇鐢ㄤ笉鍚岀殑搴旂敤绋嬪簭鏃舵棤椤婚噸鏂板涔犳搷浣溿傚绋嬪簭鍛樻潵璇达紝杩欎簺 Gui 婧愪唬鐮侀兘鏄粡杩囦簡寰蒋鐨勪弗鏍兼祴璇曪紝闅忔椂鎷挎潵灏卞彲浠ョ敤鐨勩傚綋鐒惰嚦浜庡叿浣撳湴鍐欑▼搴忓浜庣▼搴忓憳鏉ヨ杩樻槸鏈夐毦搴︾殑銆備负浜嗗垱寤哄熀浜庣獥鍙g殑搴旂敤绋嬪簭锛屽繀椤讳弗鏍奸伒瀹堣鑼冦備綔鍒拌繖涓鐐瑰苟涓嶉毦锛屽彧瑕佺敤妯″潡鍖栨垨闈㈠悜瀵硅薄鐨勭紪绋嬫柟娉曞嵆鍙
涓嬮潰鎴戝氨鍒楀嚭鍦ㄦ闈㈡樉绀轰竴涓獥鍙g殑鍑犱釜姝ラ锛
寰楀埌鎮ㄥ簲鐢ㄧ▼搴忕殑鍙ユ焺(蹇呴渶)锛
寰楀埌鍛戒护琛屽弬鏁(濡傛灉鎮ㄦ兂浠庡懡浠よ寰楀埌鍙傛暟锛屽彲閫)锛
娉ㄥ唽绐楀彛绫(蹇呴渶锛岄櫎闈炴偍浣跨敤 Windows 棰勫畾涔夌殑绐楀彛绫伙紝濡 MessageBox 鎴 dialog box锛
浜х敓绐楀彛(蹇呴渶)锛
鍦ㄦ闈㈡樉绀虹獥鍙(蹇呴渶锛岄櫎闈炴偍涓嶆兂绔嬪嵆鏄剧ず瀹)锛
鍒锋柊绐楀彛瀹㈡埛鍖猴紱
杩涘叆鏃犻檺鐨勮幏鍙栫獥鍙f秷鎭殑寰幆锛
濡傛灉鏈夋秷鎭埌杈撅紝鐢辫礋璐h绐楀彛鐨勭獥鍙e洖璋冨嚱鏁板鐞嗭紱
濡傛灉鐢ㄦ埛鍏抽棴绐楀彛锛岃繘琛岄鍑哄鐞嗐
鐩稿浜庡崟鐢ㄦ埛鐨 DOS 涓嬬殑缂栫▼鏉ヨ锛學indows 涓嬬殑绋嬪簭妗嗘灦缁撴瀯鏄浉褰撳鏉傜殑銆備絾鏄 Windows 鍜 DOS 鍦ㄧ郴缁熸灦鏋勪笂鏄埅鐒朵笉鍚岀殑銆俉indows 鏄竴涓浠诲姟鐨勬搷浣滅郴缁燂紝鏁呯郴缁熶腑鍚屾椂鏈夊涓簲鐢ㄧ▼搴忓郊姝ゅ崗鍚岃繍琛屻傝繖灏辫姹 Windows 绋嬪簭鍛樺繀椤讳弗鏍奸伒瀹堢紪绋嬭鑼冿紝骞跺吇鎴愯壇濂界殑缂栫▼椋庢牸銆
鍐呭锛
涓嬮潰鏄垜浠畝鍗曠殑绐楀彛绋嬪簭鐨勬簮浠g爜銆傚湪杩涘叆澶嶆潅鐨勭粏鑺傚墠锛屾垜灏嗘彁绾叉寛棰嗗湴鎸囧嚭鍑犵偣瑕佺偣锛
鎮ㄥ簲褰撴妸绋嬪簭涓鐢ㄥ埌鐨勬墍鏈夊父閲忓拰缁撴瀯浣撶殑澹版槑鏀惧埌涓涓ご鏂囦欢涓紝骞朵笖鍦ㄦ簮绋嬪簭鐨勫紑濮嬪鍖呭惈杩欎釜澶存枃浠躲傝繖涔堝仛灏嗕細鑺傜渷鎮ㄥぇ閲忕殑鏃堕棿锛屼篃鍏嶅緱涓娆″張涓娆$殑鏁查敭鐩樸傜洰鍓嶏紝鏈瀹屽杽鐨勫ご鏂囦欢鏄 hutch 鍐欑殑锛屾偍鍙互鍒 hutch 鎴栨垜鐨勭綉绔欎笅杞姐傛偍涔熷彲浠ュ畾涔夋偍鑷繁鐨勫父閲忓拰缁撴瀯浣擄紝浣嗘渶濂芥妸瀹冧滑鏀惧埌鐙珛鐨勫ご鏂囦欢涓
鐢 includelib 鎸囦护锛屽寘鍚偍鐨勭▼搴忚寮曠敤鐨勫簱鏂囦欢锛岃濡傦細鑻ユ偍鐨勭▼搴忚璋冪敤 "MessageBox"锛 鎮ㄥ氨搴斿綋鍦ㄦ簮鏂囦欢涓姞鍏ュ涓嬩竴琛岋細 includelib user32.lib 杩欐潯璇彞鍛婅瘔 MASM 鎮ㄧ殑绋嬪簭灏嗚鐢ㄥ埌涓浜涘紩鍏ュ簱銆傚鏋滄偍涓嶆寮曠敤涓涓簱锛屽彧瑕佺畝鍗曞湴鍔犲叆 includelib 璇彞锛屼笉瑕佹媴蹇冮摼鎺ュ櫒濡備綍澶勭悊杩欎箞澶氱殑搴擄紝鍙鍦ㄩ摼鎺ユ椂鐢ㄩ摼鎺ュ紑鍏 /LIBPATH 鎸囨槑搴撴墍鍦ㄧ殑璺緞鍗冲彲銆
鍦ㄥ叾瀹冨湴鏂硅繍鐢ㄥご鏂囦欢涓畾涔夊嚱鏁板師鍨嬶紝甯告暟鍜岀粨鏋勪綋鏃讹紝瑕佷弗鏍间繚鎸佸拰澶存枃浠朵腑鐨勫畾涔変竴鑷达紝鍖呮嫭澶у皬鍐欍傚湪鏌ヨ鍑芥暟瀹氫箟鏃讹紝杩欏皢鑺傜害鎮ㄥぇ閲忕殑鏃堕棿锛
鍦ㄧ紪璇戯紝閾炬帴鏃剁敤makefile鏂囦欢锛屽厤鍘婚噸澶嶆暡閿
.386
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\user32.inc
includelib \masm32\lib\user32.lib ; calls to functions in user32.lib and kernel32.lib
include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib
WinMain proto :DWORD,:DWORD,:DWORD,:DWORD
.DATA ; initialized data
ClassName db "SimpleWinClass",0 ; the name of our window class
AppName db "Our First Window",0 ; the name of our window
.DATA? ; Uninitialized data
hInstance HINSTANCE ? ; Instance handle of our program
CommandLine LPSTR ?
.CODE ; Here begins our code
start:
invoke GetModuleHandle, NULL ; get the instance handle of our program.
; Under Win32, hmodule==hinstance mov hInstance,eax
mov hInstance,eax
invoke GetCommandLine ; get the command line. You don't have to call this function IF
; your program doesn't process the command line.
mov CommandLine,eax
invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT ; call the main function
invoke ExitProcess, eax ; quit our program. The exit code is returned in eax from WinMain.
WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
LOCAL wc:WNDCLASSEX ; create local variables on stack
LOCAL msg:MSG
LOCAL hwnd:HWND
mov wc.cbSize,SIZEOF WNDCLASSEX ; fill values in members of wc
mov wc.style, CS_HREDRAW or CS_VREDRAW
mov wc.lpfnWndProc, OFFSET WndProc
mov wc.cbClsExtra,NULL
mov wc.cbWndExtra,NULL
push hInstance
pop wc.hInstance
mov wc.hbrBackground,COLOR_WINDOW+1
mov wc.lpszMenuName,NULL
mov wc.lpszClassName,OFFSET ClassName
invoke LoadIcon,NULL,IDI_APPLICATION
mov wc.hIcon,eax
mov wc.hIconSm,eax
invoke LoadCursor,NULL,IDC_ARROW
mov wc.hCursor,eax
invoke RegisterClassEx, addr wc ; register our window class
invoke CreateWindowEx,NULL,\
ADDR ClassName,\
ADDR AppName,\
WS_OVERLAPPEDWINDOW,\
CW_USEDEFAULT,\
CW_USEDEFAULT,\
CW_USEDEFAULT,\
CW_USEDEFAULT,\
NULL,\
NULL,\
hInst,\
NULL
mov hwnd,eax
invoke ShowWindow, hwnd,CmdShow ; display our window on desktop
invoke UpdateWindow, hwnd ; refresh the client area




发表于 2009-1-5 19:48
| 











