2007-5-16工作日志

 
今天解决的问题:
1, IE插件中的ToolBar上“添加”一个Combobox,并正确处理焦点和输入
     这里说的“添加”并不是真的添加,而是利用MoveWindow将Combobox移动
        到ToolBar上相应的位置。
     要实现这样的功能,必须完成以下步骤:
   <1>: Band类实现IInputObject的三个方法, UIActivateIO, HasFocusIO,                             TranslateAcceleratorIO.
            UIActivateIO是activate控件元素。这里我们SetFocus相应的控件,
             不是Combobox而是它内部的edit控件,下面会说如何获得edit的handle.
             HasFocusIO 询问band成员是否具有焦点,遍历所有的元素,与GetFocus比较、
             TranslateAcceleratorIO 处理相应的系统快捷键,这个由超类化Combobox的类
             处理即可。
      <2> 获得Combobox内部edit空间的handle
         COMBOBOXINFO cbi;
         cbi.cbSize = sizeof(COMBOBOXINFO);
         GetComboBoxInfo(m_hCombo, &cbi);
         m_hEdit = cbi.hwndItem;
2, ToolBar实现ToolTip功能
必须完成如下步骤:
1,创建ToolBar时指定 TBSTYLE_TOOLTIPS
2, 在ToolBar的parent窗口中添加一个消息处理,处理TTN_GETDISPINFO
代码如下:
     case TTN_GETDISPINFO:
          LPTOOLTIPTEXT lpttt;
          lpttt = (LPTOOLTIPTEXT)lParam;
          UINT_PTR idButton = lpttt->hdr.idFrom;//Button 的command id.
          switch(idButton)
          {
          case IDM_SEARCH:
               lpttt->lpszText = TEXT(" 最常用的书签" );
               break;
   }
3,就这么简单!
3, Info Band中打开一个网页(host a web control),正确处理输入,包括backspace
   必须完成如下步骤:
1,Band对象实现IOleControlSite, IOleClientSite
    最简单的实现即可。
2,将web控件“停靠”到band对象,即实现了上述两个接口的band对象
    注意不是控件的parent窗口,这个可以任意
即先获得web控件的IOleObject接口,然后调用:
m_pIOleObject->SetClientSite(this);//this 指针就是band对象的指针,它动态
转换成IOleObject*类型,因为我们的band已经实现了这个接口。 
3,Band对象的对应窗口,设置为web控件的parent窗口
即:实现GetWindow. (IOleWindow的方法)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值