鱼C论坛

 找回密码
 立即注册
查看: 2639|回复: 5

用win32汇编写计算器

[复制链接]
发表于 2014-4-22 22:44:07 | 显示全部楼层 |阅读模式
1鱼币
学长让我用汇编写个win7系统自带的计算器,然后我是用非模态对话框建的,但是不知道为什么就是不能加载菜单栏,另外,如何在点按钮的同时,显示在EDITTEXTZHONG ,并且进行计算,将结果显示在EDITTEXT中,大家能给点思路吗,主要是输入问题,比如,点7,想缓冲区写入7,在点8,想缓冲区写8,但是在计算时,有如何化为10进制数呢,如何对运算福判断等,真心求助,求帮忙

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-4-22 23:28:08 | 显示全部楼层
   .386
                        .model flat,stdcall
                        option casemap:none
                        
include         windows.inc
include         user32.inc
include                kernel32.inc
includelib        user32.lib
includelib        kernel32.lib


ICO_MAIN        equ        1000h
IDA_MAIN        equ        2000h
IDM_MAIN        equ        2000h
IDM_EDIT        equ        2001h
IDM_LOOK        equ        2003h
IDM_LOOKHELP  equ 2004h
IDM_GUANYU        equ        2005h
IDM_FUZHI        equ        2006h
IDM_ZHANTIE         equ 2007h
IDM_OLDRECORD  equ 2008h
IDM_STD                equ 2009h
IDM_SCI        equ        2010h
IDM_PRO                equ 2011h
IDM_LISHI        equ        2012h
IDM_TOTAL        equ        2013h
IDM_SHUZI        equ        2014h
IDM_JIBEN        equ        2015h
IDM_CHANGE        equ        2016h
 IDM_DATE        equ        2017h
  IDM_SHEET        equ        2018h
  DLG_MAIN        equ        100
  IDC_TEXT        equ        101
  IDC_MC        equ                102
  IDC_MR        equ                103
  IDC_MS        equ                104
  IDC_MH        equ                105
  IDC_MK        equ                106
  IDC_BACK        equ        107
  IDC                equ        0
  IDC1                equ        1
  IDC2                equ        2
 IDC3                equ        3
  IDC4                equ        4
 IDC5                equ        5
  IDC6                equ        6
  IDC7                equ        7
  IDC8                equ        8
  IDC9                equ        9
  IDC_CE        equ                10
  IDC_C                equ        11
  IDC_ZHENFU        equ        12
  IDC_DOT                equ 13
  IDC_ADD                equ 14
  IDC_MUL                equ 15
  IDC_DIV                equ 16
  IDC_SUB        equ        17
  IDC_PERCENT        equ 18
  IDC_GENHAO        equ        19
 IDC_DENGHAO        equ 20
 IDC_BILIE                equ 21

                        .data?
                        
hInstance    dd  ?
hMenu                 dd ?
hAccelerator dd ?
hDlg                 dd         ?                
                        
                        
                        
                
                        
                        
                        .code
szInit        db ' adsad' ,0                        
szend        db '[%d]',0ah,0dh

_ADD                proc
                        ret

_ADD                endp

_SUB        proc
_SUB        endp

_DIV        proc
_DIV        endp

_MUL        proc
_MUL        endp

_ProcDlgMain        proc  uses ebx esi edi hWnd,wMsg,wParam,lParam
                                local  @szBuffer[512]:byte
                                
                                mov eax ,wMsg
                        .if eax ==WM_CLOSE
                                invoke         EndDialog , hWnd,NULL
                                
                                
                        .elseif  eax == WM_INITDIALOG
                                                
                                invoke LoadMenu ,hInstance,IDM_MAIN
                                mov hMenu , eax
                                invoke wsprintf , addr @szBuffer ,addr  szInit 
                        
                        .elseif  eax == WM_COMMAND
                                        mov eax ,wParam
                                        .if ax == IDC_ADD
                                                call _ADD 
                                        .endif
                                        
                        .else
                                        mov eax ,FALSE
                                        ret
                        .endif
                                        mov eax ,TRUE
                                ret
_ProcDlgMain                endp



start:                

                        invoke GetModuleHandle ,NULL
                        mov hInstance , eax 
                        invoke DialogBoxParam,hInstance,DLG_MAIN ,NULL,offset _ProcDlgMain ,NULL
                                mov hDlg        ,eax
                        invoke ExitProcess,NULL
                        end start
        
这是我的代码,但是不知道为什么显示不了菜单栏

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-4-24 21:02:35 | 显示全部楼层
是不是菜单没定义好,应该是可以显示的。
得到数字用GetDlgItemInt.
一个按钮对应一个运算符,你只要知道按下的是哪个按钮就知道是什么运算符了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-4-24 22:11:25 | 显示全部楼层

对于同一个文本编辑框,  怎么样才能让里面的内容双行显示,还是说用静态的文本框
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-4-24 23:08:40 | 显示全部楼层
不太明白你的意思,要换行的话就在后面加0ah,0dh.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-4-24 23:29:53 | 显示全部楼层
虽然看不懂,但是还是看了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 02:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表