Codejie's C++ Space

Using C++

LingosHook:Lingoes生词本第十六版


    LingosHook第十六版(v1.1.002)功能上没有啥变化,都是小打小闹的修改而已,这里可以下载
    版本主要修改如下:
        1. Tray菜单中的'Run Lingoes'项在Lingoes启动的情况下将变为灰色,不能点击;
                Lingoes禁止多实例运行的,所以点了也没用,索性就不让点好了。还是LingosHook好,运行几个都行,嘿嘿。。。不知道各位测试过没有,如果运行多个LingosHook,在取词是会有什么结果?我不说,你们猜去吧,反正第一次无意这样做时,吓了一跳,感觉很神。。。不是我神,API神啊。。

        2. 修正点击HTML窗口导致焦点丢失的问题;
                前面有同学报告说‘左侧Index窗口中,上下方向键失效’的问题。这个问题我是知道的,是由于wxActivex在获得焦点后,每次刷新HTML数据时,都自动获得焦点,导致Index窗口失去焦点,无法使用方向键;这个问题还一样出现在‘Daily Memory’的输入框中,直接导致输入框的快捷方式无法使用,这个功能可是我最喜欢的一个啊。。。于是发了狠心修正,无奈能力不够,wxActiveX怎么改都不行,最后只好发扬‘打不过还躲不过’的精神--为了防止其抢焦点,在相应控件获得焦点是时,直接将wxActiveX来个Disable,绝吧。。。但不让人查看HTML页面又有点‘过分’,于是在鼠标移开,或者人为使控件丢失焦点时(就是鼠标点击别的控件了。。),再将其Enable下。。。原理很‘无聊’,很简单的。。。部分相关代码如下,真的很简单的。。。

void CLHListBox::OnSetFocus(wxFocusEvent &event)
{
    wxCommandEvent ev(wxEVT_COMMAND_LH_LISTBOX_FOCUS,  GetId());
    ev.SetInt(
1);
    GetEventHandler()
->ProcessEvent(ev);
    
event.Skip();
}


void CLHListBox::OnKillFocus(wxFocusEvent &event)
{
    wxCommandEvent ev(wxEVT_COMMAND_LH_LISTBOX_FOCUS,  GetId());
    ev.SetInt(
0);
    GetEventHandler()
->ProcessEvent(ev);
    
event.Skip();
}


void CLHListBox::OnMouseLeave(wxMouseEvent &event)
{
    wxCommandEvent ev(wxEVT_COMMAND_LH_LISTBOX_FOCUS,  GetId());
    ev.SetInt(
0);

    GetEventHandler()
->ProcessEvent(ev);
    
event.Skip();
}


void LingosHookFrame::OnIndexFocus(wxCommandEvent& event)
{
    
if(event.GetInt() == 1)
        m_winHTML
->Enable(false);
    
else
        m_winHTML
->Enable(true);
}

    是不是一只眼就能看懂。。。LingosHook全部代码在这里


<---绿色分割线--->
   尝试做LingosHook绿色版,失败了。。。请高人指点。。。

posted on 2010-07-19 20:24 codejie 阅读(1674) 评论(2)  编辑 收藏 引用 所属分类: C++轮子精神LingosHook

评论

# re: LingosHook:Lingoes生词本第十六版 2010-07-20 02:22 王者

围观群众  回复  更多评论   

# re: LingosHook:Lingoes生词本第十六版 2010-07-20 17:41 codejie

@王者
围观的敢再多点不。。。。  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


公告

Using C++

导航

统计

留言簿(73)

随笔分类(513)

积分与排名

最新评论

阅读排行榜

评论排行榜