鱼C论坛

 找回密码
 立即注册
查看: 4267|回复: 8

WIN32列表框流程求帮助

[复制链接]
发表于 2012-7-15 16:20:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  .386
  .model flat, stdcall
  option casemap :none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Include 文件定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include  windows.inc
include  user32.inc
includelib user32.lib
include  kernel32.inc
includelib kernel32.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Equ 等值定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ICO_MAIN equ   1000h      ;图标
DLG_MAIN equ   2000h      ;对话框资源
IDC_LISTBOX1 equ    101
IDC_LISTBOX2 equ   102
IDC_SEL1  equ   103
IDC_RESET equ   104
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 数据段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  .data?
hInstance dd   ?
  .const
szText1  db   '项目1',0
szText2  db   '项目2',0
szText3  db   '项目3',0
szPath  db   'C:\windows\*.exe',0
szMessage db   '选择结果:%s',0
szTitle  db   '您的选择',0
szSelect  db   '您选择了以下的项目:'
szReturn  db   0dh,0ah,0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 代码段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  .code
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_ProcDlgMain proc uses ebx edi esi hWnd,wMsg,wParam,lParam
LOCAL @szBuffer[128]:byte
LOCAL @szBuffer1[128]:byte
LOCAL @szTextBuff[2048]:byte
LOCAL @dwCount
mov eax,wMsg
.if eax == WM_CLOSE       ;关闭对话框窗口所作操作
  invoke EndDialog,hWnd,NULL      ;结束对话框窗口
.elseif eax == WM_INITDIALOG       ;在对话框窗口还没有显现出来就处理的消息
;******************************************************************************************************************************
; 初始化图标
;******************************************************************************************************************************
  invoke LoadIcon,hInstance,ICO_MAIN     ;载入图标返回句柄
  invoke SendMessage,hWnd,WM_SETICON,ICON_BIG,eax   ;发送消息到对话框过程来设置菜单图标
;******************************************************************************************************************************
; 初始化代码框
;******************************************************************************************************************************
  invoke SendDlgItemMessage,hWnd,IDC_LISTBOX1,LB_ADDSTRING,0,addr szText1 ;添加字符串,返回值eax为索引值
  invoke SendDlgItemMessage,hWnd,IDC_LISTBOX1,LB_ADDSTRING,0,addr szText2
  invoke SendDlgItemMessage,hWnd,IDC_LISTBOX1,LB_ADDSTRING,0,addr szText3
  invoke SendDlgItemMessage,hWnd,IDC_LISTBOX2,LB_DIR,DDL_ARCHIVE,addr szPath
  ;将文件排列出来放置列表框供选择!
  ;LB_DIR  :将指定目录中的文件名自动列出并加入列表框中
  ;DDL_ARCHIVE :加入归档属性
  ;DDL_drives :加入驱动器名
  ;DDL_DIRECTORY :加入目录
  ;lParam  :文件名通配符
