iczelion tut12[5]

[入库:2005年8月19日] [更新:2007年3月24日]

本文简介:选择自 jimgreen 的 blog

注意:本例中我们没有必要调用showwindow来显示编辑控件,因为在创建时在其风格中已设置了ws_visible标志位,在创建父窗口时也可以使用这个小技巧。

;==============================================
;        initialize the members of openfilename structure
;==============================================
        mov ofn.lstructsize,sizeof ofn
        push hwnd
        pop  ofn.hwndowner
        push hinstance
        pop  ofn.hinstance
        mov  ofn.lpstrfilter, offset filterstring
        mov  ofn.lpstrfile, offset buffer
        mov  ofn.nmaxfile,maxsize

创建完编辑控件后,我们初始话ofn变量的成员。因为稍后在保存文件时还要使用该结构体变量,所以此处只初始化要用到的公共部分。wm_create 消息的处理部分是进行这种初始化的绝佳之处。

    .elseif umsg==wm_size
        mov eax,lparam
        mov edx,eax
        shr edx,16
        and eax,0ffffh
        invoke movewindow,hwndedit,0,0,eax,edx,true

当主窗口的客户区部分大小改变时,我们的应用程序将接收到wm_size 消息。当然该窗口第一次显示时,我们也将接收到该消息。要接收到该消息,主窗口必须有cs_vredraw和cs_hredraw风格。我们应该把缩放编辑控件的动作放到此处。我们要把编辑控件变成和我们的窗口客户区一样大,所以先得要得到父窗口客户区的大小。这些值包含在参数lparam中,lparam的高字部分是客户区的高,底字部分是客户区的宽。然后我们调用movewindow函数来重新调整编辑控件的大小,该函数不仅能够移动窗口的位置,而且能够改变窗口的大小。

            .if ax==idm_open
                mov  ofn.flags, ofn_filemustexist or \
                                ofn_pathmustexist or ofn_longnames or\
                                ofn_explorer or ofn_hidereadonly
                invoke getopenfilename, addr ofn

当用户选择了file/open菜单项时,我们填充ofn的其他成员,然后调用getopenfilename函数显示一个“打开文件”对话框。

                .if eax==true
                    invoke createfile,addr buffer,\
                                generic_read or generic_write ,\
                                file_share_read or file_share_write,\
                                null,open_existing,file_attribute_archive,\
                                null
                    mov hfile,eax

如果用户选择了一个文件时,我们调用createfile函数来打开。我们设置标志位来让该函数的文件能够读写。文件打开后我们把返回的文件句柄保存在一个全局变量中以便以后使用。createfile函数应用非常广泛,其原型如下:

createfile proto lpfilename:dword,\
                           dwdesiredaccess:dword,\
                           dwsharemode:dword,\
                           lpsecurityattributes:dword,\
                           dwcreationdistribution:dword\,

本文关键:iczelion asm
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top