动态生成的一个CEdit,如何响应它的键盘事件?

txwm 2003-08-21 03:25:44
我在View里,当鼠标点击一处时动态生成一个CEdit控件用于写入文字,代码如下:
m_pTextEdit = new CEdit;
RECT rect = { point.x - 4, point.y - 10, point.x + 100, point.y + 50 };
m_pTextEdit->Create( WS_CHILD | WS_VISIBLE | WS_BORDER | ES_MULTILINE |ES_WANTRETURN | ES_AUTOHSCROLL | ES_AUTOVSCROLL , rect, this, 1001 );
m_pTextEdit->SetFocus();
但是我想得到此时的onChar\onKeyDown事件,但是这些都只在view中响应,那么我该如何得到CEdit中的键盘事件了??
...全文
127 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhouyong0371 2003-08-22
  • 打赏
  • 举报
回复
可以得到EN_CHANGE消息

afx_msg void OnChangeMyEdit();

...

#define IDC_MYEDIT 1001

...

ON_EN_CHANGE(IDC_MYEDIT, OnChangeMyEdit)

...

void CDynEditDlg::OnChangeMyEdit()
{
MessageBox("zhou");

}

如果你一定要WM_CHAR或WM_KEYDOWN

重载PreTranslateMessage(MSG *pMsg)
{
if(pMsg->hwnd==m_pTextEdit&&pMsg->message==WM_CHAR)
{
OnTextEdit(...);//响应你自己的函数
}
...
}

defector 2003-08-22
  • 打赏
  • 举报
回复
关于动态生成的控件,例如BUTTON,并且在单击它时完成一定的操作

对于多个需要响应的控件可以如下做
1: BEGIN_MESSAGE_MAP(ServerMonitorDialog, CDialog)
//加入下面这句
ON_CONTROL_RANGE(BN_CLICKED, WM_USER+51, WM_USER+60, OnButtonClicked)

END_MESSAGE_MAP()
2: 在 .h 文件中
:
//加入下面这句
afx_msg void OnButtonClicked(UINT nID );
DECLARE_MESSAGE_MAP()
3: 写动作函数的具体内容
void ServerMonitorDialog::OnButtonClicked(UINT nID)
{
//通过nID来区分是那个控件的动作
//例子如下
if(nID==(WM_USER+51))
:
if(nID==(WM_USER+52))
:
}


对于单个控件可以如下做
1: BEGIN_MESSAGE_MAP(ServerMonitorDialog, CDialog)
//加入下面这句
//如响应左键点击
ON_BN_CLICKED(WM_USER+51,OkButton)
END_MESSAGE_MAP()
2: 在 .h 文件中
:
//加入下面这句
afx_msg void OkButton();
DECLARE_MESSAGE_MAP()
3: 写动作函数的具体内容
void ServerMonitorDialog::OkButton()
{
:
}
zhouyong0371 2003-08-22
  • 打赏
  • 举报
回复
CEdit::Create
BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );

对nID添加消息响应函数
hydcumt 2003-08-22
  • 打赏
  • 举报
回复
你看是否变换一下:是否可以用EN_CHANGE来实现!
Anon 2003-08-22
  • 打赏
  • 举报
回复
我的做法
重载PreTranslateMessage(MSG *pMsg)
{
if(pMsg->hwnd==m_pTextEdit&&pMsg->message==WM_CHAR)
{
OnTextEdit(...);//响应你自己的函数
}
...
}
flinming 2003-08-22
  • 打赏
  • 举报
回复
edit是好像没有onKeyDown事件的

其实动态生成的控件加载事件,无非,那些函数申明全部都是自己写!

你可以用参考下,不是动态生成的控件那些事件生成要加几个地方,cpp头和h文件里
txwm 2003-08-22
  • 打赏
  • 举报
回复
up

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