;******************************************************************************************************************************
; 取多选的列表框项目
;******************************************************************************************************************************
.elseif eax == WM_COMMAND
  mov eax,wParam       ;wParam存储了菜单命令
  .if eax == IDOK       ;如果按下了OK按钮
  invoke SendDlgItemMessage,hWnd,IDC_LISTBOX2,LB_GETSELCOUNT,0,0
  ;LB_GETSELCOUNT :返回多选列表框中项目总数
  ;lParam和wParam为NULL
  mov @dwCount,eax       ;存储了列表框2项目总数
  invoke SendDlgItemMessage,hWnd,IDC_LISTBOX2,LB_GETSELITEMS,32,addr @szBuffer
  ;LB_GETSELITEMS :返回多选框选中列表索引到缓冲区
  ;lParam  :缓冲区地址
  ;wParam  :最大项数
  invoke lstrcpy,addr @szTextBuff,addr szSelect     ;szSelect 字符串:您选择了以下的项目:
  ;lstrcpy  :该函数复制一个字符串到缓冲区
  ;参数1  :指向接收由参数2指向字符串内容的缓冲区,缓冲区必须足够大来容纳字符串,还包括最后的NULL终止符
  ;参数2  :指向待复制的以NULL为终止符的字符串
  lea esi,@szBuffer
  ;@szBuffer :多选框选中列表索引
  .while @dwCount
  ;@dwCount :列表框2项目总数
   lodsd        
   ; :传送双字
   ;lodsd :把esi寄存器数值按双字装入eax中
   lea ecx,@szBuffer1
   invoke SendDlgItemMessage,hWnd,IDC_LISTBOX2,LB_GETTEXT,eax,ecx
   ;LB_GETTEXT :返回某个项目的字符串
   ;lParam  :缓冲区地址
   ;wParam  :位置索引
   invoke lstrcat,addr @szTextBuff,addr szReturn
   ;lstrcat :该函数将一个字符串附加在另外一个字符串后面
   ;lpString1:一个以NULL为终止符字符串指针,这个缓冲区必须足够大能包含两个字符串
   ;lpString2:一个以NULL为终止符字符串指针,它将追加在由lpString1中指定,这个缓冲区必须足够大能包含两个字符串
   ;返回值 :若函数运行成功返回值指向缓冲区、若失败,则返回值为NULL
   invoke lstrcat,addr @szTextBuff,addr @szBuffer1
   dec @dwCount
  .endw
  invoke MessageBox,hWnd,addr @szTextBuff,addr szTitle,MB_OK   ;弹出消息框
  .elseif ax == IDC_RESET
   invoke SendDlgItemMessage,hWnd,IDC_LISTBOX2,LB_SETSEL,FALSE,-1
  .elseif ax == IDC_LISTBOX1
   shr eax,16
   .if ax == LBN_SELCHANGE
;******************************************************************************************************************************
; 将鼠标点击结果显示在文本框中
;******************************************************************************************************************************
    invoke SendMessage,lParam,LB_GETCURSEL,0,0
    lea ecx,@szBuffer
    invoke SendMessage,lParam,LB_GETTEXT,eax,ecx
    invoke SetDlgItemText,hWnd,IDC_SEL1,addr @szBuffer
;******************************************************************************************************************************
; 双击项目弹出对话框
;******************************************************************************************************************************
   .elseif ax == LBN_DBLCLK
    invoke SendMessage,lParam,LB_GETCURSEL,0,0
    lea ecx,@szBuffer
    invoke SendMessage,lParam,LB_GETTEXT,eax,ecx
    invoke wsprintf,addr @szBuffer1,addr szMessage,addr @szBuffer
    invoke MessageBox,hWnd,addr @szBuffer1,addr szTitle,MB_OK
   .endif
;******************************************************************************************************************************
  .elseif ax == IDC_LISTBOX2
   shr eax,16
   .if ax == LBN_SELCHANGE
    invoke SendMessage,lParam,LB_GETSELCOUNT,0,0
    mov ebx,eax
    invoke GetDlgItem,hWnd,IDOK
    invoke EnableWindow,eax,ebx
   .endif
  .endif
;******************************************************************************************************************************
.else
  mov eax,FALSE
  ret
.endif
mov eax,TRUE
ret
_ProcDlgMain endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
start:
invoke GetModuleHandle,NULL
mov hInstance,eax
invoke DialogBoxParam,hInstance,DLG_MAIN,NULL,offset _ProcDlgMain,NULL  ;创建模态对话框
;函数从hInstance模块装载DLG_MAIN的资源
;父窗口就是本身,对话框过程是_ProcDlgMain
;dwInitParam是当做WM_INITDIALOG消息的lParam传给对话框过程,用来自定义消息
invoke ExitProcess,NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
end  start


=============================================================================
RC文件

