首页
社区
课程
招聘
界面问题请教
发表于: 2006-12-6 20:36 6578

界面问题请教

2006-12-6 20:36
6578
这次我的问题仍是与界面相关的问题,也是如何用汇编语言实现的问题:
1.如何改变按钮上文字的颜色,实现象windows计算器一样的效果?
    windows计算器虽然简单,但要想模仿出来也不容易,按钮上的红色和蓝色的字我就做不出来,请问有什么简单的方法可以实现?
2.如何实现office2003一样界面效果?
    大家知道,office2003的界面是非常漂亮的,我的程序虽然实现了xp的风格,但仍不如office2003漂亮,请问怎样达到office2003一样的显示效果呢?

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (15)
雪    币: 222
活跃值: (10)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
2
不用窗口模版,用底层的GDI,你想做得多漂亮都可以
2006-12-6 21:52
0
雪    币: 253
活跃值: (250)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
3
to:drwch
    我还不想做得太漂亮,只要能模拟出来现在的计算器和office2003就行。想必你会用底层的GDI,能否详述一下,让大家分享你的高招。
2006-12-8 21:53
0
雪    币: 2506
活跃值: (1000)
能力值: (RANK:990 )
在线值:
发帖
回帖
粉丝
4
给个注册机模板给你,你可以研究一下它的界面。
上传的附件:
2006-12-8 23:01
0
雪    币: 253
活跃值: (250)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
5
谢谢CCDebuger大侠,我好好研究一下。
2006-12-9 20:32
0
雪    币: 253
活跃值: (250)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
6
经过一番研究,看明白了 CCDebuger 大侠(谢谢你!)提供的模板里用了所谓的自绘按钮,可以更改文字的颜色,也可以获得任意效果。可是要画出windows xp计算器那样简单的按钮却也要费一些周折,可能画不象,因此我又仔细研究了windows xp计算器的实现方法,发现它没有使用自绘按钮,它的按钮就是普通按钮,然后通过WM_NOTIFY消息(具体机制不太明白,我的编程水平有限),调用了如下一段程序,把按钮上的文字又另外的颜色重写了一遍:

01006177  |> \8B75 14           mov esi,[arg.4]                取第4个参数,是一个结构的指针  ;  Case 4E (WM_NOTIFY) of switch 01006124
0100617A  |.  837E 08 F4        cmp dword ptr ds:[esi+8],-0C        结构的这个段是什么?
0100617E  |.  8B5E 04           mov ebx,dword ptr ds:[esi+4]        这个段资源ID
01006181  |.  0F85 9A030000     jnz calc.01006521
01006187  |.  53                push ebx
01006188  |.  E8 A5EFFFFF       call calc.01005132                检查资源是否是按钮
0100618D  |.  85C0              test eax,eax
0100618F  |.  0F84 8C030000     je calc.01006521                不是则跳走
01006195  |.  8B46 0C           mov eax,dword ptr ds:[esi+C]        这个段是背景模式
01006198  |.  83F8 03           cmp eax,3
0100619B  |.  75 04             jnz short calc.010061A1
0100619D  |.  6A 20             push 20
0100619F  |.  EB 60             jmp short calc.01006201
010061A1  |>  83F8 01           cmp eax,1
010061A4  |.  0F85 77030000     jnz calc.01006521
010061AA  |.  8B3D 18100001     mov edi,dword ptr ds:[<&GDI32.SetBkMode>]     ;  GDI32.SetBkMode
010061B0  |.  50                push eax                                      ; /BkMode
010061B1  |.  FF76 10           push dword ptr ds:[esi+10]                    ; |hDC
010061B4  |.  FFD7              call edi                                      ; \SetBkMode 设置背景模式,返回原背景模式
010061B6  |.  F646 28 04        test byte ptr ds:[esi+28],4
010061BA  |.  8945 10           mov [arg.3],eax                                        保存原背景模式
010061BD  |.  8B049D 10490101   mov eax,dword ptr ds:[ebx*4+1014910]
010061C4  |.  8945 14           mov [arg.4],eax                                        把字符串地址写到这里
010061C7  |.  74 0A             je short calc.010061D3
010061C9  |.  6A 11             push 11                                       ; /Index = COLOR_GRAYTEXT
010061CB  |.  FF15 F8100001     call dword ptr ds:[<&USER32.GetSysColor>]     ; \GetSysColor
010061D1  |.  EB 06             jmp short calc.010061D9
010061D3  |>  53                push ebx
010061D4  |.  E8 74EFFFFF       call calc.0100514D                检查该资源的字用什么颜色
010061D9  |>  50                push eax                                      ; /Color
010061DA  |.  FF76 10           push dword ptr ds:[esi+10]                    ; |hDC
010061DD  |.  FF15 14100001     call dword ptr ds:[<&GDI32.SetTextColor>]     ; \SetTextColor
010061E3  |.  6A 25             push 25                                       ; /Flags = DT_CENTER|DT_VCENTER|DT_SINGLELINE
010061E5  |.  8D46 14           lea eax,dword ptr ds:[esi+14]                 ; |
010061E8  |.  50                push eax                                      ; |pRect
010061E9  |.  6A FF             push -1                                       ; |Count = FFFFFFFF (-1.)
010061EB  |.  FF75 14           push [arg.4]                                  ; |Text
010061EE  |.  FF76 10           push dword ptr ds:[esi+10]                    ; |hDC
010061F1  |.  FF15 BC100001     call dword ptr ds:[<&USER32.DrawTextW>]       ; \DrawTextW        输出文字
010061F7  |.  FF75 10           push [arg.3]                                  ; /BkMode
010061FA  |.  FF76 10           push dword ptr ds:[esi+10]                    ; |hDC
010061FD  |.  FFD7              call edi                                      ; \SetBkMode        把背景模式设回原值

    我现在对于自己如何编程实现这一效果还是没有把握,lParam指向的那个结构也不太清楚,大家如有明白的请指点一下,谢谢!
