有两个问题:
1,我用Xtreme Tookit 2.0时,使用Outlook风格时,点击左边窗口的Item时,怎么实现右边CFormView窗口的切换?
2,条件同上,我在右边CFormView窗口嵌入ADO控件,(并未实现1的功能,仅一个窗口)连接access数据库正常,但是加入一个Microsoft DataGrid控件时,只要将DataGrid控件绑定ADO控件就运行错误,取消绑定就正常,不知为什么???

解决方案 »

  1.   

    1。你是不是要点一个Item,就换一个CFormView,每一个CFormView中都有不同的控件?
    如果是这样,你可以采用控件隐藏技术,最方便,就是只用一个CFormView,其中放置你所需要的所有控件,然后点击不同的Item使相应的控件显示或隐藏,我有一个简单的例子(就是用Xtreme Tookit做的),如果你要的话,给个email,
    2。你有没有初始化ado:
    你有没有初始化com库:
    BOOL CMyApp::InitInstance()
    {
    AfxOleInit();
    .......有没有在stdafx.h中加入:
    #import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
      

  2.   

    给我一份看看吧,学习一下。谢谢!
    [email protected]
      

  3.   

    : common_man(谢安王导) ,我想看看:[email protected]  谢谢!
      

  4.   

    我按照你说的加了AfxOleInit();和#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF"),但是后一条语句不能连接成功!
      

  5.   

    我按照你说的加了AfxOleInit();和#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF"),但是后一条语句不能连接成功!
    ---------------------------------------------------------------------------------
    你计算机中的msado15.dll文件的位置可能不同,到你的计算机中搜索一下msado15.dll,看是在哪个目录下,把上面的语句改正就可以了
      

  6.   

    同意 jnxulei(石头)!!
    不知道楼主可把问题搞定了?
    中午给大家发email,稍等,^_^
      

  7.   

    #error WINDOWS.H already included.  MFC apps must not #include <windows.h>错误提示?
      

  8.   

    你可在程序中#include <windows.h>?查查看,如果有,去掉
      

  9.   

    问题基本上解决了,方法很简单:但是有新的问题,大家看看!LRESULT CMainFrame::OnOutbarNotify(WPARAM wParam, LPARAM lParam)
    {
    int nBarAction = (int)wParam; // Cast the lParam to a XT_OUTBAR_INFO* struct pointer.
    XT_OUTBAR_INFO* pOBInfo = (XT_OUTBAR_INFO*)lParam;
    ASSERT(pOBInfo);

    switch (nBarAction)
    {
    case OBN_XT_ITEMCLICK://单击Item事件
         switch (pOBInfo->nIndex )
    {
    case 0://第一个Item
    m_wndSplitter1.ReplaceView(0,1,RUNTIME_CLASS(CForm3));

        break;
    case 1://第二个Item
                
                     m_wndSplitter1.ReplaceView(0,1,RUNTIME_CLASS(CForm4));
                  break;
    case 2://第三个Item
                m_wndSplitter1.ReplaceView(0,1,RUNTIME_CLASS(CForm5));
    break; }但是,新的问题就是:我在右边的CFormView上设置了一个按钮,想要点击此按钮实现右边视图的切换,却无法实现,大虾们有办法吗?,能看看代码吗?
      

  10.   

    响应按键点击函数中发消息给主窗口:
    AfxGetMainWnd()->SendMessage(WM_OUTBAR_NOTIFY,index,NULL);
      

  11.   

    : baberson(平平狐)  请问index,代表什么?怎么取值?
      

  12.   

    我是这么做的:
    设右边视图为CForm4,上面的按钮为ID_OK,映射ID_OK单击为OnOK()
    OnOK()
    {CFrameWnd * pFrame = (CFrameWnd*)AfxGetMainWnd();
    ::PostMessage(pFrame->m_hWnd,WM_USER+101,0,0);
    }  //向主框架发送消息WM_USER + 101
    然后在CMainFrame中处理它:
    # define WM_TEMP WM_USER + 101
    ...
    ON_MESSAGE(WM_TEMP,OnCall)
    ...
    afx_msg void OnCall(WPARAM wParam, LPARAM lParam);
    ...
    void CMainFrame::OnCall(WPARAM wParam, LPARAM lParam)
    {
    m_wndSplitter1.ReplaceView(0,1,RUNTIME_CLASS(CForm5));
    //////// CXTSplitterWnd   m_wndSplitter1;
    }
    想要点击ID_OK按钮实现切换到视图CForm5,但是提示错误:
     error C2440: 'type cast' : cannot convert from 'void (__thiscall CMainFrame::*)(unsigned int,long)' to 'long (__thiscall CWnd::*)(unsigned int,long)'
     Pointers to members have different representations; cannot cast between them
    指示ON_MESSAGE(WM_TEMP,OnCall)有误?
    是什么原因呢?
      

  13.   

    还是具体说一下吧.当点击左边视图的小图标时,就会向主窗口发一个消息WM_OUTBAR_NOTIFY,参数index则表示点击的是哪一项.在主窗口中添加响应WM_OUTBAR_NOTIFY的函数,根据index的值来确定要切换成哪个视图.同样,在其它地方要切换视图的话,也向主窗口发WM_OUTBAR_NOTIFY消息,主窗口就可以切换成相应的视图了.按照Xtreme的例子,你应该会有一个COutbarView的类吧,WM_OUTBAR_NOTIFY就是在这个类中发出的.
      

  14.   

    谢谢大家,两个问题都解决了!设右边视图为CForm4,上面的按钮为ID_OK,映射ID_OK单击为OnOK()OnOK()
    {
    CFrameWnd * pFrame = (CFrameWnd*)AfxGetMainWnd();
    pFrame->SendMessage(WM_TEMP,0, 0);
    }  //向主框架发送消息WM_USER + 101
    然后在CMainFrame中处理它:
    # define WM_TEMP WM_USER + 101
    ...
    ON_MESSAGE(WM_TEMP,OnCall)
    ...
    afx_msg long OnCall(WPARAM wParam, LPARAM lParam);
    ...
    void CMainFrame::OnCall(WPARAM wParam, LPARAM lParam)
    {
    m_wndSplitter1.ReplaceView(0,1,RUNTIME_CLASS(CForm5));
    //////// CXTSplitterWnd   m_wndSplitter1;
    }点击右边的按钮即可实现右边视图的切换,很成功,证明我这个想法可行!
    再次谢谢大家的关注!