条件是:比如说一个对话框中有100个CEdit框。我要在一个统一的地方PreTranslateMessage截获任何一个edit框有改变文本的消息?然后如何来判断有改变的edit框的id.谢谢。
解决方案 »
- 如何在VC++ 2010下用Listbox显示文件中的内容
- CArray<SOCKADDR_IN,SOCKADDR_IN> m_UserFrom;编译出错求教?
- 关于DLL函数调用问题
- 关于查找指定进程的问题,100分!
- 如何让对话框在96dip和120dpi保持一致?
- 请问如何在调试activex时注销activex,相信这个问题一定有很简单的办法,希望谁能教我一下!
- 关于Dao数据库表格的属性添加修改问题?
- new和delete的怪事
- ★ 高手快帮帮忙,如何在Service程序中访问另一台机器上的共享磁盘?详细内容见帖子里面的链接 ★
- 怎样从wav文件读取所需单词的语音?
- 如何加快文件列表的显示速度?
- 《com技术内幕》潘爱民 翻译的和 《COM技术内幕:微软组件对象模型》杨秀章 江英/译 那本书好?
BOOL CTTTDlg::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->hwnd == GetDlgItem(IDC_EDIT1)->m_hWnd)
{
int i=0;
// if(pMsg->message >= EN_CHANGE)
{
TRACE("%x\r\n",pMsg->message);
}
}
return CDialog::PreTranslateMessage(pMsg);
}
发现,当在文本框中输入文本时,对话框截获的是0x0101和0x0102消息,即WM_CHAR和WM_KEYDOWN。也就是说,文本框的消息EN_CHANGE对话框截获不到,它只能截获到有字符或者虚拟键输入。
通过pMsg->hwnd,你就可以得到当前编辑的文本框的句柄,从而可以得到该文本框的对象指针,进而得到你想要的文本框ID号。
由此看来,你只能通过WM_CHAR和WM_KEYDOWN消息来判断文本框中有字符变化,来做相应的处理了。