我在COM中做以CAxDialogImpl为基类的对话框,我在对话框资源中加了一个List Control控件,现在我想在LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)函数中对该控件进行初始化,同时,我想把所加的List Control设置成为Report风格,并且想在MFC的支持下工作于我原来做的一个MFC类库下(CReportCtrl : public CListCtrl)。我知道在纯MFC工程下,我可以给对话框新建一个基于CDialog类的类,然后使用Wizard将对话框中的List Control设置成为我的类库CReportCtrl类型的数据, 可是在COM中怎样完成?

解决方案 »

  1.   

    //in ATL dialog you should use LVM_SETEXTENDEDLISTVIEWSTYLE style,such as
    LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
    {
    DWORD dwStyle = ::SendMessage(m_hWnd,LVM_GETEXTENDEDLISTVIEWSTYLE,0,0);
    dwStyle |= LVS_EX_FULLROWSELECT;
    dwStyle |= LVS_EX_GRIDLINES;
    dwStyle |= LVS_EX_CHECKBOXES;
    dwStyle |= LVS_EX_FLATSB;
    ::SendMessage(hListCtrl,LVM_SETEXTENDEDLISTVIEWSTYLE,0,dwStyle);
             }
      

  2.   

    现在的问题是: 如何将放在对话框中的List Control设置成以CReportCtrl(我的MFC类)的一个对象变量, 因为我要在这个COM中使用我的CReportCtrl.
      

  3.   

    //try this code
    LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
    {
    DWORD dwStyle = ::SendMessage(m_hWnd,LVM_GETEXTENDEDLISTVIEWSTYLE,0,0);
    dwStyle |= LVS_EX_FULLROWSELECT;
    dwStyle |= LVS_EX_GRIDLINES;
    dwStyle |= LVS_REPORT;//this is report style
    ::SendMessage(hListCtrl,LVM_SETEXTENDEDLISTVIEWSTYLE,0,dwStyle);
             }
      

  4.   

    how to get "hListCtrl"?
      

  5.   

    hListCtrl = GetDlgItem(ID)->m_hWnd
      

  6.   

    HWND hListCtrl =GetDlgItem(IDC_LISTEMAIL);//IDC_LISTEMAIL is your listctrl id
      

  7.   

    我想在COM中使用我自己创建得一个继承于CListCtrl的MFC类CReportCtrl,但是只要我调用CReportCtrl的成员函数就会出错,郁闷。帮忙…………
      

  8.   

    do you support MFC in your atl project? i suggest you use SDK in ATL.
      

  9.   

    ATL+WTL一起用会方便很多,你甚至可以不用MFC了
      

  10.   

    知道嘛,我的MFC可是写了上万行呀,难道让我再用SDK写一边?简直是恶梦呀。再说,我现在也只是想实现功能,暂时不考虑资源、效率的问题。
      

  11.   

    add mfc support to your atl project ,then you can use your CReportCtrl class.
    http://community.csdn.net/Expert/topic/3509/3509832.xml?temp=.740719
      

  12.   

    就是由原来的MFC改成SDK了???学习之!!
      

  13.   

    我在我得工程中增加了MFC支持,并且工程编译没有问题,就是运行得时候调用CReportCtrl得时候出现了问题, 如果那位有成功得源代码发给我,那我高分相送。[email protected]
      

  14.   

    使用ATL支持MFC和MFC下使用CReportCtrl并没有多大差别,如果使用注意你的对话框是CDialog基类而不是 CAxDialog
      

  15.   

    ……
    呃……建议……只是建议……把你的Report Control修改成可以Attatch到HWND的那种(就是没有自己的状态,窗口数据可以用窗口属性来保存),把消息处理全部改成类方法,然后在ATL的消息循环中调用相应的方法……
      

  16.   

    大家能否给点关于MFC做COM时注册的意见。
      

  17.   

    我怎么在我的接口中添加的方法在客户端说不是改接口的方法?
    error C2039: 'ShowWindow' : is not a member of 'IDlgOutput'
            e:\my doc\private\6.0\proj\media\media_i.h(74) : see declaration of 'IDlgOutput'我是按照大家说的创建了一个基于MFC的接口,即:使用的Automation选项。
    所创建的对话框也是继承于CDialog。我改怎么办?
      

  18.   

    我怎么在我的接口中添加的方法在客户端说不是改接口的方法?
    error C2039: 'ShowWindow' : is not a member of 'IDlgOutput'
            e:\my doc\private\6.0\proj\media\media_i.h(74) : see declaration of 'IDlgOutput'我是按照大家说的创建了一个基于MFC的接口,即:使用的Automation选项。
    所创建的对话框也是继承于CDialog。我改怎么办?
      

  19.   

    我怎么在我的接口中添加的方法在客户端说不是改接口的方法?
    error C2039: 'ShowWindow' : is not a member of 'IDlgOutput'
            e:\my doc\private\6.0\proj\media\media_i.h(74) : see declaration of 'IDlgOutput'我是按照大家说的创建了一个基于MFC的接口,即:使用的Automation选项。
    所创建的对话框也是继承于CDialog。我该怎么办?
      

  20.   

    我怎么在我的接口中添加的方法在客户端说不是改接口的方法?
    error C2039: 'ShowWindow' : is not a member of 'IDlgOutput'
            e:\my doc\private\6.0\proj\media\media_i.h(74) : see declaration of 'IDlgOutput'我是按照大家说的创建了一个基于MFC的接口,即:使用的Automation选项。
    所创建的对话框也是继承于CDialog。我该怎么办?
      

  21.   

    IDlgOutput base class is not CWindow.attach your more code here
      

  22.   

    怎样编写支持MFC的COM????????????????????????????????
      
                 ●~     
                ∠▏         o     e
          ● o √┃        l    v    l
          ┠┘  ╱╲        o       o
          ┠╮ ╰┬╯         v   v
        ─╯│   ┙             e