2006-12-18 23:19
0
雪    币: 367
活跃值: (20)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
7
WM_CTLCOLORBTN
WM_CTLCOLOREDIT
WM_CTLCOLORLISTBOX
WM_CTLCOLORMSGBOX
WM_CTLCOLORSCROLLBAR
WM_CTLCOLORSTATIC

查SDK,it's free
2006-12-21 19:36
0
雪    币: 253
活跃值: (250)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
8
经过一番努力,我已成功绘制出Windows 计算器 的大部分界面,现在还有一个小问题,解决了这个问题之后,我将把源代码发上来供大家参考。我的问题是:

    计算器中那个编辑框到底是什么风格?

如用只读属性,编辑框是灰色,如不用只读属性,编辑框是不灰啦,可是敲什么键都会输入进去,而Windows计算器却不是这样的,请大侠帮看一下,在此先行谢过。
2006-12-25 21:31
0
雪    币: 2506
活跃值: (1000)
能力值: (RANK:990 )
在线值:
发帖
回帖
粉丝
9
子类化就行了。相关内容可以看Iczelion的教程。
2006-12-25 22:16
0
雪    币: 253
活跃值: (250)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
10
子类化问题也已解决,现在面临的是:我的按钮还是一般的按钮,在被点击以后会成为当前按钮,如果按空格和回车会有反应,这和Windows计算器不一样,请问这是怎么回事儿?
2006-12-28 20:09
0
雪    币: 2506
活跃值: (1000)
能力值: (RANK:990 )
在线值:
发帖
回帖
粉丝
11
最初由 moon 发布
我的按钮还是一般的按钮,在被点击以后会成为当前按钮,如果按空格和回车会有反应,这和Windows计算器不一样,请问这是怎么回事儿?

看了几遍,没明白你的意思
2006-12-28 23:07
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
12
对所有按钮超类化(子类化),在按钮的WM_LBUTTONUP消息重设焦点试试。
2006-12-28 23:30
0
雪    币: 253
活跃值: (250)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
13
最初由 CCDebuger 发布
看了几遍,没明白你的意思

呵呵,就是输入焦点的问题,Windows计算器的按钮在点击之后输入焦点并不会停在那个按钮上,不知如何实现。看了《Windows程序设计》,大致明白了,可我的程序不知要改什么地方才行。

to 小虾:超类化的问题,我还得再研究几天看看。

谢谢各位大侠的点拨!
2006-12-29 18:16
0
雪    币: 253
活跃值: (250)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
14
我的asm源码如下:
	.586
	.model flat, stdcall
	option casemap :none   ; case sensitive
