C++如何实现显示输入焦点
答案:2 悬赏:60
解决时间 2021-03-14 01:10
- 提问者网友:写不出迷人情诗
- 2021-03-13 17:38
就是点击某处可以出现可输入区域,类似于excel的效果,点击某处就能输入字符,并且可以保持。
最佳答案
- 二级知识专家网友:狙击你的心
- 2021-03-13 18:27
1、这是在讨论MFC吗?
2、通过在继承自CWnd或者CFrameWnd的类中重写以下两个函数可以达到效果
afx_msg void OnSetFocus(CWnd* pOldWnd);
afx_msg void OnKillFocus(CWnd* pNewWnd);注意,它们是一个windows消息,应该放到消息循环中
BEGIN_MESSAGE_MAP(MainFrame,CFrameWnd)//用CFrameWnd举例
ON_WM_SETFOCUS()
ON_WM_KILLFOCUS()
END_MESSAGE_MAP()3、实现如下:里面的参数是摘自我自己的一个程序的,按需自行修改。
void MainFrame::OnSetFocus(CWnd* pOldWnd)
{
CreateSolidCaret(2,m_nCharSize);//设置输入光标的大小
SetCaretPos(CPoint(m_nCaretPos.x+3,m_nCaretPos.y+3));//设置输入光标的位置
ShowCaret();
}
void MainFrame::OnKillFocus(CWnd* pNewWnd)
{
HideCaret();
m_nCaretPos = GetCaretPos();//保存输入光标的位置
::DestroyCaret();
}
2、通过在继承自CWnd或者CFrameWnd的类中重写以下两个函数可以达到效果
afx_msg void OnSetFocus(CWnd* pOldWnd);
afx_msg void OnKillFocus(CWnd* pNewWnd);注意,它们是一个windows消息,应该放到消息循环中
BEGIN_MESSAGE_MAP(MainFrame,CFrameWnd)//用CFrameWnd举例
ON_WM_SETFOCUS()
ON_WM_KILLFOCUS()
END_MESSAGE_MAP()3、实现如下:里面的参数是摘自我自己的一个程序的,按需自行修改。
void MainFrame::OnSetFocus(CWnd* pOldWnd)
{
CreateSolidCaret(2,m_nCharSize);//设置输入光标的大小
SetCaretPos(CPoint(m_nCaretPos.x+3,m_nCaretPos.y+3));//设置输入光标的位置
ShowCaret();
}
void MainFrame::OnKillFocus(CWnd* pNewWnd)
{
HideCaret();
m_nCaretPos = GetCaretPos();//保存输入光标的位置
::DestroyCaret();
}
全部回答
- 1楼网友:湫止没有不同
- 2021-03-13 18:53
请在cedit控件里,捕获en_setfocus和en_killfocus这两个消息,如果是en_setfocus就清除内容,如果是en_killfocus就代表失去焦点,可以显示你的信息了。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