#include  <resource.h>
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#define  ICO_MAIN 0x1000      //图标
#define  DLG_MAIN 0x2000      //对话框
#define  IDC_LISTBOX1 101
#define  IDC_LISTBOX2 102
#define  IDC_SEL1  103
#define  IDC_RESET 104
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ICO_MAIN ICON  "Main.ico"     //图标文件
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
DLG_MAIN DIALOG  163, 160,190,108     //对话框资源定义:X坐标,Y坐标,宽度,高度
STYLE  DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU//风格定义
CAPTION  "列表框控件示例"       //定义显示在窗口标题栏上的文字
FONT  8, "微软雅黑"       //定义对话框包括子窗口控件使用的字体和大小
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
BEGIN
LISTBOX   IDC_LISTBOX1,6,5,55,86,LBS_STANDARD
LISTBOX   IDC_LISTBOX2,68,5,115,86,LBS_STANDARD | LBS_MULTIPLESEL | LBS_EXTENDEDSEL
LTEXT   " ",IDC_SEL1,6,93,55,8
PUSHBUTTON  "复位(&R)",IDC_RESET,89,90,45,14
DEFPUSHBUTTON  "查看(&S)",IDOK,139,90,45,14,WS_DISABLED
END
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//WS_POPUP  :弹出式窗口
//WS_VISIBLE  :初始状态可见
//WS_SYSMENU  :创建一个在其标题条中具有系统菜单框的窗口,仅适用于带标题条的窗口
//DS_MODALFRAME :指定带模式对话框边界的对话框,此风格和WS_CAPTION、WS_SYSMENU风格一起,创建带标题条和系统菜单的对话框
//WS_CAPTION  :创建一个有标题的窗口,包含了WS_BORDER,不能和WS_DLGFRAME一起使用
    //WS_BORDER  :创建一个有边框的窗口
    //WS_DLGFRAME :创建一个带有双层边框但没有标题的窗口
//CONTROL  文本, ID, 类, 风格, X, Y, 宽度, 高度 [,扩展风格]
//invoke   CreateWindow, 类名, 文本, 风格, X, Y, 宽度, 高度, 对话框窗口句柄, ID, hInstance, NULL
//控件名称  [文本,] ID,X,Y,宽度,高度[,风格][,扩展风格]
//类介绍   :按钮(Button)、静态(Static)、编辑(Edit)、滚动条(ScrollBar)、列表框(ListBox)、组合框(ComboBox)






希望好人帮我说下 下面这段的流程
添加了注释,我还是稀里糊涂的


.while @dwCount
  ;@dwCount :列表框2项目总数
   lodsd        
   ; :传送双字
   ;lodsd :把esi寄存器数值按双字装入eax中
   lea ecx,@szBuffer1
   invoke SendDlgItemMessage,hWnd,IDC_LISTBOX2,LB_GETTEXT,eax,ecx
   ;LB_GETTEXT :返回某个项目的字符串
   ;lParam  :缓冲区地址
   ;wParam  :位置索引
   invoke lstrcat,addr @szTextBuff,addr szReturn
   ;lstrcat :该函数将一个字符串附加在另外一个字符串后面
   ;lpString1:一个以NULL为终止符字符串指针,这个缓冲区必须足够大能包含两个字符串
   ;lpString2:一个以NULL为终止符字符串指针,它将追加在由lpString1中指定,这个缓冲区必须足够大能包含两个字符串
   ;返回值 :若函数运行成功返回值指向缓冲区、若失败,则返回值为NULL
   invoke lstrcat,addr @szTextBuff,addr @szBuffer1
   dec @dwCount
  .endw


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-7-16 08:16:49 | 显示全部楼层
自己理解了。。没事了

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
                .386
                .model flat, stdcall
                option casemap :none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Include 文件定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include                windows.inc
include                user32.inc
includelib        user32.lib
include                kernel32.inc
includelib        kernel32.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Equ 等值定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ICO_MAIN        equ                        1000h                                                ;图标
DLG_MAIN        equ                        2000h                                                ;对话框资源
IDC_LISTBOX1        equ                         101
IDC_LISTBOX2        equ                        102
IDC_SEL1                equ                        103
IDC_RESET        equ                        104
IDC_ALL                equ                        105
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 数据段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
                .data?