include		<windows.inc>
include		<kernel32.inc>
includelib	<kernel32.lib>
include		<user32.inc>
includelib	<user32.lib>
include		<gdi32.inc>
includelib	<gdi32.lib>
include		<comctl32.inc>
includelib	<comctl32.lib>
;*************************************************
DLG_MAIN		equ	101
ICO_1			equ	1005

	.data?
hInstance 		dd	?
lpOldProcEdit	dd	?

	.data
sta_stat		db	0
BtnText			db	16 dup (0)
addr0			dd	62 dup (0)

	.const
str0			db	'0. ',0
str1			db	'0 ',0

	.code
; 编辑框的新窗口过程>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_ProcEdit	proc	uses ebx edi esi hWnd,uMsg,wParam,lParam
	.if uMsg < 200h || uMsg > 20dh
		invoke	HideCaret,hWnd
		invoke	CallWindowProc,lpOldProcEdit,hWnd,uMsg,wParam,lParam
		ret
	.endif
	xor	eax,eax
	ret
_ProcEdit	endp
;********************************************************************
EnableWindows	proc	hWnd,start_id,end_id,True_False
	mov esi,start_id
	mov edi,end_id
	add esi,80
	add edi,80
@@:	invoke GetDlgItem,hWnd,esi
	invoke EnableWindow,eax,True_False
	inc esi
	cmp esi,edi
	jle @B
	ret
EnableWindows	endp
;********************************************************************
ShowWindows	proc	hWnd,start_id,end_id,Show_Hide
	mov esi,start_id
	mov edi,end_id
@@:	invoke GetDlgItem,hWnd,esi
	invoke ShowWindow,eax,Show_Hide
	inc esi
	cmp esi,edi
	jle @B
	ret
ShowWindows	endp
; 主窗口程序>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_ProcDlgMain	proc	uses ebx edi esi hWnd,wMsg,wParam,lParam
	mov	eax,wMsg
;********************************************************************
	.if	eax ==	WM_COMMAND	;用户点击“开始”按钮,这个按钮上的文字有时是“停止”
		mov	eax,wParam
		.if	eax == 302	;十进制
			invoke ShowWindows,hWnd,305,308,SW_HIDE		;四字、双字、单字、字节
			invoke ShowWindows,hWnd,309,311,SW_SHOW		;角度、弧度、梯度

			invoke CheckRadioButton,hWnd,309,311,309	;选中“角度”
			invoke	SetDlgItemText,hWnd,403,addr str0	;显示'0. '

			invoke	EnableWindows,hWnd,46,53,TRUE		;2~9
			invoke	EnableWindows,hWnd,54,59,FALSE		;A~F
			invoke	EnableWindows,hWnd,18,20,TRUE		;sin cos tan
			invoke	EnableWindows,hWnd,28,28,TRUE		;dms
			invoke	EnableWindows,hWnd,30,31,TRUE		;F-E pi
			invoke	EnableWindows,hWnd,37,37,TRUE		;Exp
		.elseif	eax == 301 || eax == 303 || eax == 304	;十六进制、八进制、二进制
			mov ebx,eax
			invoke ShowWindows,hWnd,305,308,SW_SHOW		;四字、双字、单字、字节
			invoke ShowWindows,hWnd,309,311,SW_HIDE		;角度、弧度、梯度

			invoke CheckRadioButton,hWnd,305,308,305	;选中“四字”
			invoke	SetDlgItemText,hWnd,403,addr str1	;显示'0 '

			invoke	EnableWindows,hWnd,18,20,FALSE		;sin cos tan
			invoke	EnableWindows,hWnd,28,28,FALSE		;dms
			invoke	EnableWindows,hWnd,30,31,FALSE		;F-E pi
			invoke	EnableWindows,hWnd,37,37,FALSE		;Exp

			.if ebx == 301
				invoke	EnableWindows,hWnd,46,59,TRUE	;2~9 A~F
			.elseif ebx == 303
				invoke	EnableWindows,hWnd,46,51,TRUE	;2~7
				invoke	EnableWindows,hWnd,52,59,FALSE	;8~9 A~F
			.else
				invoke	EnableWindows,hWnd,46,59,FALSE	;2~9 A~F
			.endif
		.elseif eax == 4+80								;统计运算按钮
			.if sta_stat == 0
				mov eax,FALSE
				mov sta_stat,1
			.else
				mov eax,TRUE
				mov sta_stat,0
			.endif
			invoke EnableWindows,hWnd,38,41,eax			;Ave Sum s Dat
		.endif
	.elseif eax == WM_NOTIFY
		mov esi,lParam
		.if dword ptr [esi+8] == -0Ch
			mov ebx,[esi+4]								;资源ID
			.if ebx >= 80 && ebx <= 139
				mov eax,ebx
				sub eax,80
				mov eax,[addr0+eax*4]					;取出按钮上文字的地址
				mov lParam,eax							;暂存在这里
				mov eax,[esi+0Ch]
				.if eax == 1
					invoke SetBkMode,[esi+10h],1		;设置背景模式为透明
					mov wParam,eax						;保存原背景模式
					.if DWORD ptr [esi+28h] && 4
						invoke GetSysColor,COLOR_GRAYTEXT	;取灰化的文字颜色
					.else
						mov eax,ebx
						sub eax,80
						lea eax,[color_table+eax*4]		;得到按钮颜色的地址
						mov eax,[eax]					;取按钮颜色
					.endif
					invoke SetTextColor,[esi+10h],eax	;设置文字颜色
					lea eax,[esi+14h]
					invoke DrawText,[esi+10h],lParam,-1,eax,25h;DT_CENTER|DT_VCENTER|DT_SINGLELINE
					invoke SetBkMode,[esi+10h],wParam	;恢复原背景模式
				.endif
			.endif
		.endif
	.elseif	eax ==	WM_CLOSE	;用户点击关闭按钮
		invoke	EndDialog,hWnd,NULL
