分享
 
 
 

如何给工具栏添加背景

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

ÈçºÎ¸ø¹¤¾ßÀ¸Ìí¼Ó±³¾°

£ £ ±¾ÎĽéÉÜÈçºÎ¸ø¹¤¾ßÀ¸Ìí¼Ó±³¾°£¬ÓÃÕâ¸ö·½·¨ÄãÒ²¿ÉÒÔ¸øÊÓͼµÈÌí¼Ó±³¾°¡£ÏÂͼΪʾÀý³ÌÐòµÄÔËÐÐЧ¹ûͼ£¬Àý×Ó

£ £

Ô­Àí

£ £ Windows ÔÚÖØ»­´°¿ÚµÄ±³¾°Ê±»áÏò´°¿Ú·¢ËÍ WM_ERASEBKGND ÏûÏ¢¡£Èç¹û³ÌÐò×Ô¼º²»´¦Àí¸ÃÏûÏ¢£¬Windows »áÓÃ×¢²á´°¿ÚÀàʱ WNDCLASS ½á¹¹µÄ hbrBackground ³ÉÔ±Ö¸¶¨µÄË¢×ÓÀ´ÖØ»­±³¾°¡£ÎÒÃÇÖ»ÐèÒª½Ó¹Ü¸ÃÏûÏ¢£¬»­ÉÏÎÒÃÇÐèÒªµÄ±³¾°£¬È»ºó֪ͨ Windows ²»ÓÃÖØ»­±³¾°¼´¿É¡£

£ £ ¾ßÌåµ½¹¤¾ßÀ¸µÄ±³¾°ÈçºÎʵÏÖ£¬Ö»ÐèÒª×ÓÀ໯¹¤¾ßÀ¸´°¿Ú£¬ÎÒÃǾÍÄܹ»´¦Àí¹¤¾ßÀ¸µÄ±³¾°ÖØ»­ÏûÏ¢¡£

Àý×Ó

.386

.model flat,stdcall

option casemap:none

;****************************************************************************************

include c:\masm32\include\windows.inc

include c:\masm32\include\user32.inc

include c:\masm32\include\kernel32.inc

include c:\masm32\include\gdi32.inc

include c:\masm32\include\comctl32.inc

includelib c:\masm32\lib\user32.lib

includelib c:\masm32\lib\kernel32.lib

includelib c:\masm32\lib\gdi32.lib

includelib c:\masm32\lib\comctl32.lib

;****************************************************************************************

WinMain proto :DWORD,:DWORD,:DWORD,:DWORD

TBProc proto :DWORD,:DWORD,:DWORD,:DWORD

;****************************************************************************************

.data

ClassName db "SimpleWinClass",0

AppName db "´ø±³¾°µÄ¹¤¾ßÀ¸",0

MenuName db "MAINMENU",0

ToolbarButtons TBBUTTON <0, 1000, TBSTATE_ENABLED, TBSTYLE_BUTTON,0, NULL, NULL>

£ £ £ £ £ £ £ £ TBBUTTON <1, 1001, TBSTATE_ENABLED, TBSTYLE_BUTTON,0, NULL, NULL>

£ £ £ £ £ £ £ £ TBBUTTON <NULL, NULL, NULL, TBSTYLE_SEP, NULL, NULL>;--- seperator

£ £ £ £ £ £ £ £ TBBUTTON <2, 1002, TBSTATE_ENABLED, TBSTYLE_BUTTON,0, NULL, NULL>

£ £ £ £ £ £ £ £ TBBUTTON <3, 1003, TBSTATE_ENABLED, TBSTYLE_BUTTON,0, NULL, NULL>

£ £ £ £ £ £ £ £ TBBUTTON <4, 1004, TBSTATE_ENABLED, TBSTYLE_BUTTON,0, NULL, NULL>

£ £ £ £ £ £ £ £ TBBUTTON <NULL, NULL, NULL, TBSTYLE_SEP, NULL, NULL>;--- seperator

