Win32汇编ListView控件学习

此控件比较复杂;和基础win32控件不同;需要先初始化Windows公共控件库,

invoke InitCommonControls

之后才可使用;

lvdemo.asm,

cpp 复制代码
		.386
		.model flat, stdcall
		option casemap :none   ; case sensitive

include		windows.inc
include		user32.inc
includelib	user32.lib
include		kernel32.inc
includelib	kernel32.lib
include		comctl32.inc
includelib	comctl32.lib
include		odbc32.inc
includelib	odbc32.lib

ICO_MAIN	equ	1000
DLG_MAIN	equ	2000
IDC_ADD	equ	2002
IDC_DEL	equ	2003
IDC_CLEAR	equ	2005
IDC_LIST	equ	2006

		.data
szShi    db      '小石子',0
szLi    db      '小李子',0

		.data?
hInstance	dd	?
hWinMain	dd	?		;对话框句柄
hListView	dd	?		;列表框句柄

		.const
szStr1	db	"信息1",0
szStr2	db	'信息2',0

		.code
include		_ListView.asm

_ProcDlgMain	proc	uses ebx edi esi hWnd,wMsg,wParam,lParam
		local	@stWsa:WSADATA

		mov	eax,wMsg
		.if	eax ==	WM_COMMAND
			mov	eax,wParam

			.if	ax ==	IDC_ADD
				invoke	_ListViewAddColumn,hListView,0,50,addr szStr1
				invoke	_ListViewAddColumn,hListView,1,50,addr szStr2
				invoke	_ListViewSetItem,hListView,0,-1,0
				invoke	_ListViewSetItem,hListView,0,0,addr szShi
				invoke	_ListViewSetItem,hListView,0,1,addr szLi

			.elseif	ax ==	IDC_DEL

			.elseif	ax ==	IDC_CLEAR
				invoke	_ListViewClear,hListView
			.endif

		.elseif	eax ==	WM_INITDIALOG
			push	hWnd
			pop	hWinMain
			invoke	LoadIcon,hInstance,ICO_MAIN
			invoke	SendMessage,hWnd,WM_SETICON,ICON_BIG,eax

			invoke	GetDlgItem,hWnd,IDC_LIST
			mov	hListView,eax
		        invoke	SendMessage,hListView,LVM_SETEXTENDEDLISTVIEWSTYLE,\
				0,LVS_EX_GRIDLINES or LVS_EX_FULLROWSELECT
			invoke	ShowWindow,hListView,SW_SHOW


		.elseif	eax ==	WM_CLOSE
				invoke	EndDialog,hWinMain,NULL

		.else
			mov	eax,FALSE
			ret
		.endif
		mov	eax,TRUE
		ret

_ProcDlgMain	endp

start:
		invoke	InitCommonControls
		invoke	GetModuleHandle,NULL
		mov	hInstance,eax
		invoke	DialogBoxParam,eax,DLG_MAIN,NULL,offset _ProcDlgMain,0
		invoke	ExitProcess,NULL

		end	start

lvdemo.rc,

cpp 复制代码
#include	<resource.h>

#define	ICO_MAIN		1000
#define	DLG_MAIN		2000

#define	IDC_ADD		2002
#define	IDC_DEL		2003

#define	IDC_CLEAR		2005
#define	IDC_LIST		2006

ICO_MAIN	icon	"Main.ico"

DLG_MAIN DIALOG 51, 78, 465, 237
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
CAPTION "ListView示例"
FONT 9, "宋体"
{

 PUSHBUTTON "Add", IDC_ADD, 50, 20, 50, 14
 PUSHBUTTON "Delete", IDC_DEL, 200, 20, 50, 14, WS_TABSTOP

 DEFPUSHBUTTON "Clear", IDC_CLEAR, 350, 20, 50, 14, BS_DEFPUSHBUTTON | WS_TABSTOP

 CONTROL "", IDC_LIST, "SysListView32", 13 | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 2, 56, 460, 179

}

include _ListView.asm

_ListView.asm 这是书上的;

运行;一开始ListView出来是行和列都没有;

invoke _ListViewAddColumn,hListView,0,50,addr szStr1

增加一个列,列号0,宽度50, 列标题是szStr1;

invoke _ListViewSetItem,hListView,0,-1,0

插入一个空行,先要插入空行,后面才能插入数据;

invoke _ListViewSetItem,hListView,0,0,addr szShi

设置0行0列的数据为szShi;

点Clear清空全部的行和列;

相关推荐
极客互动API5 天前
企业微信 iPad 协议服务搭建与 AI 回调实战
网络·汇编·人工智能·微信·企业微信·ipad
wechatbot88810 天前
极客互动企业微信 SCRM 私域运营实战效果全景
大数据·汇编·微信·自动化·企业微信·rpa
祈禾15 天前
计算机组成原理之编译、汇编、链接、解释
开发语言·汇编·笔记·学习
水饺编程17 天前
AT&T 汇编语言学习笔记开篇语
c语言·汇编·c++
iCxhust17 天前
8088单板机VScode集成开发环境使用方法二(汇编版)
汇编·单片机·微机原理·8088单板机
·薯条大王18 天前
经济实惠玩云服务器|一台云服务器多人共用,子账号配置教程
java·linux·运维·服务器·汇编·c++·python
txg66619 天前
VULOC:基于汇编切片的漏洞定位框架,精准锁定二进制中的危险代码
汇编·人工智能·深度学习·安全·网络安全
sunburn-20 天前
Java 队列全面详解:从入门到面试实战
java·开发语言·汇编·ide·idea
wechatbot8881 个月前
企业微信API开发:登录-联系人查询-消息发送完整开发流程分享
汇编·微信·自动化·企业微信·ai编程·rpa
00后程序员张1 个月前
iOS加固技术路线全面解析:Bitcode模式、源码模式与汇编模式对比及爱加密优势
android·汇编·ios·小程序·uni-app·cocoa·iphone