;********************************************************************
	.elseif	eax ==	WM_INITDIALOG	;初始化对话框,可以做一些初始化工作
		invoke LoadIcon,hInstance,ICO_1	;载入图标
		invoke SendMessage,hWnd,WM_SETICON,ICON_BIG,eax	;设置窗口图标

		xor esi,esi
		lea edi,s0				;得到第一个按钮上文字的地址
		mov [addr0+4*esi],edi	;保存地址
		inc esi
		xor eax,eax
		xor ecx,ecx
		dec ecx
@@:		repnz scasb				;得到后面每一个按钮上文字的地址
		mov [addr0+4*esi],edi	;保存
		inc esi
		cmp esi,60
		jle @B

		invoke	GetDlgItem,hWnd,403
		mov		esi,eax
		invoke	SetWindowLong,eax,GWL_WNDPROC,addr _ProcEdit	;窗口子类化
		mov	lpOldProcEdit,eax

		invoke	SetWindowText,esi,addr str0				;设置文字

		invoke	GetDlgItem,hWnd,302
		invoke	SendMessage,eax,BM_CLICK,0,0		;模拟点击了“十进制”单选按钮

		invoke	GetDlgItem,hWnd,84
		invoke	SendMessage,eax,BM_CLICK,0,0		;模拟点击了“统计”单选按钮

	.else
		xor eax,eax;	mov	eax,FALSE
		ret
	.endif
	xor eax,eax
	inc eax			;	mov	eax,TRUE
	ret
_ProcDlgMain	endp
;************************************************* 
start:
	invoke	GetModuleHandle,NULL
	mov	hInstance,eax
	invoke	InitCommonControls
	invoke	DialogBoxParam,eax,DLG_MAIN,NULL,offset _ProcDlgMain,0
	invoke	ExitProcess,NULL
;**************************************************
	.const
s0	db	"+/-",0,"C",0,"CE",0,"Backspace",0,"Sta",0,".",0,"And",0,"Or",0,"Xor",0,"Lsh",0
	db	"/",0,"*",0,"+",0,"-",0,"Mod",0,"x^y",0,"Int",0,"Not",0,"sin",0,"cos",0,"tan",0
	db	"ln",0,"log",0,"sqrt",0,"x^2",0,"x^3",0,"n!",0,"1/x",0,"dms",0,"%",0,"F-E",0,"pi",0,"=",0
	db	"MC",0,"MR",0,"MS",0,"M+",0,"Exp",0,"Ave",0,"Sum",0,"s",0,"Dat",0,"(",0,")",0
	db	"0",0,"1",0,"2",0,"3",0,"4",0,"5",0,"6",0,"7",0,"8",0,"9",0,"A",0,"B",0,"C",0,"D",0,"E",0,"F",0
