【问题标题】:MFC's CTabCtrl::HitTest function returns "1" for any tab clickedMFC 的 CTabCtrl::HitTest 函数为单击的任何选项卡返回“1”
【发布时间】:2015-08-17 10:11:31
【问题描述】:

嗨(虽然问候语通常会被删除),

我正在使用 MFC 的 CTabCtrl 控件并尝试确定单击了哪个选项卡(稍后将其拖放)。我认为应该很容易 - 无论如何都会被 HitTest 函数卡住,该函数会为单击的任何选项卡返回“1”。

当我最近开始这个项目时,它实际上只是几行代码。提到的 HitTest 函数在 CHlavniOkno::CTdi::OnLButtonDown 函数的 Tdi.cpp 文件中使用(完整源代码在http://nestorovic.hyperlink.cz/cpp_mfc.zip):

afx_msg void CHlavniOkno::CTdi::OnLButtonDown(UINT flagy,CPoint bod){
    if (::DragDetect(m_hWnd,bod)){
        TCHITTESTINFO hti={bod};
        if (int idZalozky=HitTest(&hti)>=0)
            parametryTazeneZalozky=new TParametryTazeneZalozky(this,idZalozky);
    }
    CTabCtrl::OnLButtonDown(flagy,bod);
}

我肯定遗漏了一些微小的东西,几乎总是这样......

感谢您抽出时间查看问题。

托马斯

【问题讨论】:

    标签: c++ mfc hittest ctabctrl


    【解决方案1】:

    语句int idZalozky=HitTest(&hti)>=0idZalozky 设置为测试结果HitTest(&hti)>=0。作为布尔测试,这将始终返回 0 或 1。

    你可能想要:

    int idZalozky=HitTest(&hti);
    if (idZalozky>=0)
    {
    ...
    }
    

    【讨论】:

    • 哦,是的,你是对的!说这会是一件非常愚蠢的事情……! :-)))
    • 或者你可以选择 if ( ( int idZalozky = HitTest(&hti) ) >= 0)。我故意在运算符附近添加了空格。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多