;运行效果

;win32汇编环境,对话框中使用树形视图示例二
;得到树形视图控件Treeview的全路径字符串,这里的方法是由子项向父项挨个找的算法找齐路径
;直接抄进RadAsm可编译运行。重要部分加备注。
;下面为asm文件
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.386
.model flat,stdcall
option casemap:none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Include 文件定义
include windows.inc
include user32.inc
include kernel32.inc
include comctl32.inc ;加上所需头文件
includelib user32.lib
includelib kernel32.lib
includelib comctl32.lib ;加上所需库文件
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 自定义函数声明
DlgProc proto :DWORD,:DWORD,:DWORD,:DWORD ;对话框窗口函数
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 数据段
.data
DlgName db "MyDialog",0
szMsg db "提示",0
szFuHao01 db "\",0
szShow1 db "魏国",0
szShow11 db "武将",0
szShow111 db "张辽",0
szShow112 db "曹仁",0
szShow113 db "夏侯渊",0
szShow12 db "文臣",0
szShow121 db "荀彧",0
szShow122 db "司马懿",0
szShow123 db "郭嘉",0
szShow2 db "蜀国",0
szShow3 db "吴国",0
.data?
hInstance HINSTANCE ?
h_Trv01 dd ? ;树形视图控件句柄
h_IconList01 dd ? ;图像列表控件句柄
h_icon01 dd ?
h_icon02 dd ?
;h_01 HTREEITEM ?
.const
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;Equ 等值定义
ICO_MAIN equ 1000 ;图标
IDC_TRV1 equ 1001 ;树形视图控件标识符
IDB equ 10 ;按钮控件标识符
; 代码段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.code
start:
invoke GetModuleHandle, NULL
mov hInstance,eax
invoke DialogBoxParam, hInstance, ADDR DlgName,NULL, addr DlgProc, NULL
invoke ExitProcess,eax
DlgProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
LOCAL @tvs01:TV_INSERTSTRUCT ;根项的结构
LOCAL @h01:HTREEITEM ;根项的句柄
LOCAL @tvs011:TV_INSERTSTRUCT
LOCAL @h011:HTREEITEM
LOCAL @tvs0111:TV_INSERTSTRUCT
LOCAL @tvs0112:TV_INSERTSTRUCT
LOCAL @tvs0113:TV_INSERTSTRUCT
LOCAL @tvs012:TV_INSERTSTRUCT
LOCAL @h012:HTREEITEM
LOCAL @tvs0121:TV_INSERTSTRUCT
LOCAL @tvs0122:TV_INSERTSTRUCT
LOCAL @tvs0123:TV_INSERTSTRUCT
LOCAL @tvs02:TV_INSERTSTRUCT
LOCAL @tvs03:TV_INSERTSTRUCT
LOCAL @GetTvs:TVITEM ;定义一个要保存的当前选定项的 TVITEM 结构
LOCAL @szBuffer[256]:byte
LOCAL @szCurrentBuffer[256]:byte ;当前项字符串用的数组
LOCAL @szPareBuffer[256]:byte ;父项字符串用的数组
LOCAL @szAllBuffer[256]:byte ;要显示全部路径字符串的数组
LOCA



被折叠的 条评论
为什么被折叠?



