鱼C论坛

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

用win32汇编写计算器

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

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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


  10. ICO_MAIN        equ        1000h
  11. IDA_MAIN        equ        2000h
  12. IDM_MAIN        equ        2000h
  13. IDM_EDIT        equ        2001h
  14. IDM_LOOK        equ        2003h
  15. IDM_LOOKHELP  equ 2004h
  16. IDM_GUANYU        equ        2005h
  17. IDM_FUZHI        equ        2006h
  18. IDM_ZHANTIE         equ 2007h
  19. IDM_OLDRECORD  equ 2008h
  20. IDM_STD                equ 2009h
  21. IDM_SCI        equ        2010h
  22. IDM_PRO                equ 2011h
  23. IDM_LISHI        equ        2012h
  24. IDM_TOTAL        equ        2013h
  25. IDM_SHUZI        equ        2014h
  26. IDM_JIBEN        equ        2015h
  27. IDM_CHANGE        equ        2016h
  28. IDM_DATE        equ        2017h
  29.   IDM_SHEET        equ        2018h
  30.   DLG_MAIN        equ        100
  31.   IDC_TEXT        equ        101
  32.   IDC_MC        equ                102
  33.   IDC_MR        equ                103
  34.   IDC_MS        equ                104
  35.   IDC_MH        equ                105
  36.   IDC_MK        equ                106
  37.   IDC_BACK        equ        107
  38.   IDC                equ        0
  39.   IDC1                equ        1
  40.   IDC2                equ        2
  41. IDC3                equ        3
  42.   IDC4                equ        4
  43. IDC5                equ        5
  44.   IDC6                equ        6
  45.   IDC7                equ        7
  46.   IDC8                equ        8
  47.   IDC9                equ        9
  48.   IDC_CE        equ                10
  49.   IDC_C                equ        11
  50.   IDC_ZHENFU        equ        12
  51.   IDC_DOT                equ 13
  52.   IDC_ADD                equ 14
  53.   IDC_MUL                equ 15
  54.   IDC_DIV                equ 16
  55.   IDC_SUB        equ        17
  56.   IDC_PERCENT        equ 18
  57.   IDC_GENHAO        equ        19
  58. IDC_DENGHAO        equ 20
  59. IDC_BILIE                equ 21

  60.                         .data?
  61.                        
  62. hInstance    dd  ?
  63. hMenu                 dd ?
  64. hAccelerator dd ?
  65. hDlg                 dd         ?               
  66.                        
  67.                        
  68.                        
  69.                
  70.                        
  71.                        
  72.                         .code
  73. szInit        db ' adsad' ,0                       
  74. szend        db '[%d]',0ah,0dh

  75. _ADD                proc
  76.                         ret

  77. _ADD                endp

  78. _SUB        proc
  79. _SUB        endp

  80. _DIV        proc
  81. _DIV        endp

  82. _MUL        proc
  83. _MUL        endp

  84. _ProcDlgMain        proc  uses ebx esi edi hWnd,wMsg,wParam,lParam
  85.                                 local  @szBuffer[512]:byte
  86.                                
  87.                                 mov eax ,wMsg
  88.                         .if eax ==WM_CLOSE
  89.                                 invoke         EndDialog , hWnd,NULL
  90.                                
  91.                                
  92.                         .elseif  eax == WM_INITDIALOG
  93.                                                
  94.                                 invoke LoadMenu ,hInstance,IDM_MAIN
  95.                                 mov hMenu , eax
  96.                                 invoke wsprintf , addr @szBuffer ,addr  szInit
  97.                        
  98.                         .elseif  eax == WM_COMMAND
  99.                                         mov eax ,wParam
  100.                                         .if ax == IDC_ADD
  101.                                                 call _ADD
  102.                                         .endif
  103.                                        
  104.                         .else
  105.                                         mov eax ,FALSE
  106.                                         ret
  107.                         .endif
  108.                                         mov eax ,TRUE
  109.                                 ret
  110. _ProcDlgMain                endp



  111. start:               

  112.                         invoke GetModuleHandle ,NULL
  113.                         mov hInstance , eax
  114.                         invoke DialogBoxParam,hInstance,DLG_MAIN ,NULL,offset _ProcDlgMain ,NULL
  115.                                 mov hDlg        ,eax
  116.                         invoke ExitProcess,NULL
  117.                         end start
  118.        
  119. 这是我的代码,但是不知道为什么显示不了菜单栏


































复制代码


小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

使用道具 举报

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

对于同一个文本编辑框,  怎么样才能让里面的内容双行显示,还是说用静态的文本框
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-4-24 23:08:40 | 显示全部楼层
不太明白你的意思,要换行的话就在后面加0ah,0dh.
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-4-24 23:29:53 | 显示全部楼层
虽然看不懂,但是还是看了。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-12 14:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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