我用atl作了一个composite control,在composite的view上放了一些控件,发现这些控件原来的消息都不发到父对话框了,比如:我在上面增加了一个scroll control,可是在wm_hscroll消息中得不到滚动的消息,在mfc下肯定可以得到,我不知道用atl开发activex时,它的消息循环到底是什么样的?谁说说 它的消息循环???

解决方案 »

  1.   

    它的消息循环,靠“自动分发系统”
      举一例:  
      你只需要在SINK映射中:
         SINK_ENTRY(IDC_BUTTON1,DISPID_CLICK,OnClick_Button1)
      然后:
         在OnClick_Button1中,用SendDlgItemMessage函数即可.....
      

  2.   

    我发现atl并没有创建composite control的对话框类,我于是用classward为composite control创建了一个对话框类,我想这样我就可以按照mfc的方式写代码了,可是我在这个对话框类中对各个按钮,进度条等控件做的消息映射在IE中都不相应,我想一定是消息没有发到这个对话框类中,你的意思是:在xxCtl.h中为每个按钮的单机创建一个函数,然后再这个函数中在把消息发给对话框类吗?我试过了,不行呀,郁闷,看了这么多贴子,有些和我的问题相同,都是新手问题,好像都没有人回答!
      

  3.   

    关键看你是什么工程.... 
      是否自己添加对话框类等...
      我说的SINK XX 是为Composite Control支持连接点用的
      自己添加对话框,那么对话框需要继承于IDialogImpl
      具体实现看MSDN
      

  4.   

    msdn中有这样的例子吗?1。另外我还想问我把我的mfc的类用到ATL中好像不可以,我主要是界面类,以前写的,比如圆形按钮等等,都是mfc的类,因为类里有自己的消息循环,这样就无法用到ATL中了,因为ATL不会再把这些消息发给这个控件,我该如何改写这些类呢?我需要在ATL中作一些界面出来。2.ATL做的composite control初始化在那里进行,因为compostie control中我需要放一些button等,我想在初始化的地方create这些button,该在那个函数中写呢?