£ £ £ £ £ £ £ £ TBBUTTON <5, 1005, TBSTATE_ENABLED, TBSTYLE_BUTTON,0, NULL, NULL>

.data?

hInstance HINSTANCE ?

CommandLine LPSTR ?

hMenu dd ?

hToolBar dd ?

OldTBProc dd ?

hBmpBk dd ?

.const

IDI_MAIN equ 900

IDB_TOOLBAR equ 901

IDB_BKGROUND equ 902

IDC_FILEOPEN equ 903

;****************************************************************************************

.code

start:

£ £ £ £ invoke GetModuleHandle, NULL

£ £ £ £ mov hInstance,eax

£ £ £ £ invoke GetCommandLine

£ £ £ £ mov CommandLine,eax

£ £ £ £ invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT

£ £ £ £ invoke InitCommonControls

£ £ £ £ invoke ExitProcess,eax

WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD

£ £ £ £ LOCAL wc:WNDCLASSEX

£ £ £ £ LOCAL msg:MSG

£ £ £ £ LOCAL hwnd:HWND

£ £ £ £ mov wc.cbSize,SIZEOF WNDCLASSEX

£ £ £ £ 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 LoadMenu, hInst, offset MenuName

£ £ £ £ mov hMenu, eax

£ £ £ £ invoke RegisterClassEx, addr wc

£ £ £ £ invoke CreateWindowEx,NULL,addr ClassName,addr AppName,£ £ £ £ £ £ £ £ £ £ £ £ WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,£ £ £ £ £ £ £ £ £ £ £ £ CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,hMenu,£ £ £ £ £ £ £ £ £ £ £ £ hInst,NULL

£ £ £ £ mov hwnd,eax

£ £ £ £ invoke ShowWindow, hwnd,SW_SHOWNORMAL

£ £ £ £ invoke UpdateWindow, hwnd

£ £ £ £ .WHILE TRUE

£ £ £ £ £ £ £ £ invoke GetMessage, addr msg,NULL,0,0

£ £ £ £ £ £ £ £ .BREAK .IF (!eax)

£ £ £ £ £ £ £ £ invoke TranslateMessage, addr msg

£ £ £ £ £ £ £ £ invoke DispatchMessage, addr msg

£ £ £ £ .ENDW

£ £ £ £ mov eax,msg.wParam

£ £ £ £ ret

WinMain endp

WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM

£ £ £ £ .IF uMsg==WM_DESTROY

£ £ £ £ £ £ £ £ invoke PostQuitMessage,NULL

£ £ £ £ .ELSEIF uMsg==WM_SIZE

£ £ £ £ £ £ £ £ invoke SendMessage, hToolBar, uMsg, wParam, lParam

£ £ £ £ .ELSEIF uMsg==WM_CREATE

£ £ £ £ £ £ £ £ invoke LoadIcon, hInstance, IDI_MAIN

£ £ £ £ £ £ £ £ invoke SendMessage, hWnd, WM_SETICON, ICON_SMALL, eax

£ £ £ £ £ £ £ £ invoke LoadBitmap, hInstance, IDB_BKGROUND

£ £ £ £ £ £ £ £ mov hBmpBk, eax

£ £ £ £ £ £ £ £ invoke CreateToolbarEx,hWnd,WS_CHILD or WS_VISIBLE or TBSTYLE_FLAT or WS_BORDER£ £ £ £ £ £ £ £ £ £ £ £ £ £ £ £ 1, 6, hInstance, IDB_TOOLBAR, ADDR ToolbarButtons,£ £ £ £ £ £ £ £ £ £ £ £ £ £ £ £ 8, 32, 32, 32, 32, SIZEOF TBBUTTON

£ £ £ £ £ £ £ £ mov hToolBar, eax

£ £ £ £ £ £ £ £ invoke SendMessage, hToolBar, TB_AUTOSIZE, NULL, NULL

£ £ £ £ £ £ £ £ invoke SetWindowLong, hToolBar, GWL_WNDPROC, addr TBProc

