八喜电子书 > 经管其他电子书 > windows环境下32位汇编语言程序设计 >

第50部分

windows环境下32位汇编语言程序设计-第50部分

小说: windows环境下32位汇编语言程序设计 字数: 每页4000字

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!




                            invoke  DestroyWindow;hWinMain

                            invoke  PostQuitMessage;NULL

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

                    。elseif eax   WM_CREATE

                            mov     eax;hWnd

                            mov     hWinMain;eax

                                 invoke   CreateWindowEx;WS_EX_CLIENTEDGE;addr szClass;

                                    NULL;WS_CHILD or WS_VISIBLE or ES_MULTILINE 

                                    or ES_WANTRETURN or WS_VSCROLL or

                                    ES_AUTOHSCROLL;0;0;0;0;

                                    hWnd;ID_EDIT;hInstance;NULL

                            mov     hWinEdit;eax

                            invoke  CreateToolbarEx;hWinMain;WS_VISIBLE or

                                    WS_CHILD or TBSTYLE_FLAT or TBSTYLE_TOOLTIPS or

                                          CCS_ADJUSTABLE;ID_TOOLBAR;0;HINST_MCTRL;

                                    IDB_STD_SMALL_COLOR;offset stToolbar;

                                    NUM_BUTTONS;0;0;0;0;sizeof TBBUTTON

                            Mov     hWinToolbar;eax

                            Call        _Resize

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

                    。elseif eax   WM_MAND

                            mov     eax;wParam

                            。if     ax    IDM_EXIT

                                    invoke  EndDialog;hWnd;NULL

                            。elseif ax !=   ID_EDIT

                                    invoke  wsprintf;addr @szBuffer;

                                            addr szFormat;wParam

                                    invoke  MessageBox;hWnd;addr @szBuffer;

                                            addr szCaption;

                                            MB_OK or MB_ICONINFORMATION

                            。endif

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

                        。elseif eax   WM_SIZE

                                call        _Resize

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

; 处理用户定制工具栏消息

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

                        。elseif eax   WM_NOTIFY

                                mov     ebx;lParam

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

; 因为印刷宽度,请注意缩进格式!

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

。if     'ebx + NMHDRde'  TTN_NEEDTEXT

            assume  ebx:ptr TOOLTIPTEXT

            mov     eax;'ebx'。hdr。idFrom

            mov     'ebx'。lpszText;eax

            push        hInstance

            pop     'ebx'。hinst

            assume  ebx:nothing

。elseif ('ebx + NMHDRde'  TBN_QUERYINSERT) || 

            ('ebx + NMHDRde'  TBN_QUERYDELETE)

            mov     eax;TRUE

            ret

。elseif 'ebx + NMHDRde'  TBN_GETBUTTONINFO

            assume  ebx:ptr TBNOTIFY

            mov     eax;'ebx'。iItem

            。if     eax 《 NUM_BUTTONS

                    mov     ecx;sizeof TBBUTTON

                    mul     ecx

                    add     eax;offset stToolbar

                    invoke  RtlMoveMemory;addr 'ebx'。tbButton;eax;sizeof TBBUTTON

                    invoke  LoadString;hInstance;'ebx'。tbButton。idmand;

                            addr @szBuffer;sizeof @szBuffer

                    lea     eax;@szBuffer

                    mov     'ebx'。pszText;eax

                    invoke  lstrlen;addr @szBuffer

                    mov     'ebx'hText;eax

                    assume  ebx:nothing

                    mov     eax;TRUE

                    ret

            。endif

。endif

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

                    。else

                            invoke  DefWindowProc;hWnd;uMsg;wParam;lParam

                            ret

                    。endif

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

                    xor     eax;eax

                    ret

 

_ProcWinMain        endp

;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

_WinMain            proc

                    local   @stWndClass:WNDCLASSEX

                    local   @stMsg:MSG

 

                    invoke  InitmonControls

                    invoke  GetModuleHandle;NULL

                    mov     hInstance;eax

                    invoke  LoadMenu;hInstance;IDM_MAIN

                    mov     hMenu;eax

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