color_table	dd	00FF0000H,	000000FFH,	000000FFH,	000000FFH,	00FF0000H
			dd	00FF0000H,	000000FFH,	000000FFH,	000000FFH,	000000FFH
			dd	000000FFH,	000000FFH,	000000FFH,	000000FFH,	000000FFH
			dd	00FF00FFH,	000000FFH,	000000FFH,	00FF00FFH,	00FF00FFH
			dd	00FF00FFH,	00FF00FFH,	00FF00FFH,	00FF00FFH,	00FF00FFH
			dd	00FF00FFH,	00FF00FFH,	00FF00FFH,	00FF00FFH,	00FF00FFH
			dd	00FF00FFH,	00FF0000H,	000000FFH,	000000FFH,	000000FFH
			dd	000000FFH,	000000FFH,	00FF00FFH,	00FF0000H,	00FF0000H
			dd	00FF0000H,	00FF0000H,	00FF00FFH,	00FF00FFH,	00FF0000H
			dd	00FF0000H,	00FF0000H,	00FF0000H,	00FF0000H,	00FF0000H
			dd	00FF0000H,	00FF0000H,	00FF0000H,	00FF0000H,	00FF0000H
			dd	00FF0000H,	00FF0000H,	00FF0000H,	00FF0000H,	00FF0000H
end start

资源文件:
#include <resource.h>

LANGUAGE 4, 2

1 24 DISCARDABLE "XPStyle.xml"

101 DIALOGEX 100,100,352,170
STYLE WS_MINIMIZEBOX | WS_SYSMENU | WS_CAPTION
CAPTION "计算器"
FONT 9, "宋体"
MENU 108
BEGIN
	EDITTEXT	403,5,1,305,14,WS_BORDER | ES_RIGHT |NOT WS_TABSTOP| WS_VISIBLE | WS_CHILD|WS_EX_NOPARENTNOTIFY|WS_EX_CLIENTEDGE
	GROUPBOX	"",800,5,34,82,20,0,WS_EX_NOPARENTNOTIFY
	CONTROL		"Hyp",141,"Button",NOT WS_TABSTOP | BS_AUTOCHECKBOX,49,41,34,10
	CONTROL		"Inv",140,"Button",NOT WS_TABSTOP | BS_AUTOCHECKBOX,8,41,34,10
	GROUPBOX	"",-1,5,14,178,20,0,WS_EX_NOPARENTNOTIFY
