Window SubClassing另类运用(之二)[10]

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

本文简介:选择自 weizhisheng 的 blog

           sendmessage(awnd, bffm_setselection, 1, longint(pchar(str)));


         end;


end;


 


由于我们添加的combobox是一个自绘风格(owner-draw)的列表,所以我们还必须处理wm_measureitemwm_drawitem消息。wm_measureitem的处理相对简单,因为对于combobox来说项目的宽度无所谓(它自动由combobox本身的宽度来决定),我们只需要设置它的高度即可。为了简化起见,我用了硬编码的方法,当然基于系统设置进行仔细的计算也是可行的(而且完全应该):


    wm_measureitem:


      begin


        pmis := pmeasureitemstruct(lp);


        if pmis^.ctltype=odt_combobox then


           pmis^.itemheight := 20;


end;


其中pmis声明为一个pmeasureitemstruct结构指针。


 


wm_drawitem的处理要复杂的多。因为对于系统级的文件夹,必须从system imagelist中获得它的图标,而且还要从lpitemidlist取得文件夹的名称(不一定是文件路径:比如,c:\windows\desktopshell中的名称是“桌面”)。为此我添加了几个辅助函数,用来简化wm_drawitem的处理:


本文关键:Delphi,API,Subclass
  相关方案
Google
 

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

go top