我建立了一个对话框应用程序,在OnInitDialog()里创建了光标:
         // 创建光标
bitmap.LoadBitmap(IDB_BITMAP_CURSOR);
CreateCaret(&bitmap);
在OnPaint()里改变光标位置并显示光标:
         // 设置光标位置
SetCaretPos( pointCur );
// 显示光标
ShowCaret();
光标正常显示。
此时,我加载一个文件选择对话框,再关闭这个对话框,光标不见了。怎么切换程序,光标都出现不了!
我的OnPaint()里每次进入都显示光标,并且我检查,光标的位置在对话框范围之内,但就是没有看到光标。
请问是什么原因啊?

解决方案 »

  1.   

    已经试过,我在OnPaint()里加上了SetFocus(),还是不行。
    请问怎么让对话框失去焦点时,caret仍然在闪动?
      

  2.   

    WM_ACTIVE
    OnActivate(nState...)
    {
        if( nState == WA_INACTIVE)
        {// 记录位置
        }
        else if( nState == WA_ACTIVE)
        {// 重新显示
        }
    }
      

  3.   

    WM_ACTIVATE 不是对话框的消息,是CWnd的消息。
    然后,我将过滤设为Window,但我打开文件对话框时,调试运行不能进入OnActive()函数.
      

  4.   

    我看到一个程序,当打开文件选择对话框时,不仅caret没有消失,还在不停地闪动。
    不知道该如何实现?