注册 登录
编程论坛 汇编论坛

创建工具栏问题

菜鸟AB 发布于 2015-05-13 19:37, 4350 次点击
首先创建一个普通窗口(不是对话框),不带菜单,只有工具栏。在
消息循环WM_CREATE中,使用CreateToolbarEx专用函数,能很好创建。
书中说也可以使用CreateWindowEx来逐步创建,可是位图上不去,自己抠
了一周,请高手指点。
CreateWindowEx逐步创建,下面是我创建的片段
ID_BITMAP   equ    300
   .const
szToolbarWindow32  db  'ToolbarWindow32',0
proc  uses ebx edi esi,hWnd,uMsg,wParam,lParam
                local  @TBADDBITMAP:TBADDBITMAP
       .if      eax ==  WM_CREATE
                invoke  CreateWindowEx,NULL,offset szToolbarWindow32,\
                        NULL,WS_VISIBLE or WS_CHILD or CCS_NORESIZE \
                        or TBSTYLE_TOOLTIPS or  CCS_ADJUSTABLE,10,10,390,50,\
                        hWnd,ID_EDIT,hInstance,NULL
                mov     hToolbar,eax
                pop     hInstance   (模块句柄)
                push    @TBADDBITMAP.hInst
                mov     eax,ID_BITMAP  (位图ID)
                mov     @TBADDBITMAP.hID,eax
                invoke  SendMessage,hToolbar,TB_ADDBITMAP,10,addr @TBADDBITMAP
;*********************我怀疑这句,是不是我写的有问题?
                invoke  SendMessage,hToolbar,TB_SETBITMAPSIZE,36,36 + 36 shl 16
                invoke  SendMessage,hToolbar,TB_SETBUTTONSIZE,36,36 + 36 shl 16
                invoke  SendMessage,hToolbar,TB_BUTTONSTRUCTSIZE,sizeof TBBUTTON,0
                invoke  SendMessage,hToolbar,TB_ADDBUTTONS,10,offset stToolbar
;******************片段到此

逐步创建,什么都能上去,就是位图上不去,在线等......
3 回复
#2
取名字2015-05-14 20:37
pop   hInstance (模块句柄)
push   @TBADDBITMAP.hInst
楼主上面这2句代码错了,应改为:
push   hInstance (模块句柄)
 pop    @TBADDBITMAP.hInst
先将模块句柄入栈,然后出栈赋给@TBADDBITMAP.hInst
#3
菜鸟AB2015-05-19 07:03
回复 2楼 取名字
改后的确运行完美。基础知识记反,教训啊。。。
感谢'取名字'大神的热情指导。
1