乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 41|回复: 2

用objectARX工具向导生成带消息接收cwnd的工具条,工具条上带组合框

[复制链接]

16

主题

27

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
91
发表于 2003-6-23 20:23:00 | 显示全部楼层 |阅读模式
用objectARX向导生成带消息接收cwnd的工具条,工具条上带组合框
为何组合框不能得到焦点输入文字或者响应的选择消息]//问题是:
1。窗口中的自创工具条CToolbar的组合框CComboBox和编辑控件CEdit如何才能得到焦点输入字符
2。隐藏窗口CTBGenWnd中如何才能实现组合框CComboBox和编辑控件CEdit的响应函数,如输入,选择,改变字符,失去焦点
程序代码如下:
[U]//下面代码为CAcToolBar类的[/U]
class CAcToolBar : public CToolBar {
DECLARE_DYNAMIC (CAcToolBar)
CWnd *mpOwner ;
public:
CComboBox m_combox;
CEdit  m_editbox;
//{{AFX_VIRTUAL(CAcToolBar)
//}}AFX_VIRTUAL
protected:
//{{AFX_MSG(CAcToolBar)
//}}AFX_MSG
afx_msg void OnUpdateToolBar (CCmdUI *pCmdUI) ; //----- See TN031
[U]//问题在此,用下面的函数保持焦点能行吗,如果不行该咋办?请大虾指点
    [/U]afx_msg LONG onAcadKeepFocus(UINT, LONG);//用此函数保持焦点,对于工具条上的 组合框对吗?
DECLARE_MESSAGE_MAP ()
} ;
//-----------------------------------------------------------------------------
[U]//工具条的生成如下,这是在工具条类的.cpp文件之外.cpp的实现[/U]
  if(g_pTBGenWnd == NULL)// [U]g_pTBGenWnd 为接收消息,实现工具条功能的类的指[/U]针
  {

   g_pTBGenWnd = new CTBGenWnd;
   g_pTBGenWnd->Create (NULL, NULL, WS_CHILD | WS_MINIMIZE,Rect (0,0,1,1), pAcadFrame,10);
  }
  g_pAcToolBar = new CAcToolBar;//[U]g_pAcToolBar 为指向工具条的指针[/U]
  g_pAcToolBar->Create(pAcadFrame, g_pTBGenWnd);
  g_pAcToolBar->LoadToolBar(IDR_TB_WINDDLG);
[U]//生成组合框,但不知在此处实现是否正确,不过我用此实现了带组合框的工具条,唯一不足的是无法得到焦点输入文字或者响应的选择消息
  [/U]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!");
[U]//生成编辑框[/U]
                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) ;
//[U]下面代码为CTBGenWnd类的实现代码[/U]
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)() [U]//此子函数的代码该如何[/U]{
CMDIFrameWnd *pAcadFrame = acedGetAcadFrame();
   CAcModuleResourceOverride resOverride;
if(g_pAcToolBar != NULL)
{
CString cs;
g_pAcToolBar->m_editbox.GetWindowText(cs);
acutPrintf("the test is %s",cs);
}
return;
}
回复

使用道具 举报

2

主题

33

帖子

1

银币

初来乍到

Rank: 1

铜币
41
发表于 2003-9-30 11:09:00 | 显示全部楼层
能接到消息吗?CTBGenWnd是怎么一回事情
回复

使用道具 举报

2

主题

33

帖子

1

银币

初来乍到

Rank: 1

铜币
41
发表于 2003-10-8 17:45:00 | 显示全部楼层
非停泊时可以得到
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-4 11:40 , Processed in 0.144888 second(s), 58 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表