汇编Win32编程问题

nzxhust 2009-07-23 11:21:42
我要实现个下拉菜单组合框,我在资源文件中定义了个组合框,样式中选了下拉列表(在VC6.0中编辑的资源文件)
然后我在汇编ASM文件中
用invoke SendDlgItemMessage,hWnd,IDC_MONTH,CB_ADDSTRING,0,addr szText1
添加下拉列表选项可是连接后出现个问题。就是下拉列表不能显示(就是点击下拉按钮不出来),只能用鼠标滚动来调整列表选项。这是为什么?是组合框样式选择问题?还是什么原因?
补充:这里是例子资源文件定义组合框的代码:
COMBOBOX IDC_TITLETEXT, 190, 20, 105, 70, CBS_DROPDOWNLIST | WS_TABSTOP
我是用可视化编辑的,CBS_DROPDOWNLIST | WS_TABSTOP
这两个风格要选哪两个样式?在VC6.0中?
...全文
113 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
nzxhust 2009-07-25
  • 打赏
  • 举报
回复
不好意思我知道哪里出问题了,在VC6.0中画那个组合框的时候要把下拉的那部分拖长点才能显示下拉列表
KingWolfOfSky 2009-07-24
  • 打赏
  • 举报
回复
资源文件


#include "resource.h"

;################################################################################

#define BOXMONTH 1000
;################################################################################

Calender DIALOGEX 0, 0, 120, 140
STYLE WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX
CLASS "Calender"
CAPTION "Calender"
FONT 8, "MS Sans Serif"
BEGIN
COMBOBOX BOXMONTH,10,10,50,100,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP
END


;##################################################################################


KingWolfOfSky 2009-07-24
  • 打赏
  • 举报
回复

TITLE Calculator
;==================================================================
; Author: 狼の禅
; Date: 2009/07/24
;==================================================================
.486
.model flat,stdcall
option casemap:none ; case sensitive
;==================================================================
include windows.inc
include user32.inc
include kernel32.inc

includelib user32.lib
;------------------------------------------------------------------
Calculate PROTO :DWORD,:DWORD,:DWORD,:DWORD
WinMain PROTO :DWORD, :DWORD, :DWORD, :DWORD
WndProc PROTO :DWORD, :DWORD, :DWORD, :DWORD
;==================================================================
.data
hInstance dd ?
hMonth dd ?
dlgname db "Calender",0
Month1 db "一月",0
Month2 db "二月",0
BOXMONTH equ 1000
;==================================================================
.code
start:
invoke GetModuleHandle,NULL
mov hInstance,eax
invoke WinMain,hInstance,0,0,SW_SHOWDEFAULT
invoke ExitProcess,eax
;==================================================================
WinMain proc hInst:DWORD, hPrevInst:DWORD, CmdLine:DWORD, CmdShow:DWORD
LOCAL wc:WNDCLASSEX
LOCAL msg:MSG
LOCAL hWnd:HWND

mov wc.cbSize,sizeof WNDCLASSEX
mov wc.style,CS_HREDRAW or CS_VREDRAW ;or CS_BYTEALIGNWINDOW
mov wc.lpfnWndProc,OFFSET Calculate
mov wc.cbClsExtra,0
mov wc.cbWndExtra,DLGWINDOWEXTRA
mov eax,hInst
mov wc.hInstance,eax
mov wc.hbrBackground,COLOR_BTNFACE+1
mov wc.lpszMenuName,NULL
mov wc.lpszClassName,OFFSET dlgname
mov wc.hIcon,NULL
invoke LoadCursor,NULL,IDC_ARROW
mov wc.hCursor,eax
mov wc.hIconSm,0

invoke RegisterClassEx,ADDR wc
invoke CreateDialogParam,hInst,ADDR dlgname,0,ADDR Calculate,0
mov hWnd,eax
invoke ShowWindow,hWnd,CmdShow
invoke UpdateWindow,hWnd
StartLoop: invoke GetMessage,addr msg,0,0,0
cmp eax,0
je ExitLoop
invoke TranslateMessage,ADDR msg
invoke DispatchMessage,ADDR msg
jmp StartLoop
ExitLoop: mov eax,msg.wParam
ret

WinMain endp
;==================================================================
Calculate proc hWin:DWORD,uMsg:UINT,aParam:DWORD,bParam:DWORD
LOCAL Ps:PAINTSTRUCT
.if uMsg == WM_INITDIALOG
invoke GetDlgItem,hWin,BOXMONTH
mov hMonth,eax
invoke SendMessage,hMonth,CB_ADDSTRING,hWin,addr Month1
invoke SendMessage,hMonth,CB_ADDSTRING,hWin,addr Month2
.elseif uMsg == WM_CLOSE
invoke EndDialog,hWin,NULL
invoke PostQuitMessage,0
.else
invoke DefWindowProc,hWin,uMsg,aParam,bParam
ret
.endif
xor eax,eax
ret
Calculate endp
;==================================================================
end start
KingWolfOfSky 2009-07-24
  • 打赏
  • 举报
回复
不是很麻烦吧,等会写下看看~~
nzxhust 2009-07-24
  • 打赏
  • 举报
回复
不是的ID 在资源文件里我也改了,不是这个问题。生成的EXE用鼠标滚动式可以调整下拉列表项的,但是下拉不行,比如我定义的是1-12月的列表项,它只在编辑框里面1月 2月的变,不能下拉成列表显示1-12个月的选项
lmxd70 2009-07-24
  • 打赏
  • 举报
回复
名字好像错了吧,资源定义的和引用的不一样
GnailTwilight 2009-07-24
  • 打赏
  • 举报
回复
代码出问题了
invoke SendDlgItemMessage,hWnd,IDC_MONTH,CB_ADDSTRING,0,addr szText1

IDC_MONTH 你怎么不取资源文件里的名字 是不是你这里搞错了?

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