£ £ £ £ £ £ £ £ mov OldTBProc, eax

£ £ £ £ .ELSE

£ £ £ £ £ £ £ £ invoke DefWindowProc,hWnd,uMsg,wParam,lParam

£ £ £ £ £ £ £ £ ret

£ £ £ £ .ENDIF

£ £ £ £ xor eax,eax

£ £ £ £ ret

WndProc endp

TBProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM

£ £ £ £ local rect:RECT

£ £ £ £ local hDC:HDC

£ £ £ £ local hMemDC:HDC

£ £ £ £ local bm:BITMAP

£ £ £ £ .IF uMsg==WM_ERASEBKGND

£ £ £ £ £ £ £ £ mov eax, wParam

£ £ £ £ £ £ £ £ mov hDC, eax

£ £ £ £ £ £ £ £ invoke CreateCompatibleDC, hDC

£ £ £ £ £ £ £ £ mov hMemDC, eax

£ £ £ £ £ £ £ £ invoke GetObject, hBmpBk, sizeof BITMAP, addr bm

£ £ £ £ £ £ £ £ invoke SelectObject, hMemDC, hBmpBk

£ £ £ £ £ £ £ £ invoke GetClientRect, hWnd, addr rect

£ £ £ £ £ £ £ £ mov ebx, rect.left

£ £ £ £ £ £ £ £ .WHILE ebx<rect.right

£ £ £ £ £ £ £ £ £ £ £ £ invoke BitBlt, hDC, ebx, 0, bm.bmWidth, bm.bmHeight, hMemDC, 0, 0, SRCCOPY

£ £ £ £ £ £ £ £ £ £ £ £ add ebx, bm.bmWidth

£ £ £ £ £ £ £ £ .ENDW

£ £ £ £ £ £ £ £ invoke DeleteDC, hMemDC

£ £ £ £ £ £ £ £ invoke ReleaseDC, hWnd, hDC

£ £ £ £ .ELSE

£ £ £ £ £ £ £ £ invoke CallWindowProc, OldTBProc, hWnd, uMsg, wParam, lParam

£ £ £ £ £ £ £ £ ret

£ £ £ £ .ENDIF

£ £ £ £ xor eax, eax

£ £ £ £ ret

TBProc endp

end start

·ÖÎö

invoke SetWindowLong, hToolBar, GWL_WNDPROC, addr TBProc

mov OldTBProc, eax

×ÓÀ໯¹¤¾ßÀ¸´°¿Ú£¬±£´æÔ­À´µÄ´°¿Ú¹ý³Ì¡£

.IF uMsg==WM_ERASEBKGND

£ £ £ £ mov eax, wParam

£ £ £ £ mov hDC, eax

£ £ £ £ invoke CreateCompatibleDC, hDC

£ £ £ £ mov hMemDC, eax

£ £ £ £ invoke GetObject, hBmpBk, sizeof BITMAP, addr bm

£ £ £ £ invoke SelectObject, hMemDC, hBmpBk

£ £ £ £ invoke GetClientRect, hWnd, addr rect

£ £ £ £ mov ebx, rect.left

£ £ £ £ .WHILE ebx<rect.right

£ £ £ £ £ £ £ £ invoke BitBlt, hDC, ebx, 0, bm.bmWidth, bm.bmHeight, hMemDC, 0, 0, SRCCOPY

£ £ £ £ £ £ £ £ add ebx, bm.bmWidth

£ £ £ £ .ENDW

£ £ £ £ invoke DeleteDC, hMemDC

£ £ £ £ invoke ReleaseDC, hWnd, hDC

´¦Àí¹¤¾ßÀ¸µÄ WM_ERASEBKGND ÏûÏ¢£¬¸ù¾Ý±³¾°Í¼Æ¬µÄ´óСƽÆÌÕû¸ö¹¤¾ßÀ¸¿Í»§Çø¡£

CopyRight (C) 2001-2002 Ò»¿éÈýëǮ

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有