; 注册窗口类

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

                    invoke  RtlZeroMemory;addr @stWndClass;sizeof @stWndClass

                    invoke  LoadIcon;hInstance;ICO_MAIN

                    mov     @stWndClass。hIcon;eax

                    mov     @stWndClass。hIconSm;eax

                    invoke  LoadCursor;0;IDC_ARROW

                    mov     @stWndClass。hCursor;eax

                    push        hInstance

                    pop     @stWndClass。hInstance

                    mov     @stWndClass。cbSize;sizeof WNDCLASSEX

                    mov     @stWndClass。style;CS_HREDRAW or CS_VREDRAW

                    mov     @stWndClass。lpfnWndProc;offset _ProcWinMain

                    mov     @stWndClass。hbrBackground;COLOR_BTNFACE+1

                    mov     @stWndClass。lpszClassName;offset szClassName

                    invoke  RegisterClassEx;addr @stWndClass



 
来源:电子工业出版社 作者:罗云彬 上一页         回书目         下一页          
上一页         回书目         下一页          
  


第9章 通用控件


9。3 使用工具栏(3)

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

; 建立并显示窗口

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

                    invoke  CreateWindowEx;NULL;

                            offset szClassName;offset szCaptionMain;

                            WS_OVERLAPPEDWINDOW;

                            CW_USEDEFAULT;CW_USEDEFAULT;700;500;

                            NULL;hMenu;hInstance;NULL

                    mov     hWinMain;eax

                    invoke  ShowWindow;hWinMain;SW_SHOWNORMAL

                    invoke  UpdateWindow;hWinMain

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

; 消息循环

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

                    。while  TRUE

                            invoke  GetMessage;addr @stMsg;NULL;0;0

                            。break  。if eax  0

                            invoke  TranslateMessage;addr @stMsg

                            invoke  DispatchMessage;addr @stMsg

                    。endw

                    ret

 

_WinMain            endp

;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

start:

                    call        _WinMain

                    invoke  ExitProcess;NULL

;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

                    end     start

资源脚本文件Toolbar。rc的内容如下:

 

//》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

#include            

//》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

#define ICO_MAIN            1000

#define IDM_MAIN            1000

#define IDM_NEW         1101

#define IDM_OPEN            1102

#define IDM_SAVE            1103    

#define IDM_PAGESETUP   1104

#define IDM_PRINT       1105

#define IDM_EXIT            1106

#define IDM_CUT         1201

#define IDM_COPY            1202

#define IDM_PASTE       1203

#define IDM_FIND            1204

#define IDM_REPLACE     1205

#define IDM_HELP            1301

//》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

ICO_MAIN            ICON            〃Main。ico〃

//》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

IDM_MAIN            menu        discardable

BEGIN

        popup   〃文件(&F)〃

        BEGIN

                menuitem        〃新文件(&N)。。。〃; IDM_NEW

                menuitem        〃打开文件(&O)。。。〃; IDM_OPEN

                menuitem        〃保存文件(&S)〃; IDM_SAVE

                menuitem        separator

                menuitem        〃页面设置(&A)。。。〃; IDM_PAGESETUP

                menuitem        〃打印(&P)。。。〃; IDM_PRINT

                menuitem        separator

                menuitem        〃退出(&X)〃; IDM_EXIT

        END

        popup   〃编辑(&E)〃

        BEGIN

                menuitem        〃剪切(&U)〃; IDM_CUT

                menuitem        〃拷贝(&C)〃; IDM_COPY

                menuitem        〃粘贴(&P)〃; IDM_PASTE

                menuitem        separator

                menuitem        〃查找字符串(&S)。。。〃;IDM_FIND

                menuitem        〃替换字符串(&R)。。。〃;IDM_REPLACE

        END

        popup   〃帮助(&H)〃

        BEGIN

                Menuitem        〃帮助(&H)〃; IDM_HELP

        END

END

//》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

stringtable discardable

BEGIN

        IDM_NEW 〃新建文件〃

        IDM_OPEN 〃打开文件〃

        IDM_SAVE 〃保存文件〃

        IDM_PAGESETUP 〃页面设置〃

        IDM_PRINT 〃打印〃

        IDM_COPY 〃拷贝〃

        IDM_CUT 〃剪切〃

        IDM_PASTE 〃粘贴〃

        IDM_FIND 〃查找〃

        IDM_REPLACE 〃替换〃

        IDM_HELP 〃帮助〃

END

//》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

资源脚本文件中定义了一些菜单,和状态栏例子程序一样,这些菜单也是仅用来做演示用途的,源程序中并没有书写处理菜单项的代码。

字符串表中定义的字符串是供工具提示信息使用的。

例子程序在主窗口的WM_CREATE消息中使用CreateToolbarEx函数建立工具栏。可以注意到,主程序建立了一个标准的窗口,而不是使用对话框做�

返回目录 上一页 下一页 回到顶部 赞(1) 踩(1)

你可能喜欢的