;
帖子
3919 
精华
积分
11710 
鱼币
0 ¥ 
来自
大连 
在线时间
1858 小时 
注册时间
2007-6-11 
最后登录
2009-10-20 

贴图大师勋章新人进步勋章宣传大使勋章论坛元老勋章

3
发表于 2009-1-5 19:48 | 只看该作者
鍒涘缓绠鍗曠殑绐楀彛 - 缂栫▼搴 - Powered by SupeSite

浣犵殑浣嶇疆锛缂栫▼搴 >> 璧勮 >> 姹囩紪璇█ >> 姹囩紪鏂囨。 >> 璇︾粏鍐呭 鍦ㄧ嚎鎶曠ǹ

鍒涘缓绠鍗曠殑绐楀彛

鍙戝竷: 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

鎵撳嵃 | 鏀惰棌姝ら〉 |  鎺ㄨ崘缁欏ソ鍙 | 涓炬姤
涓婁竴绡 涓嬩竴绡
 

璇勫垎锛0

鍙戣〃璇勮
鏌ョ湅鍏ㄩ儴鍥炲銆愬凡鏈0浣嶇綉鍙嬪彂琛ㄤ簡鐪嬫硶銆