Visual C++ 项目开发全程实录 超市进销存管理系统 登陆模块问题
发表在C语言图书答疑 2012-02-20
是否精华
版块置顶:
BOOL CLogin::PreTranslateMessage(MSG* pMsg) 
{
// TODO: Add your specialized code here and/or call the base class
if(pMsg->message==WM_KEYDOWN && pMsg->wParam==13)
{
pMsg->wParam = 9;
}
if(pMsg->message == WM_LBUTTONDOWN)
{
CRect rect,rc;
m_OK.GetWindowRect(&rect);
m_Cancel.GetWindowRect(&rc);
CPoint point;
GetCursorPos(&point);
if(rect.PtInRect(point))
{
UpdateData(TRUE);
if(m_Name.IsEmpty() || m_PassWord.IsEmpty())
{
MessageBox("用户名或密码不能为空");
return FALSE;
}
m_Time++;
ADOConn m_AdoConn;
m_AdoConn.OnInitADOConn();
CString sql;
sql.Format("select * from CTXSYS.TB_USER where NAME='%s' and PWD='%s' and POPEDOM='1'",
m_Name,m_PassWord);
m_AdoConn.m_pRecordset = m_AdoConn.GetRecordSet((_bstr_t)sql);
if(!m_AdoConn.m_pRecordset->adoEOF)
{
m_UserName = m_Name;
CDialog::OnOK();
}
else
{
if(m_Time == 3)
{
MessageBox("密码3次不正确");
CDialog::OnCancel();
}
else
{
MessageBox("用户名或密码不正确");
m_Name = "";
m_PassWord = "";
UpdateData(FALSE);
}
}
m_AdoConn.ExitConnect();
}
if(rc.PtInRect(point))
{
CDialog::OnCancel();
}
}
return CDialog::PreTranslateMessage(pMsg);

视频里,登陆这个模块的内容好像没有说到呢,很多的代码我都不懂,特别是上面这个函数,可以解释下具体是什么意思吗?谢谢
我添加了 'PreTranslateMessage'这个成员函数,编译时提示 m_UserName 没有定义,怎么解决?我看原代码,也没看到有关于m_UserName 这个变量的定义,原代码编译也没有出现错误,是怎么回事?
分享到:
精彩评论 1
张小飞
学分:0 LV1
TA的每日心情
开心
2021-10-24 18:57:39
2012-02-20
沙发
读者你好!
m_UserName是一个全局变量,在这里用到了这个变量,所以应该通过“extern”关键字,在开始部分,引用这个全局变量。

PreTranslateMessage是消息在送给TranslateMessage函数之前被调用的,绝大多数本窗口的消息都要通过这里,当需要在MFC之前处理某些消息时,常常要在这里添加代码. MFC消息控制流最具特色的地方是CWnd类的虚拟函数PreTranslateMessage(),通过重载这个函数,可以改变MFC的消息控制流程,甚至可以作一个全新的控制流出来。
提前对一些消息进行响应。
首页上一页 1 下一页尾页 1 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照