首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 复选下拉框在vc2005中无法显示 [已结帖,结帖人:_microsoft]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • _microsoft
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2008-12-04 20:42:19 楼主
    原来在vc6下编译的能正常用的下拉复选框,现在挪到vc2005下面不能用了,不显示复选框和对勾,但是还是能选中,能相应鼠标事件。下面是部分代码,请大家帮忙看看是什么问题。还有大幅代码贴不上来,需要的我继续贴。
    void CCheckCmbTreeBox::DrawItem( LPDRAWITEMSTRUCT lpDrawItemStruct )
    {
    //## GET CDC
    CDC* pDC = CDC::FromHandle(lpDrawItemStruct->hDC);

    //## FRAME
    CRect rc = lpDrawItemStruct->rcItem;
    pDC->DrawEdge( rc, EDGE_SUNKEN, BF_TOP | BF_LEFT | BF_BOTTOM | BF_RIGHT );

    //## DRAW white BK
    rc.DeflateRect(2, 2);
    static CBrush brWindow(GetSysColor(COLOR_WINDOW));
    static CBrush brBtnFace(GetSysColor(COLOR_BTNFACE));
    static CBrush brBtnShadow(GetSysColor(COLOR_BTNSHADOW));
    if (IsWindowEnabled())
    pDC->FillRect(&rc, &brWindow);
    else pDC->FillRect(&rc, &brBtnFace);

    //## COMPUTE Button Rect
    CRect rcButton = rc;
    rcButton.left = rcButton.right - DROP_BUTTON_WIDTH;
    if (rcButton.left < rc.left) rcButton.left = rc.left;

    //## COMPUTE Caption Rect
    CRect rcCaption = rc;
    rcCaption.right = rcButton.left - 1;
    if (rcCaption.right < rcCaption.left) rcCaption.right = rcCaption.left;

    //## FOCUS
    rcCaption.DeflateRect(1, 1);
    if (lpDrawItemStruct->itemState & ODS_FOCUS) pDC->DrawFocusRect(rcCaption);
    rcCaption.DeflateRect(2, 1);

    //## GET Caption
    CString strText;
    GetWindowText(strText);

    //## DRAW Caption
    pDC->SetBkColor( (IsWindowEnabled()) ? GetSysColor(COLOR_WINDOW) : GetSysColor(COLOR_BTNFACE) );
    COLORREF crOldColor = SetTextColor(lpDrawItemStruct->hDC, RGB(0, 0, 0));
    DrawText(lpDrawItemStruct->hDC, strText, strText.GetLength(), &rcCaption, DT_SINGLELINE | DT_VCENTER );
    SetTextColor(lpDrawItemStruct->hDC, crOldColor);

    //## GET Button Style
    UINT uStyle = DFCS_BUTTONPUSH;
    if (lpDrawItemStruct->itemState & ODS_SELECTED) uStyle |= DFCS_PUSHED;

    //## DRAW Button
    if (lpDrawItemStruct->itemState & ODS_SELECTED)
    {
    pDC->FrameRect(rcButton, &brBtnShadow);
    rcButton.DeflateRect(1, 1);
    pDC->FillRect(&rcButton, &brBtnFace);
    rcButton.DeflateRect(1, 3, 0, 0);
    }
    else
    {
    pDC->FrameRect(rcButton, &brBtnFace);
    rcButton.DeflateRect(1, 1, 0, 0);
    DrawFrameControl(lpDrawItemStruct->hDC, &rcButton, DFC_BUTTON, uStyle);
    }

    //## DRAW Arrow
    static CPen penBlack(PS_SOLID, 1, RGB(0,0, 0));
    static CPen penBtnShadow(PS_SOLID, 1, GetSysColor(COLOR_BTNSHADOW));//
    CPen* ppenOld;
    if (IsWindowEnabled())
    ppenOld = pDC->SelectObject(&penBlack);
    else ppenOld = pDC->SelectObject(&penBtnShadow);
    for(long i=0; i <4; i++)
    {
    pDC->MoveTo( rcButton.left + 3 + i, rcButton.top + rcButton.Height()/2 - 2 + i);
    pDC->LineTo( rcButton.left + 3 + 7 - i, rcButton.top + rcButton.Height()/2 - 2 + i);
    if (!IsWindowEnabled())
    pDC->SetPixel(rcButton.left + 3 + 7 - i, rcButton.top + rcButton.Height()/2 - 2 + i + 1, 0xFFFFFF);
    }
    pDC->SelectObject(ppenOld);

    }
    50  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • _microsoft
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-12-04 21:02:201楼 得分:0
    描述的不清晰,应该是带复选框的treectrl,复选框不能显示。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • _microsoft
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-12-04 21:17:422楼 得分:0
    m_pwndTree->CreateEx( WS_EX_LEFT | WS_EX_LTRREADING | WS_EX_RIGHTSCROLLBAR | WS_EX_TOOLWINDOW,
    WS_CHILD | WS_BORDER |
    WS_CLIPSIBLINGS | WS_OVERLAPPED |
    TVS_HASBUTTONS | TVS_HASLINES  | TVS_CHECKBOXES| TVS_DISABLEDRAGDROP |
    TVS_SHOWSELALWAYS | TVS_FULLROWSELECT,
    CRect(0, 0, 0, 0),
    GetDesktopWindow(),
    0x3E8);//
    TVS_CHECKBOXES去掉是什么都没有,加上的话就是空白,应该有个方框的。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hityct1
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-12-04 21:27:523楼 得分:20

    1)设置owner draw风格了?
    2)此段代码执行了?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • _microsoft
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-12-04 23:33:574楼 得分:0
    引用 3 楼 hityct1 的回复:

    1)设置owner draw风格了?
    2)此段代码执行了?

    1 设了
    2 执行了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Simon_Ghost
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-12-06 16:23:305楼 得分:0
    搜搜搜,把这个帖子搜出来了。。。。。顶一下。。。呼唤明白的大人出来讲解。。。。我同问 。。。。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • _microsoft
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-12-06 16:33:246楼 得分:0
    楼上的,原来是你啊!找到办法告诉我啊,下周一我们要演示,顾不上这个,你也想象办法。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Simon_Ghost
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-12-07 00:16:257楼 得分:30
    嗯。。。现在就先找个VC6吧。。。。我改了改参数,出现了闪烁不定的复选框。。还是不行。。。VC6.0的语法不大熟。。。。不敢乱写代码。。。我新人菜鸟。。。要学的还很多。。。以后得多向你请教。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • _microsoft
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-12-07 19:42:428楼 得分:0
    别这么谦虚。vc6的语法没什么特别的。代码随便写,你那份代码不要在svn提交就行。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • e_sharp
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-12-07 20:56:089楼 得分:0
    UP
    修改 删除 举报 引用 回复