win32汇编环境,对话框中使用树形视图示例三

;运行效果

;win32汇编环境,对话框中使用树形视图示例三
;给树形视图控件treeview每项加上选中时和未选中时显示的图标
;图标可以自已弄2个,规格是32*32,位深度是32,1个用来显示选中项时显示,1个用来显示未选中项时显示
;直接抄进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
szFrm           db "%d",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          ?

.const 
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;Equ 等值定义

ICO_MAIN    equ 1000    ;图标 
ICO_MAIN01  equ 1001
ICO_MAIN02  equ 1002
IDC_TRV1    equ 2001    ;树形视图控件标识符

; 代码段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.code 
start:     
        invoke GetModuleHandle, NULL     
        mov    hInstance,eax     
        invoke  InitCommonControls     ;这句要加上
        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      ;要显示全部路径字符串的数组 
        LOCAL   @Cheshi[256]:byte           ;中转用字符串数组
        LOCAL   @hCurrent                   ;当前选定项的句柄
        LOCAL   @hPare                      ;父项的句柄
       
        .if      uMsg == WM_INITDIALOG                 
                        invoke    LoadIcon,hInstance,ICO_MAIN           
                        invoke    SendMessage,hWnd,WM_SETICON,ICON_BIG,eax 
                        
                        ;开始前需要给控件绑定图像列表,即使不显示图像,只显示文本
                        invoke  ImageList_Create,24,24,ILC_MASK + ILC_COLORDDB,0,0   ;创建图像列表,24是图标的像素24*24,这个像素的大小决定了每个项的大小,ILC_MASK是让图像四周的多余部分透明化,ILC_COLORDDB是尽量保留原图清晰度
                        mov h_IconList01,eax                                         ;保存图像列表句柄留后面用 
                        
                        invoke  LoadIcon,hInstance,ICO_MAIN01          ;加载来自文件的图标
                        invoke  ImageList_AddIcon,h_IconList01,eax     ;给图像列表增加图标
                        mov h_icon01,eax                               ;保存图标在列表中的索引值 
                       
                        invoke  LoadIcon,hInstance,ICO_MAIN02 
                        invoke  ImageList_AddIcon,h_IconList01,eax
                        mov h_icon02,eax 
                        
                        invoke GetDlgItem,hWnd,IDC_TRV1
                        mov h_Trv01,eax
                        
                        
                        invoke SendMessage,h_Trv01,TVM_SETIMAGELIST,TVSIL_NORMAL,h_IconList01     ;给树形视图控件绑上图像列表,就是选中和不选中时的图标样式                         
                                                
                        mov  @tvs01.hParent,TVI_ROOT                                              ;添加"魏国"字样,TVI_ROOT是指其为根项            
                        mov  @tvs01.item._mask,TVIF_TEXT+TVIF_SELECTEDIMAGE+TVIF_IMAGE            ;将item的TVIF_TEXT,TVIF_SELECTEDIMAGE,TVIF_SELECTEDIMAGE值设好,即说明这个项是使用文本显示,加选中时图标,不选中时图标
                        lea  eax,offset szShow1                                                   ;把字符串szShow1的地址给eax
                        mov  @tvs01.item.pszText,eax                                              ;eax是前面的字符串地址
                        mov  @tvs01.item.iImage,0                                                 ;0是图像列表索引值,就是图像列表的第1个图标,即选中时的图标                          
                        mov  @tvs01.item.iSelectedImage,1                                         ;1是图像列表索引值,即不选中时的图标
                        invoke SendMessage,h_Trv01,TVM_INSERTITEM,0,addr @tvs01                   ;发送TVM_INSERTITEM消息添加这一项,其返回值就是这一项的句柄
                        mov  @h01,eax                                                             ;保存句柄,后面跟在它身后的子项,需使用这个作为父项句柄
                        
                        mov  ebx,@h01                         ;开始添加"武将"字样 
                        mov  @tvs011.hParent,ebx              ;hParent的意思是指定父项的句柄,就是说后面点击展开的是子项,它需要前面的父项的句柄          
                        mov  @tvs011.item._mask,TVIF_TEXT+TVIF_SELECTEDIMAGE+TVIF_IMAGE 
                        lea  eax,offset szShow11
                        mov  @tvs011.item.pszText,eax
                        mov  @tvs011.item.iImage,0                                    
                        mov  @tvs011.item.iSelectedImage,1    
                        invoke SendMessage,h_Trv01,TVM_INSERTITEM,0,addr @tvs011
                        mov  @h011,eax
                        
                        mov  ebx,@h011                        ;开始添加"张辽"字样 
                        mov  @tvs0111.hParent,ebx                       
                        mov  @tvs0111.item._mask,TVIF_TEXT+TVIF_SELECTEDIMAGE+TVIF_IMAGE
                        lea  eax,offset szShow111
                        mov  @tvs0111.item.pszText,eax
                        mov  @tvs0111.item.iImage,0                                    
                        mov  @tvs0111.item.iSelectedImage,1
                        invoke SendMessage,h_Trv01,TVM_INSERTITEM,0,addr @tvs0111
                        
                        mov  ebx,@h011                        ;开始添加"曹仁"字样 
                        mov  @tvs0112.hParent,ebx                       
                        mov  @tvs0112.item._mask,TVIF_TEXT+TVIF_SELECTEDIMAGE+TVIF_IMAGE 
                        lea  eax,offset szShow112
                        mov  @tvs0112.item.pszText,eax
                        mov  @tvs0112.item.iImage,0                                    
                        mov  @tvs0112.item.iSelectedImage,1
                        invoke SendMessage,h_Trv01,TVM_INSERTITEM,0,addr @tvs0112
                        
                        mov  ebx,@h011                        ;开始添加"夏侯渊"字样 
                        mov  @tvs0113.hParent,ebx                       
                        mov  @tvs0113.item._mask,TVIF_TEXT+TVIF_SELECTEDIMAGE+TVIF_IMAGE 
                        lea  eax,offset szShow113
                        mov  @tvs0113.item.pszText,eax
                        mov  @tvs0113.item.iImage,0                                    
                        mov  @tvs0113.item.iSelectedImage,1
                        invoke SendMessage,h_Trv01,TVM_INSERTITEM,0,addr @tvs0113
                        
                        mov  ebx,@h01                         ;开始添加"文臣"字样
                        mov  @tvs012.hParent,ebx                       
                        mov  @tvs012.item._mask,TVIF_TEXT+TVIF_SELECTEDIMAGE+TVIF_IMAGE 
                        lea  eax,offset szShow12
                        mov  @tvs012.item.pszText,eax
                        mov  @tvs012.item.iImage,0                                    
                        mov  @tvs012.item.iSelectedImage,1
                        invoke SendMessage,h_Trv01,TVM_INSERTITEM,0,addr @tvs012
                        mov  @h012,eax
                        
                        mov  ebx,@h012                        ;开始添加"荀彧"字样 
                        mov  @tvs0121.hParent,ebx                       
                        mov  @tvs0121.item._mask,TVIF_TEXT+TVIF_SELECTEDIMAGE+TVIF_IMAGE 
                        lea  eax,offset szShow121
                        mov  @tvs0121.item.pszText,eax
                        mov  @tvs0121.item.iImage,0                                    
                        mov  @tvs0121.item.iSelectedImage,1
                        invoke SendMessage,h_Trv01,TVM_INSERTITEM,0,addr @tvs0121
                        
                        mov  ebx,@h012                        ;开始添加"司马懿"字样 
                        mov  @tvs0122.hParent,ebx                       
                        mov  @tvs0122.item._mask,TVIF_TEXT+TVIF_SELECTEDIMAGE+TVIF_IMAGE 
                        lea  eax,offset szShow122
                        mov  @tvs0122.item.pszText,eax
                        mov  @tvs0122.item.iImage,0                                    
                        mov  @tvs0122.item.iSelectedImage,1
                        invoke SendMessage,h_Trv01,TVM_INSERTITEM,0,addr @tvs0122
                        
                        mov  ebx,@h012                        ;开始添加"郭嘉"字样 
                        mov  @tvs0123.hParent,ebx                       
                        mov  @tvs0123.item._mask,TVIF_TEXT+TVIF_SELECTEDIMAGE+TVIF_IMAGE 
                        lea  eax,offset szShow123
                        mov  @tvs0123.item.pszText,eax
                        mov  @tvs0123.item.iImage,0                                    
                        mov  @tvs0123.item.iSelectedImage,1
                        invoke SendMessage,h_Trv01,TVM_INSERTITEM,0,addr @tvs0123
                        
                        mov  @tvs02.hParent,TVI_ROOT          ;开始添加"蜀国"字样              
                        mov  @tvs02.item._mask,TVIF_TEXT+TVIF_SELECTEDIMAGE+TVIF_IMAGE 
                        lea  eax,offset szShow2
                        mov  @tvs02.item.pszText,eax
                        mov  @tvs02.item.iImage,0                                    
                        mov  @tvs02.item.iSelectedImage,1
                        invoke SendMessage,h_Trv01,TVM_INSERTITEM,0,addr @tvs02  
                        
                        mov  @tvs03.hParent,TVI_ROOT         ;开始添加"吴国"字样               
                        mov  @tvs03.item._mask,TVIF_TEXT+TVIF_SELECTEDIMAGE+TVIF_IMAGE 
                        lea  eax,offset szShow3
                        mov  @tvs03.item.pszText,eax 
                        mov  @tvs03.item.iImage,0                                    
                        mov  @tvs03.item.iSelectedImage,1                     
                        invoke SendMessage,h_Trv01,TVM_INSERTITEM,0,addr @tvs03               
        .elseif uMsg == WM_CLOSE   
                        invoke  ImageList_Destroy,h_IconList01       ;程序退出前销毁图像列表                   
                        invoke EndDialog, hWnd,NULL         
        .else                
                mov eax,FALSE                 
                ret                 
        .endif                 
        mov eax,TRUE         
        ret 
