注册 登录
编程论坛 VC++/MFC

求助 mfc创建一个位图插入符不显示

拽跟s 发布于 2012-07-05 20:16, 1682 次点击

int CTestTextView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    if (CView::OnCreate(lpCreateStruct) == -1)
        return -1;
   
    // TODO: Add your specialized creation code here
    CClientDC dc(this);
    TEXTMETRIC tm;
    dc.GetTextMetrics(&tm);
 
 //   CreateSolidCaret(tm.tmAveCharWidth/3,tm.tmHeight);

    m_bitmap.LoadBitmap(IDB_BITMAP3);
   // CreateCaret(m_bitmap);我照书抄的 本来是这样写的。但是怎么设置大小呢。  当时以为没显示, 最后我眼尖才发现的确显示出来了 就一个小点 跟书上的结果不一样
        所以我用api的函数有个大小 我设置了一下发现只是一个黑块。 请问大师们那里弄错了?  谢谢了!
    ::CreateCaret(m_hWnd,m_bitmap,19,19);
    ShowCaret();

    return 0;
}
4 回复
#2
hellovfp2012-07-06 12:25
你可以试试这个:

::CreateCaret(m_hWnd, LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_BITMAP3)), 12, 20);
::SetCaretPos(10, 30);
::ShowCaret(m_hWnd);
#3
拽跟s2012-07-06 17:19
谢谢你

 还有就是那为什么我照书上抄 他就可以 那我显示不出来呢?
#4
hellovfp2012-07-07 12:00
如果显示不出来,多半是你的rc资源文件没有进入编译,
所以 LoadBitmap调用返回的始终是NULL值,而 CreateCaret 第二个参数如果是NULL的话,表示你不使用位图资源显示光标,
所以最后的结果就是你看到的:只显示黑块光标。
#5
拽跟s2012-07-07 16:29
太谢谢大师啦 。。应该就是这个问题 我写api的时候rc文件都要自己手动写。vc啥都不做。。

 谢谢 非常感谢
1