;每一组单选按钮的第1个设置|WS_GROUP|WS_TABSTOP属性,使这几个单选按钮分成两组
	CONTROL		"十六进制",	301,"Button",BS_AUTORADIOBUTTON|WS_GROUP ,8,21,44,10 
	CONTROL		"十进制",	302,"Button",BS_AUTORADIOBUTTON ,56,21,37,10
	CONTROL		"八进制",	303,"Button",BS_AUTORADIOBUTTON ,98,21,37,10
	CONTROL		"二进制",	304,"Button",BS_AUTORADIOBUTTON ,140,21,37,10

	GROUPBOX	"",-1,188,14,161,20,0,WS_EX_NOPARENTNOTIFY
	CONTROL		"四字",		305,"Button",BS_AUTORADIOBUTTON|WS_GROUP ,192,21,32,10
	CONTROL		"双字",		306,"Button",BS_AUTORADIOBUTTON ,231,21,32,10
	CONTROL		"单字",		307,"Button",BS_AUTORADIOBUTTON ,270,21,32,10
	CONTROL		"字节",		308,"Button",BS_AUTORADIOBUTTON ,310,21,32,10
	CONTROL		"角度",		309,"Button",BS_AUTORADIOBUTTON|WS_GROUP ,192,21,32,10
	CONTROL		"弧度",		310,"Button",BS_AUTORADIOBUTTON ,231,21,32,10
	CONTROL		"梯度",		311,"Button",BS_AUTORADIOBUTTON ,270,21,32,10

	PUSHBUTTON	"",	80,220,120,24,18,NOT WS_TABSTOP;	0	"+/-"
	PUSHBUTTON	"",	81,305,38,43,18,NOT WS_TABSTOP;		1	"C"
	PUSHBUTTON	"",	82,260,38,43,18,NOT WS_TABSTOP;		2	"CE"
	PUSHBUTTON	"",	83,215,38,43,18,NOT WS_TABSTOP;		3	"Backspace"
	PUSHBUTTON	"",	84,5,60,24,18,NOT WS_TABSTOP;		4	"Sta"
	PUSHBUTTON	"",	85,246,120,24,18,NOT WS_TABSTOP;	5	"."
	PUSHBUTTON	"",	86,324,60,24,18,NOT WS_TABSTOP;		6	"And"
	PUSHBUTTON	"",	87,298,80,24,18,NOT WS_TABSTOP;		7	"Or"
	PUSHBUTTON	"",	88,324,80,24,18,NOT WS_TABSTOP;		8	"Xor"
	PUSHBUTTON	"",	89,298,100,24,18,NOT WS_TABSTOP;	9	"Lsh"
	PUSHBUTTON	"",	90,272,60,24,18,NOT WS_TABSTOP;		10	"/"
	PUSHBUTTON	"",	91,272,80,24,18,NOT WS_TABSTOP;		11	"*"
	PUSHBUTTON	"",	92,272,120,24,18,NOT WS_TABSTOP;	12	"+"
	PUSHBUTTON	"",	93,272,100,24,18,NOT WS_TABSTOP;	13	"-"
	PUSHBUTTON	"",	94,298,60,24,18,NOT WS_TABSTOP;		14	"Mod"
	PUSHBUTTON	"",	95,64,100,24,18,NOT WS_TABSTOP;		15	"x^y"
	PUSHBUTTON	"",	96,324,120,24,18,NOT WS_TABSTOP;	16	"Int"
	PUSHBUTTON	"",	97,324,100,24,18,NOT WS_TABSTOP;	17	"Not"
	PUSHBUTTON	"",	98,38,100,24,18,NOT WS_TABSTOP;		18	"sin"
	PUSHBUTTON	"",	99,38,120,24,18,NOT WS_TABSTOP;		19	"cos"
	PUSHBUTTON	"",	100,38,140,24,18,NOT WS_TABSTOP;	20	"tan"
	PUSHBUTTON	"",	101,90,80,24,18,NOT WS_TABSTOP;		21	"ln"
	PUSHBUTTON	"",	102,90,100,24,18,NOT WS_TABSTOP;	22	"log"	23	"sqrt"
	PUSHBUTTON	"",	104,64,140,24,18,NOT WS_TABSTOP;	24	"x^2"
	PUSHBUTTON	"",	105,64,120,24,18,NOT WS_TABSTOP;	25	"x^3"
	PUSHBUTTON	"",	106,90,120,24,18,NOT WS_TABSTOP;	26	"n!"
	PUSHBUTTON	"",	107,90,140,24,18,NOT WS_TABSTOP;	27	"1/x"
	PUSHBUTTON	"",	108,38,80,24,18,NOT WS_TABSTOP;		28	"dms"	29	"%"
	PUSHBUTTON	"",	110,38,60,24,18,NOT WS_TABSTOP;		30	"F-E"
	PUSHBUTTON	"",	111,123,140,24,18,NOT WS_TABSTOP;	31	"pi"
	PUSHBUTTON	"",	112,298,120,24,18,NOT WS_TABSTOP;	32	"="
	PUSHBUTTON	"",	113,123,60,24,18,NOT WS_TABSTOP;	33	"MC"
	PUSHBUTTON	"",	114,123,80,24,18,NOT WS_TABSTOP;	34	"MR"
	PUSHBUTTON	"",	115,123,100,24,18,NOT WS_TABSTOP;	35	"MS"
	PUSHBUTTON	"",	116,123,120,24,18,NOT WS_TABSTOP;	36	"M+"
	PUSHBUTTON	"",	117,64,80,24,18,NOT WS_TABSTOP;		37	"Exp"
	PUSHBUTTON	"",	118,5,80,24,18,NOT WS_TABSTOP;		38	"Ave"
	PUSHBUTTON	"",	119,5,100,24,18,NOT WS_TABSTOP;		39	"Sum"
	PUSHBUTTON	"",	120,5,120,24,18,NOT WS_TABSTOP;		40	"s"
	PUSHBUTTON	"",	121,5,140,24,18,NOT WS_TABSTOP;		41	"Dat"
	PUSHBUTTON	"",	122,64,60,24,18,NOT WS_TABSTOP;		42	"("
	PUSHBUTTON	"",	123,90,60,24,18,NOT WS_TABSTOP;		43	")"
	PUSHBUTTON	"",	124,194,120,24,18,NOT WS_TABSTOP;	44	"0"
	PUSHBUTTON	"",	125,194,100,24,18,NOT WS_TABSTOP;	45	"1"
	PUSHBUTTON	"",	126,220,100,24,18,NOT WS_TABSTOP;	46	"2"
	PUSHBUTTON	"",	127,246,100,24,18,NOT WS_TABSTOP;	47	"3"
	PUSHBUTTON	"",	128,194,80,24,18,NOT WS_TABSTOP;	48	"4"
	PUSHBUTTON	"",	129,220,80,24,18,NOT WS_TABSTOP;	49	"5"
	PUSHBUTTON	"",	130,246,80,24,18,NOT WS_TABSTOP;	50	"6"
	PUSHBUTTON	"",	131,194,60,24,18,NOT WS_TABSTOP;	51	"7"
	PUSHBUTTON	"",	132,220,60,24,18,NOT WS_TABSTOP;	52	"8"
	PUSHBUTTON	"",	133,246,60,24,18,NOT WS_TABSTOP;	53	"9"
	PUSHBUTTON	"",	134,194,140,24,18,NOT WS_TABSTOP;	54	"A"
	PUSHBUTTON	"",	135,220,140,24,18,NOT WS_TABSTOP;	55	"B"
	PUSHBUTTON	"",	136,246,140,24,18,NOT WS_TABSTOP;	56	"C"
	PUSHBUTTON	"",	137,272,140,24,18,NOT WS_TABSTOP;	57	"D"
	PUSHBUTTON	"",	138,298,140,24,18,NOT WS_TABSTOP;	58	"E"
	PUSHBUTTON	"",	139,324,140,24,18,NOT WS_TABSTOP;	59	"F"
	CTEXT		"",401,126,38,18,16,WS_GROUP | SS_NOTIFY,WS_EX_CLIENTEDGE
	CTEXT		"",402,93,38,18,16,WS_GROUP | SS_NOTIFY,WS_EX_CLIENTEDGE
