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

请教关于win32asm 中 listview控件中checkbox的使用

vbroot 发布于 2018-01-12 16:15, 2229 次点击
invoke SendDlgItemMessage,hWin,IDC_LSV1,LVM_SETEXTENDEDLISTVIEWSTYLE,0,LVS_EX_CHECKBOXES ;启用了checkbox风格

在listview 中启用了checkbox.
如何判断checkbox被选中了。
不知道代码怎么写了,网上找了很久没找到,请大师帮忙啊!

2 回复
#2
Valenciax2018-01-13 15:39
假设你定义了一个checkbox 叫 btnCheck,id 是103   
btnCheck equ 103
然后在代码中建立了一个checkbox (用CreateWindowEx)
那样,在消息回路中,若Checkbox被按了,就会传回该id

if wParam == btnCheck  ;103
 ;读取状态,即check 或 uncheck
 invoke SendDlgItemMessage,hWnd,btnCheck,BM_GETCHECK,0,0
 push eax ;存
 xor eax, 1  ;反相,下面是切换选定或不选定的显示
 invoke SendDlgItemMessage,hWnd,btnCheck,BM_SETCHECK,eax,0
 pop eax ;取回
  .if EAX=1 ; CHECK
    ; checkbox被选的代码
  .else
    ;checkbox 不选的代码
  .endif
 
..
..
..   
#3
vbroot2018-01-13 21:02
谢谢!
已经在www.找到答案了

部分代码如下:
LVALLSelectACheckBox proc
   
    LOCAL @lvi:LV_ITEM
    mov  @lvi.imask,LVIF_STATE
    mov  @lvi.stateMask,LVIS_STATEIMAGEMASK
    mov  @lvi.state,2000h             ;2000h选中  1000h未选中
    invoke SendDlgItemMessage,hWnd,IDC_LSV1,LVM_SETITEMSTATE,-1,addr @lvi
   
    ret
LVALLSelectACheckBox endp
1