hInstance        dd                        ?
                .const
szText1                db                        '项目1',0
szText2                db                        '项目2',0
szText3                db                        '项目3',0
szPath                db                        'C:\windows\*.exe',0
szMessage        db                        '选择结果:%s',0
szTitle                db                        '您的选择',0
szSelect                db                        '您选择了以下的项目:'
szReturn                db                        0dh,0ah,0
szErr                db                        '错误:选则项目不存在!',0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 代码段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
                .code
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_ProcDlgMain        proc        uses ebx edi esi hWnd,wMsg,wParam,lParam
        LOCAL        @szBuffer[128]:byte
        LOCAL        @szBuffer1[128]:byte
        LOCAL        @szTextBuff[2048]:byte
        LOCAL        @dwCount

        mov        eax,wMsg
        .if        eax == WM_CLOSE                                                        ;关闭对话框窗口所作操作
                invoke        EndDialog,hWnd,NULL                                                ;结束对话框窗口
        .elseif        eax == WM_INITDIALOG                                                        ;在对话框窗口还没有显现出来就处理的消息
;******************************************************************************************************************************
; 初始化图标
;******************************************************************************************************************************
                invoke        LoadIcon,hInstance,ICO_MAIN                                        ;载入图标返回句柄
                invoke        SendMessage,hWnd,WM_SETICON,ICON_BIG,eax                        ;发送消息到对话框过程来设置菜单图标
;******************************************************************************************************************************
; 初始化代码框
;******************************************************************************************************************************
                invoke        SendDlgItemMessage,hWnd,IDC_LISTBOX1,LB_ADDSTRING,0,addr szText1        ;添加字符串,返回值eax为索引值
                invoke        SendDlgItemMessage,hWnd,IDC_LISTBOX1,LB_ADDSTRING,0,addr szText2
                invoke        SendDlgItemMessage,hWnd,IDC_LISTBOX1,LB_ADDSTRING,0,addr szText3
                invoke        SendDlgItemMessage,hWnd,IDC_LISTBOX2,LB_DIR,DDL_ARCHIVE,addr szPath
                ;将文件排列出来放置列表框供选择!
                ;LB_DIR                :将指定目录中的文件名自动列出并加入列表框中
                ;DDL_ARCHIVE        :加入归档属性
                ;DDL_drives        :加入驱动器名
                ;DDL_DIRECTORY        :加入目录
                ;lParam                :文件名通配符
