VC WM_CHAR消息的问题
作者:admin 来源:新浪爱问 日期:2008-04-22
1.请问在VC中如何在文本框中使用 WM_CHAR消息.在类向导里面 只有窗体有 WM_CHAR 但如果选文本框的话就没有这个消息了,请问应怎么做才对呢
(我买的书中的例子只介绍了这个消息,但没有说明怎么在窗体以外的控件上使用的方法.).
2.另外.在VC中怎么把输入的内容变更呢.
比如如果我输入A就变成B,如果B就变成C...
如果是在VB中的话只要在KeyPress事件里写上,keyascii=keyascii 1就可以的.
但我试验在VC中写上nChar ;确没有实现,请问如果是在VC中的话应怎么样才能改变输入的内容呢.
不过在回答时最好说的细点,而不要只说..用XXX消息就可以实现.现在初学C 说的太简单的话,实在是不易弄明白的~先谢谢了.
问题补充:
请问沉沦学长:
首先从文本框派生一个类,如:CMyEdit.
这步应怎么做呢.?
另外.
//{{AFX_MSG_MAP(CMyEdit)
ON_WM_CHAR() //此句为WM_CHAR消息映射
//}}AFX_MSG_MAP
这样的代码//{{AFX_MSG_MAP(CMyEdit)如果不写可以吗?记得//应是注释的吧 :)
电脑问题网给出的最佳答案
1.程序分三步。首先从文本框派生一个类,如:CMyEdit.
(1).添加函数声明。在头文件中
protected:
//{{AFX_MSG(CMyEdit)
afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags); //此句为WM_CHAR消息的原型
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
(2).添加消息映射。在实现文件中。BEGIN_MESSAGE_MAP,END_MESSAGE_MAP宏之间添加。
BEGIN_MESSAGE_MAP(CMyEdit,CE)
//{{AFX_MSG_MAP(CMyEdit)
ON_WM_CHAR() //此句为WM_CHAR消息映射
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
(3).写WM_CHAR的实现代码。
void CMyEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
//..... Add your code here
CEdit::OnChar(nChar,nRepCnt,nFlags);
}
2.既然你提到WM_CHAR消息。我就用WM_CHAR消息实现吧。假设CMyView有一个m_pEdit的Edit控件
CString szText; //保存你要显示的数据
void CMyView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
UINT nTmp = nChar 1;//字符 1,也可以是其它的算法
szText = (char)nTmp;//保存每次通过特定算法取得的值
m_pEdit->SetWindowText(szText);//在Edit控件里显示数据
CView::OnChar(nChar,nRepCnt,nFlags);
}
说得并不是很简洁,呵呵~~有不明白的地方可以发消息给我。
其他回答
http;//www.szhao123.com.cn
http;//www.szhao123.com.cn
http;//www.szhao123.com.cn
http;//www.szhao123.com.cn
http;//www.szhao123.com.cn
http;//www.szhao123.com.cn