DlgProc endp 

end start 

;下面为rc文件内容
#include "resource.h"              //提示缺少该文件,可以在资源里下载

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#define       ICO_MAIN      1000    //图标
#define       ICO_MAIN01    1001    //图标
#define    ICO_MAIN02    1002    //图标 
#define    IDC_TRV1      2001

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ICO_MAIN    ICON        "Main.ico"
ICO_MAIN01  ICON    "01.ico"
ICO_MAIN02  ICON    "02.ico"
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

//定义对话框
MyDialog DIALOG 10, 10, 135, 200 
STYLE  DS_CENTER | WS_CAPTION | WS_MINIMIZEBOX | WS_SYSMENU | WS_VISIBLE | WS_OVERLAPPED | DS_MODALFRAME | DS_3DLOOK 
CAPTION "对话框程序模版"
FONT 12, "方正姚体"
BEGIN
        CONTROL "树形视图控件示例三:", -1, "Static", WS_CHILD | WS_VISIBLE, 5, 5, 100, 20
        CONTROL "",IDC_TRV1,"SysTreeView32",WS_CHILDWINDOW|WS_VISIBLE|WS_TABSTOP|TVS_LINESATROOT|TVS_HASLINES|TVS_HASBUTTONS,7,20,120,170,WS_EX_CLIENTEDGE