;******************************************************************************************************************************
; 取多选的列表框项目
;******************************************************************************************************************************
        .elseif        eax == WM_COMMAND
                mov        eax,wParam                                                        ;wParam存储了菜单命令
                .if        eax == IDOK                                                        ;如果按下了OK按钮
                invoke        SendDlgItemMessage,hWnd,IDC_LISTBOX2,LB_GETSELCOUNT,0,0
                ;LB_GETSELCOUNT        :返回多选列表框中选中的项目总数
                ;lParam和wParam为NULL
                .if        eax==0
                        invoke        MessageBox,hWnd,offset szErr,offset szTitle,MB_OK
                        ret
                .endif
                mov        @dwCount,eax                                                        ;存储了列表框2选中的项目总数
                invoke        SendDlgItemMessage,hWnd,IDC_LISTBOX2,LB_GETSELITEMS,32,addr @szBuffer
                ;LB_GETSELITEMS        :返回多选框选中列表索引到缓冲区
                ;lParam                :缓冲区地址
                ;wParam                :最大项数
                invoke        lstrcpy,addr @szTextBuff,addr szSelect                                        ;szSelect 字符串:您选择了以下的项目:
                ;lstrcpy                :该函数复制一个字符串到缓冲区
                ;参数1                :指向接收由参数2指向字符串内容的缓冲区,缓冲区必须足够大来容纳字符串,还包括最后的NULL终止符
                ;参数2                :指向待复制的以NULL为终止符的字符串
                lea        esi,@szBuffer
                ;@szBuffer        :多选框选中列表索引
                .while        @dwCount
                ;@dwCount        :列表框2选中项目总数
                        lodsd                                                               
                        ;        :传送双字
                        ;lodsd        :把esi寄存器数值按双字装入eax中
                        lea        ecx,@szBuffer1
                        invoke        SendDlgItemMessage,hWnd,IDC_LISTBOX2,LB_GETTEXT,eax,ecx
                        ;LB_GETTEXT        :返回某个项目的字符串
                        ;lParam                :缓冲区地址
                        ;wParam                :位置索引
                        invoke        lstrcat,addr @szTextBuff,addr szReturn
                        ;lstrcat                :该函数将一个字符串附加在另外一个字符串后面
                        ;lpString1        :一个以NULL为终止符字符串指针,这个缓冲区必须足够大能包含两个字符串
                        ;lpString2        :一个以NULL为终止符字符串指针,它将追加在由lpString1中指定,这个缓冲区必须足够大能包含两个字符串
                        ;返回值                :若函数运行成功返回值指向缓冲区、若失败,则返回值为NULL
                        invoke        lstrcat,addr @szTextBuff,addr @szBuffer1
                        dec        @dwCount
                .endw
                invoke        MessageBox,hWnd,addr @szTextBuff,addr szTitle,MB_OK                        ;弹出消息框,所有的字符串组合后。
                .elseif        ax == IDC_RESET                                                        ;按下按钮【复位】
                        invoke        SendDlgItemMessage,hWnd,IDC_LISTBOX2,LB_SETSEL,FALSE,-1
                        ;LB_SETSEL        :在多选框中将一个项目选中或清除
                        ;wParam                :选择状态
                        ;lParam                :位置索引
                .elseif        ax == IDC_ALL
                        invoke        SendDlgItemMessage,hWnd,IDC_LISTBOX2,LB_GETCOUNT,0,0
                        invoke        SendDlgItemMessage,hWnd,IDC_LISTBOX2,LB_SELITEMRANGE,TRUE,eax
                .elseif        ax == IDC_LISTBOX1
                        shr        eax,16
                        .if        ax == LBN_SELCHANGE                                        ;选定状态改变
;******************************************************************************************************************************
; 将鼠标点击结果显示在文本框中
;******************************************************************************************************************************
                                invoke        SendDlgItemMessage,hWnd,IDC_LISTBOX1,LB_GETCURSEL,0,0
                                ;获取单选框中选定状态的项目索引
                                lea        ecx,@szBuffer
                                invoke        SendDlgItemMessage,hWnd,IDC_LISTBOX1,LB_GETTEXT,eax,ecx
                                ;获取文本信息放置@szBuffer缓冲区中
                                invoke        SetDlgItemText,hWnd,IDC_SEL1,addr @szBuffer
                                ;设置对话框中的字符串显示【项目几】
;******************************************************************************************************************************
; 双击项目弹出对话框
;******************************************************************************************************************************
                        .elseif        ax == LBN_DBLCLK                                        ;用户双击了一个项目
                                invoke        SendDlgItemMessage,hWnd,IDC_LISTBOX1,LB_GETCURSEL,0,0
                                ;获取单选框中选定状态的项目索引
                                lea        ecx,@szBuffer
                                invoke        SendDlgItemMessage,hWnd,IDC_LISTBOX1,LB_GETTEXT,eax,ecx
                                ;获取eax中存储项目的字符串,放置到@szBuffer缓冲区中
                                invoke        wsprintf,addr @szBuffer1,addr szMessage,addr @szBuffer
                                ;格式化字符串
                                invoke        MessageBox,hWnd,addr @szBuffer1,addr szTitle,MB_OK
                                ;弹出消息框显示选中的项目
                        .endif
                .endif
;******************************************************************************************************************************
        .else
                mov        eax,FALSE
                ret
        .endif
        mov        eax,TRUE
        ret
