CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  其他开发语言 >  汇编语言

win32汇编中怎么使用combobox?

楼主happydog0506(快乐狗)2002-02-09 22:14:37 在 其他开发语言 / 汇编语言 提问

谢谢 问题点数:100、回复次数:1Top

1 楼awinder(风)回复于 2002-02-10 00:34:12 得分 100

以下演示了ComboBox的基本操作。  
  //combo.rc  
  #include   "resource.h"  
   
  DLG_MAIN   DIALOG   DISCARDABLE     200,   200,   122,   65  
  STYLE   WS_MINIMIZEBOX   |   WS_CAPTION   |   WS_SYSMENU  
  CAPTION   "combo使用演示"  
  FONT   9,   "宋体"  
  BEGIN  
          COMBOBOX                 100,9,10,91,80,CBS_DROPDOWNLIST   |   WS_VSCROLL  
          PUSHBUTTON             "删除",110,20,31,33,14  
          PUSHBUTTON             "退出",120,66,31,33,14  
  END  
   
   
  ;combo.asm  
          .386  
          .model   flat,   stdcall  
          option   casemap   :none  
          include               windows.inc  
          include               user32.inc  
          include               kernel32.inc  
          includelib         user32.lib  
          includelib         kernel32.lib        
          ComboWndProc   PROTO   :DWORD,:DWORD,:DWORD,:DWORD  
          WndProc             PROTO   :DWORD,:DWORD,:DWORD,:DWORD  
  .data  
          dlgname                         db     "DLG_MAIN",0  
          Item1                             db     "Item1",0  
          Item2                             db     "Item2",0  
          Item3                             db     "Item3",0  
          msgtitle                       db     "ComboBox使用演示",0  
          hInstance                     dd     0  
          h_Combo                         dd     0  
          h_Button_delete         dd     0  
          h_Button_exit             dd     0  
          lpCombo                         dd     0  
  .data?  
          buffer                           db     20   dup(?)  
  .code  
  start:  
          invoke   GetModuleHandle,   NULL  
          MOV   hInstance,   EAX  
          invoke   DialogBoxParam,hInstance,ADDR   dlgname,0,ADDR   WndProc,0  
          invoke   ExitProcess,NULL  
   
  WndProc   PROC   hWin       :DWORD,  
                            uMsg       :DWORD,  
                            wParam   :DWORD,  
                            lParam   :DWORD  
          .if   uMsg   ==   WM_INITDIALOG  
                  invoke   GetDlgItem,hWin,100  
                  mov   h_Combo,eax                                                                                               ;得到CombBox句柄  
                  invoke   SendMessage,h_Combo,CB_ADDSTRING,0,ADDR   Item1  
                  invoke   SendMessage,h_Combo,CB_ADDSTRING,0,ADDR   Item2  
                  invoke   SendMessage,h_Combo,CB_ADDSTRING,0,ADDR   Item3  
                  invoke   SetWindowLong,h_Combo,GWL_WNDPROC,ComboWndProc  
                  mov   lpCombo,eax                                                                                               ;设置comboBox钩子  
          .elseif   uMsg   ==   WM_COMMAND  
                  .if     wParam   ==   110                                                                                         ;删除  
                          invoke   SendMessage,h_Combo,CB_GETCURSEL,0,0  
                          invoke   SendMessage,h_Combo,CB_DELETESTRING,eax,0  
                  .elseif   wParam   ==   120                                                                                     ;退出  
                          invoke   PostQuitMessage,NULL  
                  .endif  
          .elseif   uMsg   ==   WM_CLOSE  
                  invoke   PostQuitMessage,NULL  
          .endif  
          xor   eax,   eax  
          ret  
  WndProc   endp  
   
  ComboWndProc   proc   hCtl       :DWORD,  
                                      uMsg       :DWORD,  
                wParam   :DWORD,  
                                      lParam   :DWORD  
          .if   uMsg   ==   WM_COMMAND  
                  invoke   GetWindowText,h_Combo,ADDR   buffer,20  
                  invoke   MessageBox,NULL,ADDR   buffer,ADDR   msgtitle,MB_OK  
          .endif      
          invoke   CallWindowProc,lpCombo,hCtl,uMsg,wParam,lParam  
          ret  
  ComboWndProc   endp  
   
  end   start  
  Top

相关问题

  • 学写汇编使用哪个汇编编译器好?
  • 请问:VC++中如何使用汇编?
  • win2000下不能使用汇编
  • C#怎么使用内联汇编?
  • 汇编语言的使用问题
  • 在BCB中如何使用汇编?
  • 不使用WINDOWS下的汇编,只使用DOS下的汇编还有前途吗?
  • 请教关于汇编中PTR的使用(求教)
  • 请问如何在程序中使用汇编语言?
  • 请问dos下的汇编如何使用子程序库

关键词

  • ws
  • db
  • combobox
  • combo
  • dd
  • hinstance
  • dword
  • invoke
  • item
  • inc

得分解答快速导航

  • 帖主:happydog0506
  • awinder

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo