buanhui 发表于 2003-6-14 16:12:00

各位大虾!救救我,我做了一个带组合框CComboBox 和编辑控件CEdit的工具条CToolbar

各位大虾!救救我,我做了一个带组合框CComboBox 和编辑控件CEdit的条CToolbar[求助]各位大虾!救救我,我做了一个带组合框CComboBox 和编辑控件CEdit的工具条CToolbar
用一个派生于CWnd的隐藏窗口CTBGenWnd,实现CAcToolBar的命令函数
//问题是:
1。窗口中的自创工具条CToolbar的组合框CComboBox和编辑控件CEdit如何才能得到焦点输入字符
2。隐藏窗口CTBGenWnd中如何才能实现组合框CComboBox和编辑控件CEdit的响应函数,如输入,选择,改变字符,失去焦点
程序代码如下:
//下面代码为CAcToolBar类的
class CAcToolBar : public CToolBar {
      DECLARE_DYNAMIC (CAcToolBar)
      CWnd *mpOwner ;
public:
      CAdUiComboBox m_combox;
      CEditm_editbox;
      //{{AFX_VIRTUAL(CAcToolBar)
      //}}AFX_VIRTUAL
protected:
      //{{AFX_MSG(CAcToolBar)
      //}}AFX_MSG
      afx_msg void OnUpdateToolBar (CCmdUI *pCmdUI) ; //----- See TN031
//问题在此,用下面的函数保持焦点能行吗,如果不行该咋办?请大虾指点
    afx_msg LONG onAcadKeepFocus(UINT, LONG);
      DECLARE_MESSAGE_MAP ()
} ;
//-----------------------------------------------------------------------------
//工具条的生成如下
                if(g_pTBGenWnd == NULL)
                {
      
                        g_pTBGenWnd = new CTBGenWnd;
                        g_pTBGenWnd->Create (NULL, NULL, WS_CHILD | WS_MINIMIZE,Rect (0,0,1,1), pAcadFrame,10);
                }
                g_pAcToolBar = new CAcToolBar;
                g_pAcToolBar->Create(pAcadFrame, g_pTBGenWnd);
                g_pAcToolBar->LoadToolBar(IDR_TB_WINDDLG);
                CRect rect;
                g_pAcToolBar->SetButtonInfo(2, IDC_COMBOX, TBBS_SEPARATOR, 160 );
                g_pAcToolBar->GetItemRect(2, &rect);
                rect.bottom += 100;
                g_pAcToolBar->m_combox.Create(CBS_DROPDOWN|WS_VISIBLE|WS_TABSTOP|CBS_AUTOHSCROLL,rect, g_pAcToolBar, IDC_COMBOX);
                g_pAcToolBar->m_combox.AddString("VC++6.0");
                g_pAcToolBar->m_combox.AddString("Hello World!");
                CRect rect1;
                g_pAcToolBar->SetButtonInfo(3, IDC_EDITBOX, TBBS_CHECKBOX, 20);
                g_pAcToolBar->GetItemRect(3, &rect1);
                g_pAcToolBar->m_editbox.Create(WS_VISIBLE|ES_RIGHT|WS_BORDER,rect1, g_pAcToolBar, IDC_EDITBOX);
                //g_pAcToolBar->LoadToolBar(IDR_TB_WINDDLG);
                g_pAcToolBar->EnableDocking(CBRS_ALIGN_ANY);
                g_pAcToolBar->SetWindowText(_T("轴网命令")) ;
                pAcadFrame->FloatControlBar(g_pAcToolBar, CPoint (100, 200), CBRS_ALIGN_TOP) ;
                pAcadFrame->ShowControlBar(g_pAcToolBar, TRUE, FALSE) ;
//下面代码为CTBGenWnd类的实现代码
BEGIN_MESSAGE_MAP(CTBGenWnd, CWnd)
      //{{AFX_MSG_MAP(CTBGenWnd)
      ON_CBN_SELCHANGE(IDC_COMBOX, OnSelchangeCombo)
      ON_CBN_CHANGE(IDC_EDITBOX, OnchangeEdit)
      ON_WM_CLOSE()
      //}}AFX_MSG_MAP      //ON_MESSAGE (WM_ACAD_KEEPFOCUS, onAcadKeepFocus)
END_MESSAGE_MAP()
void CTBGenWnd::OnSelchangeCombo() //此子函数的代码该如何写才能响应m_combox的OnSelchangeCombo
//
{
      CMDIFrameWnd *pAcadFrame = acedGetAcadFrame();
   CAcModuleResourceOverride resOverride;
      if(g_pAcToolBar != NULL)
      {
      CString cs;
      g_pAcToolBar->m_combox.GetWindowText(cs);
      acutPrintf("the test is %s",cs);
      }
      return;
}
void CTBGenWnd::OnchangeEdit)() //此子函数的代码该如何
{
      CMDIFrameWnd *pAcadFrame = acedGetAcadFrame();
   CAcModuleResourceOverride resOverride;
      if(g_pAcToolBar != NULL)
      {
      CString cs;
      g_pAcToolBar->m_editbox.GetWindowText(cs);
      acutPrintf("the test is %s",cs);
      }
      return;
}
页: [1]
查看完整版本: 各位大虾!救救我,我做了一个带组合框CComboBox 和编辑控件CEdit的工具条CToolbar