_ProcDlgMain        endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
start:
        invoke        GetModuleHandle,NULL
        mov        hInstance,eax
        invoke        DialogBoxParam,hInstance,DLG_MAIN,NULL,offset _ProcDlgMain,NULL                ;创建模态对话框
        ;函数从hInstance模块装载DLG_MAIN的资源
        ;父窗口就是本身,对话框过程是_ProcDlgMain
        ;dwInitParam是当做WM_INITDIALOG消息的lParam传给对话框过程,用来自定义消息
        invoke        ExitProcess,NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
end                start





















#include                <resource.h>
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#define                ICO_MAIN        0x1000                                                //图标
#define                DLG_MAIN        0x2000                                                //对话框
#define                IDC_LISTBOX1        101
#define                IDC_LISTBOX2        102
#define                IDC_SEL1                103
#define                IDC_RESET        104
#define                IDC_ALL                105
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ICO_MAIN        ICON                "Main.ico"                                        //图标文件
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
DLG_MAIN        DIALOG                163, 160,190,108                                        //对话框资源定义:X坐标,Y坐标,宽度,高度
STYLE                DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU//风格定义
CAPTION                "列表框控件示例"                                                        //定义显示在窗口标题栏上的文字
FONT                8, "微软雅黑"                                                        //定义对话框包括子窗口控件使用的字体和大小
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
BEGIN
        LISTBOX                        IDC_LISTBOX1,6,5,55,86,LBS_STANDARD
        LISTBOX                        IDC_LISTBOX2,68,5,115,86,LBS_STANDARD | LBS_MULTIPLESEL | LBS_EXTENDEDSEL
        LTEXT                        " ",IDC_SEL1,6,93,25,8
        DEFPUSHBUTTON                "查看(&S)",IDOK,139,90,45,14
        PUSHBUTTON                "复位(&R)",IDC_RESET,89,90,45,14
        PUSHBUTTON                "全选(&A)", IDC_ALL,39, 90, 45, 14
END
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//WS_POPUP                :弹出式窗口
//WS_VISIBLE                :初始状态可见
//WS_SYSMENU                :创建一个在其标题条中具有系统菜单框的窗口,仅适用于带标题条的窗口
//DS_MODALFRAME        :指定带模式对话框边界的对话框,此风格和WS_CAPTION、WS_SYSMENU风格一起,创建带标题条和系统菜单的对话框
//WS_CAPTION                :创建一个有标题的窗口,包含了WS_BORDER,不能和WS_DLGFRAME一起使用
                                //WS_BORDER                :创建一个有边框的窗口
                                //WS_DLGFRAME        :创建一个带有双层边框但没有标题的窗口
//CONTROL                文本, ID, 类, 风格, X, Y, 宽度, 高度 [,扩展风格]
//invoke                        CreateWindow, 类名, 文本, 风格, X, Y, 宽度, 高度, 对话框窗口句柄, ID, hInstance, NULL
//控件名称                [文本,]        ID,X,Y,宽度,高度[,风格][,扩展风格]
//类介绍                        :按钮(Button)、静态(Static)、编辑(Edit)、滚动条(ScrollBar)、列表框(ListBox)、组合框(ComboBox)







想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-7-16 08:18:00 | 显示全部楼层
感觉是表面的热闹。。现在发现没人帮助,,晕死
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-7-16 18:47:18 | 显示全部楼层
我表示WIN21 汇编 还没开始学额,先来支持下楼主
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2018-9-30 13:40:02 | 显示全部楼层

回帖奖励 +1 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

头像被屏蔽
发表于 2018-11-30 13:56:37 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-2 12:42:22 | 显示全部楼层

回帖奖励 +1 鱼币

顶楼主一下,顺便拿个鱼币奖励自己一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-5 15:32:48 | 显示全部楼层

回帖奖励 +1 鱼币

这么久了,鱼币还没有领完
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-30 15:21:03 | 显示全部楼层

回帖奖励 +1 鱼币

头晕
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 20:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表