END

108 MENU DISCARDABLE
BEGIN
	POPUP "编辑(&E)"
	BEGIN
		MENUITEM "复制(&C)\tCtrl+C"	300
		MENUITEM "粘贴(&P)\tCtrl+V"	301
	END
	POPUP "查看(&V)"
	BEGIN
		MENUITEM "标准型(&T)"	305
		MENUITEM "科学型(&S)"	304
		MENUITEM ""	0
		MENUITEM "十六进制(&H)\tF5"	306
		MENUITEM "十进制(&D)\tF6"	307
		MENUITEM "八进制(&O)\tF7"	308
		MENUITEM "二进制(&B)\tF8"	309
		MENUITEM ""	0
		MENUITEM "四字(&Q)\tF12"	310
		MENUITEM "DWORD 值(&R)\tF2"	311
		MENUITEM "单字(&W)\tF3"	312
		MENUITEM "字节(&Y)\tF4"	313
		MENUITEM ""	0
		MENUITEM "数字分组(&I)"	303
	END
	POPUP "帮助(&H)"
	BEGIN
		MENUITEM "帮助主题(&H) "	317
		MENUITEM ""	0
		MENUITEM "关于计算器(&A)"	302
	END
END

1005	ICON    DISCARDABLE     "ICO1005.ICO"

请各位大侠帮看一下,改哪里可以让其中的按钮象Windows计算器一样,先谢谢啦
2006-12-30 18:06
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
学习了
2006-12-30 22:59
0
雪    币: 253
活跃值: (250)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
16
下面这个问题还是要请高手们帮忙看一下,拜托:

Windows计算器的按钮等控件在被点击后,获得了输入焦点,然后程序在进行完运算之后,用SetFoucs把焦点设置到编辑框上,我想模拟这个过程,却总是不成功,不知是哪里有问题,请指教。
2007-1-5 22:04
0
游客
登录 | 注册 方可回帖
返回
//