友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
windows环境下32位汇编语言程序设计-第53部分
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!
;********************************************************************
。elseif eax WM_CLOSE
invoke KillTimer;hWnd;1
invoke EndDialog;hWnd;NULL
;********************************************************************
。elseif eax WM_INITDIALOG
mov eax;hWnd
mov hWinMain;eax
invoke CreateStatusWindow;WS_CHILD OR WS_VISIBLE OR
SBS_SIZEGRIP;NULL;hWinMain;ID_STATUSBAR
mov hWinStatus;eax
invoke SendMessage;hWinStatus;SB_SETPARTS;
4;offset dwStatusWidth
mov lpsz1;offset sz1
mov lpsz2;offset sz2
invoke SendMessage;hWinStatus;SB_SETTEXT;2;lpsz1
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
来源:电子工业出版社 作者:罗云彬 上一页 回书目 下一页
上一页 回书目 下一页
第9章 通用控件
9。2 使用状态栏(2)
mov hWinEdit;eax
call _Resize
invoke SetTimer;hWnd;1;300;NULL
;********************************************************************
。elseif eax WM_MAND
mov eax;wParam
。if ax IDM_EXIT
invoke EndDialog;hWnd;NULL
。elseif ax ID_EDIT
invoke GetWindowTextLength;hWinEdit
invoke wsprintf;addr @szBuffer;
addr szFormat1;eax
invoke SendMessage;hWinStatus;SB_SETTEXT;
1;addr @szBuffer
。endif
;********************************************************************
。elseif eax WM_MENUSELECT
invoke MenuHelp;WM_MENUSELECT;wParam;lParam;
lParam;hInstance;hWinStatus;offset dwMenuHelp
。elseif eax WM_SIZE
call _Resize
;********************************************************************
; 检测用户在第3栏的按鼠标动作并将文字在“插入”和“改写”之间切换
;********************************************************************
。elseif eax WM_NOTIFY
。if wParam ID_STATUSBAR
mov eax;lParam
mov eax;'eax + NMHDRde'
。if eax NM_CLICK
;********************************************************************
invoke GetCursorPos;addr @stPoint
invoke GetWindowRect;hWinStatus;addr @stRect
mov eax;@stRect。left
mov ecx;eax
add eax;140
add ecx;172
。if (@stPoint。x 》= eax) && (@stPoint。x 》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
start:
invoke InitmonControls
invoke GetModuleHandle;NULL
mov hInstance;eax
invoke DialogBoxParam;hInstance;DLG_MAIN;
NULL;offset _ProcDlgMain;NULL
invoke ExitProcess;NULL
;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
end start
资源脚本文件StatusBar。rc的内容如下:
//》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
#include
//》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
#define ICO_MAIN 1000
#define DLG_MAIN 1000
#define IDM_MAIN 1000
#define IDM_OPEN 1101
#define IDM_SAVE AS 1102
#define IDM_PAGESETUP 1103
#define IDM_EXIT 1104
#define IDM_FIND 1201
#define IDM_REPLACE 1202
#define IDM_SELFONT 1203
#define IDM_SELCOLOR 1204
#define IDM_MENUHELP 1300
//》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
ICO_MAIN ICON 〃Main。ico〃
//》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
DLG_MAIN DIALOG 150; 180; 250; 130
MENU IDM_MAIN
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION |
WS_SYSMENU | WS_THICKFRAME
CAPTION 〃状态栏示例〃
FONT 9; 〃宋体〃
{
}
//》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
IDM_MAIN menu discardable
BEGIN
popup 〃文件(&F)〃
BEGIN
menuitem 〃打开文件(&O)。。。〃;IDM_OPEN
menuitem 〃文件另存为(&C)。。。〃;IDM_SAVEAS
menuitem separator
menuitem 〃页面设置(&P)。。。〃;IDM_PAGESETUP
menuitem separator
menuitem 〃退出(&X)〃;IDM_EXIT
END
popup 〃查看(&V)〃
BEGIN
menuitem 〃查找字符串(&S)。。。〃;IDM_FIND
menuitem 〃替换字符串(&R)。。。〃;IDM_REPLACE
menuitem separator
menuitem 〃选择字体(&F)。。。〃;IDM_SELFONT
menuitem 〃选择颜色(&B)。。。〃;IDM_SELCOLOR
END
END
//》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
stringtable discardable
BEGIN
IDM_MENUHELP 〃包含文件操作的命令〃
IDM_MENUHELP+1 〃包含操作视图的命令〃
IDM_OPEN 〃打开需要编辑的文件〃
IDM_SAVEAS 〃以另外一个文件名保存文件〃
IDM_PAGESETUP 〃选择打印机以及设置页边距、纸张大小等打印参数〃
IDM_EXIT 〃退出本程序〃
IDM_FIND 〃在窗口中搜索文字〃
IDM_REPLACE 〃在窗口中搜索文字并替换〃
IDM_SELFONT 〃选择窗口中文字使用的字体〃
IDM_SELCOLOR 〃选择窗口的背景颜色〃
END
//》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
来源:电子工业出版社 作者:罗云彬 上一页 回书目 下一页
上一页 回书目 下一页
第9章 通用控件
9。2 使用状态栏(3)
上述程序的结构和8。1节中演示通用对话框的例子几乎一模一样,使用的对话框和菜单都没有改变,但是源程序中将处理菜单项的代码全部去掉了,在菜单中保留这些菜单项仅为了演示在状态栏上显示菜单提示信息的功能,菜单提示信息字符串被定义在资源文件的字符串表中。
程序在初始化对话框的WM_INITDIALOG消息(如果建立的是窗口而不是对话框应该是WM_CREATE)中建立了一个状态栏和一个EDIT控件,并设置了一个定时器,用来在状态栏上显示时间。当窗口改变大小的时候,程序在WM_SIZE消息中重新安排状态栏和EDIT控件的位置。
另外,程序也处理状态栏发送的WM_NOTIFY通知消息,这是为了检测用户在第3栏上按下鼠标的动作,以便将文字在“插入”和“改写”之间切换,如果状态栏仅用于输出信息,那么就可以不处理WM_NOTIFY消息。
9。2。1 创建状态栏
创建状态栏可以使用CreateStatusWindow函数:
invoke CreateStatusWindow;style;lpszText;hwndParent;wID
mov hStatus;eax
style参数指明状态栏的风格,它可以是以下取值的组合:
● SBARS_SIZEGRIP——显示状态栏右下角的斜条,用户可以拖动这里来改变主窗口的大小。
● CCS_TOP,CCS_BOTTOM或CCS_NOMOVEY——代表状态栏的初始位置,分别表示位于主窗口上方、下方(默认值)和禁止沿Y方向移动。
● CCS_NOPARENTALIGN——状态栏只自动设置自己的高度,不自动设置自己的宽度,也不自动移动位置。
● CCS_NORESIZE——禁止状态栏所有的自动移动和自动设置自己大小的特性。并禁止CCS_TOP,CCS_BOTTOM,CCS_NOMOVEY和CCS_NOPARENTALIGN风格。
lpszText指向一个�
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!