友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
飞读中文网 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

windows环境下32位汇编语言程序设计-第70章

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




资源脚本文件中的字符串表定义如下:

stringtable     discardable

BEGIN

        IDM_MENUHELP        〃包含文件操作的命令〃

            IDM_MENUHELP+1  〃包含操作视图的命令〃

 

            IDM_OPEN            〃打开需要编辑的文件〃

        IDM_SAVEAS      〃以另外一个文件名保存文件〃

            IDM_PAGESETUP   〃选择打印机以及设置页边距、纸张大小等打印参数〃

            。。。

dwMenuHelp数值第一项指定的基数为0,所以对于IDM_OPEN和IDM_SAVEAS等命令菜单项,MenuHelp显示的字符串就等于菜单项ID,我们在资源脚本中只要将对应菜单项的提示字符串ID等同于菜单项ID定义就可以了。

dwMenuHelp数值第二项指定的基数为IDM_MENUHELP,由于弹出式菜单没有ID,系统按照菜单的索引号加上基数当做字符串ID,所以对于第一个弹出式菜单“文件”,函数显示的是ID号为IDM_MENUHELP的字符串,对于第二个弹出式菜单“查看”,菜单索引为1,所以函数显示的是ID为IDM_MENUHELP+1的字符串。

用例子程序中这种简单的逻辑可以显示命令菜单项和第一级弹出式菜单的提示信息,但是无法显示第二级弹出式菜单的提示信息,如果要显示第二级弹出式菜单的提示信息,就必须根据WM_MENUSELECT消息的参数自己判断菜单是否是二级弹出式菜单,并根据不同的情况调用不同参数的MenuHelp函数来实现。



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


第9章 通用控件


9。3 使用工具栏(1)

    
工具栏一般位于主窗口菜单栏的下方。工具栏也是一个子窗口,它包含多个由位图组成的按钮,工具栏上的按钮从功能上看和菜单项是类似的,用户可以通过按动按钮来选择程序提供的各种功能。

工具栏上可以有不同种类的按钮,有的按钮按下后会自动弹起,有的按钮按下后保留在“选中”状态,再按一次后恢复弹起状态,按钮的“选中”状态可以是不互斥的或是互斥的,另外,按钮也可以被灰化或隐藏。所有这些按钮的属性和菜单项的属性是非常相似的,所以工具栏往往用做菜单的补充,为用户提供一个快捷的程序功能选择方式。

由于工具栏的主要用途是当做菜单的补充,为了和菜单逻辑使用同一套代码,当用户按下工具栏上的按钮时,工具栏向父窗口发送WM_MAND消息,除了按动按钮的通知消息之外,工具栏同样使用WM_NOTIFY消息将其他动作通知父窗口,如用户拖动按钮来调整按钮的位置等。

工具栏上面的按钮看起来和对话框中的按钮很相似,但实际上它们不是真正的按钮,而仅是被工具栏控件绘画成按钮的样子罢了,也就是说,对话框中的按钮是子窗口,而工具栏上的按钮并不是子窗口,工具栏控件处理这些“仿真”按钮的方式就和一些图形界面的游戏一样,在屏幕上绘画“模拟”的按钮样子并自行处理用户的鼠标动作,以此检测用户在“按钮”上的动作。

本节的例子程序创建一个如图9。4所示的平面样式的工具栏,当鼠标箭头移动到按钮上面的时候,按钮会以凸起的形状显示,鼠标停留片刻后,会出现一条简短的工具提示信息(图中鼠标箭头下方显示的“新建文件”)。

该例子程序代码在所附光盘的Chapter09Toolbar目录中,目录中包含汇编源文件Toolbar。asm以及资源脚本文件Toolbar。rc文件。


图9。4  工具栏例子的运行结果

Toolbar。asm文件的内容如下:

                    。386

                    。model flat; stdcall

                    option casemap :none

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

; Include 文件定义

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

include         windows。inc

include         user32。inc

includelib      user32。lib

include         kernel32。inc

includelib      kernel32。lib

include         ctl32。inc

includelib      ctl32。lib

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

; Equ 等值定义

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

ICO_MAIN            equ     1000

IDM_MAIN            equ     1000

IDM_NEW         equ     1101

IDM_OPEN            equ     1102

IDM_SAVE            equ     1103

IDM_PAGESETUP   equ     1104

IDM_PRINT       equ     1105

IDM_EXIT            equ     1106

IDM_CUT         equ     1201

IDM_COPY            equ     1202

IDM_PASTE       equ     1203

IDM_FIND            equ     1204

IDM_REPLACE     equ     1205

IDM_HELP            equ     1301

 

ID_TOOLBAR      equ     1

ID_EDIT         equ     2

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

; 数据段

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

                    。data?

 

hInstance       dd      ?

hWinMain            dd      ?

hMenu           dd      ?

hWinToolbar     dd      ?

hWinEdit            dd      ?

 

                    nst

szClass         db      'EDIT';0

szClassName     db      'ToolbarExample';0

szCaptionMain   db      '工具栏示例';0

szCaption       db      '命令消息';0

szFormat            db      '收到 WM_MAND 消息,命令ID:%d';0

stToolbar       equ     this byte

TBBUTTON  

TBBUTTON  

TBBUTTON  

TBBUTTON  

TBBUTTON  

TBBUTTON  

TBBUTTON  

TBBUTTON  

TBBUTTON  

TBBUTTON  

TBBUTTON  

TBBUTTON  

TBBUTTON  

TBBUTTON  

TBBUTTON  

TBBUTTON  

NUM_BUTTONS     EQU     16

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

; 代码段

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

 



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


第9章 通用控件


9。3 使用工具栏(2)

    
                    de

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

_Resize         proc

                    local   @stRect:RECT;@stRect1:RECT

 

                    invoke  SendMessage;hWinToolbar;TB_AUTOSIZE;0;0

                    invoke  GetClientRect;hWinMain;addr @stRect

                    invoke  GetWindowRect;hWinToolbar;addr @stRect1

                    mov     eax;@stRect1。bottom

                    sub     eax;@stRect1。top

                    mov     ecx;@stRect。bottom

                    sub     ecx;eax

                    invoke  MoveWindow;hWinEdit;0;eax;@stRect。right;ecx;TRUE

                    ret

 

_Resize         endp

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

_ProcWinMain        proc        uses ebx edi esi hWnd;uMsg;wParam;lParam

                    local   @szBuffer'128':byte

 

                    mov     eax;uMsg

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

                    。if     eax   WM_CLOSE

                            invoke  DestroyWindow;hWinMain

                            invoke  PostQuitMess
返回目录 上一页 下一页 回到顶部 0 0
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!