END 

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

内容概要:本文档详细介绍了基于SABO-SVR减法平均算法(SABO)优化支持向量机回归的数据多输入单输出回归预测项目。项目旨在通过引入SABO算法优化SVR模型,提高其预测精度和计算效率,解决传统SVR在处理复杂非线性关系和高维数据时的局限性。文档涵盖了项目背景、目标与意义、挑战及解决方案、特点与创新、应用领域、效果预测图及程序设计、模型架构、代码示例、注意事项、未来改进方向等内容。项目通过优化计算效率、增强非线性建模能力、自动化优化过程等创新点,为多个领域提供了高效的回归预测解决方案。 适合人群:具备一定机器学习基础,尤其是对支持向量机回归(SVR)和优化算法感兴趣的工程师、研究人员及数据科学家。 使用场景及目标:①优化SVR模型,提高其在复杂数据集上的预测精度和计算效率;②解决多输入单输出回归问题,如金融、能源、制造业、医疗健康、环境监测等领域的大规模数据分析;③通过引入SABO算法,避免局部最优解,实现全局优化;④提供自动化优化过程,减少人工调参工作量。 其他说明:项目不仅实现了SABO-SVR模型的构建与优化,还提供了详细的代码示例和GUI设计,帮助用户更好地理解和应用该技术。此外,文档还探讨了模型的可扩展性、实时预测优化、跨平台支持等未来改进方向,确保项目在实际应用的高效性和前瞻性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一品人家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值