我在一开始 让 id为 (IDC_ShowPassWord)的 cedit 隐藏,不让显示
在我按某个键 一定时间后显示出来,现在我怎么 它业不显示,大侠帮忙看看代码如下BOOL CEnCryptDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
int temp(pMsg->wParam);
if(pMsg->message==WM_KEYDOWN || pMsg->message==WM_KEYUP || pMsg->message == WM_ACTIVATE)
{
if (pMsg->message==WM_KEYDOWN)
{
if (temp==83)
{
m_dwTimeStarted =0;
m_dwTimeStoped =0;
m_dwTimeStarted = GetTickCount();
}
}
if (pMsg->message==WM_KEYUP)
{
if(temp==83)
{
m_dwTimeStoped = GetTickCount();
if ((m_dwTimeStoped - m_dwTimeStarted) >=1000)
{
this->GetDlgItem(IDC_ShowPassWord)->ShowWindow(SW_SHOW);
this->SetDlgItemText(IDC_ShowPassWord,m_showpassword);
Invalidate();
}
}
} }
return CDialog::PreTranslateMessage(pMsg);
}但是我用 一个button 测试 却可以显示
void CEnCryptDlg::OnButton222()
{
// TODO: Add your control notification handler code here
this->GetDlgItem(IDC_ShowPassWord)->ShowWindow(SW_SHOW);
this->SetDlgItemText(IDC_ShowPassWord,m_showpassword);
}这是为什么?
在我按某个键 一定时间后显示出来,现在我怎么 它业不显示,大侠帮忙看看代码如下BOOL CEnCryptDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
int temp(pMsg->wParam);
if(pMsg->message==WM_KEYDOWN || pMsg->message==WM_KEYUP || pMsg->message == WM_ACTIVATE)
{
if (pMsg->message==WM_KEYDOWN)
{
if (temp==83)
{
m_dwTimeStarted =0;
m_dwTimeStoped =0;
m_dwTimeStarted = GetTickCount();
}
}
if (pMsg->message==WM_KEYUP)
{
if(temp==83)
{
m_dwTimeStoped = GetTickCount();
if ((m_dwTimeStoped - m_dwTimeStarted) >=1000)
{
this->GetDlgItem(IDC_ShowPassWord)->ShowWindow(SW_SHOW);
this->SetDlgItemText(IDC_ShowPassWord,m_showpassword);
Invalidate();
}
}
} }
return CDialog::PreTranslateMessage(pMsg);
}但是我用 一个button 测试 却可以显示
void CEnCryptDlg::OnButton222()
{
// TODO: Add your control notification handler code here
this->GetDlgItem(IDC_ShowPassWord)->ShowWindow(SW_SHOW);
this->SetDlgItemText(IDC_ShowPassWord,m_showpassword);
}这是为什么?
eg:BOOL CEnCryptDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
int temp(pMsg->wParam);if(pMsg->message==WM_KEYDOWN ¦ ¦ pMsg->message==WM_KEYUP ¦ ¦ pMsg->message == WM_ACTIVATE)
{
if (pMsg->message==WM_KEYDOWN)
{
if (temp==83)
{
m_dwTimeStarted =0;
m_dwTimeStoped =0;
m_dwTimeStarted = GetTickCount();
}
}if (pMsg->message==WM_KEYUP)
{
if(temp==83)
{
m_dwTimeStoped = GetTickCount();
if ((m_dwTimeStoped - m_dwTimeStarted) >=1000)
{
this->GetDlgItem(IDC_ShowPassWord)->ShowWindow(SW_SHOW);
this->SetDlgItemText(IDC_ShowPassWord,m_showpassword);
Invalidate();
}
}
}}
return CDialog::PreTranslateMessage(pMsg);
}但是我用 一个button 测试 却可以显示
void CEnCryptDlg::OnButton222()
{
// TODO: Add your control notification handler code here
this->GetDlgItem(IDC_ShowPassWord)->ShowWindow(SW_SHOW);
this->SetDlgItemText(IDC_ShowPassWord,m_showpassword);
}
BOOL CEnCryptDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
int temp(pMsg->wParam);
if(pMsg->message==WM_KEYDOWN || pMsg->message==WM_KEYUP || pMsg->message == WM_ACTIVATE) {
if (pMsg->message==WM_KEYDOWN)
{
if (temp==83)
{
m_dwTimeStarted =0;
m_dwTimeStoped =0;
m_dwTimeStarted = GetTickCount();
}
}
if (pMsg->message==WM_KEYUP)
{
if(temp==83)
{
m_dwTimeStoped = GetTickCount();
if ((m_dwTimeStoped - m_dwTimeStarted) >=1000)
{
this->GetDlgItem(IDC_ShowPassWord)->ShowWindow(SW_SHOW);
this->SetDlgItemText(IDC_ShowPassWord,m_showpassword);
Invalidate();
}
}
} }
return CDialog::PreTranslateMessage(pMsg);
}void CEnCryptDlg::OnButton222()
{
// TODO: Add your control notification handler code here
this->GetDlgItem(IDC_ShowPassWord)->ShowWindow(SW_SHOW);
this->SetDlgItemText(IDC_ShowPassWord,m_showpassword);
}
{
// TODO: Add your specialized code here and/or call the base class
int temp(pMsg->wParam);
if(pMsg->message==WM_KEYDOWN || pMsg->message==WM_KEYUP || pMsg->message == WM_ACTIVATE) {
if (pMsg->message==WM_KEYDOWN)
{
if (temp==83)
{
m_dwTimeStarted =0;
m_dwTimeStoped =0;
m_dwTimeStarted = GetTickCount();
}
}
if (pMsg->message==WM_KEYUP)
{
if(temp==83)
{
m_dwTimeStoped = GetTickCount();
if ((m_dwTimeStoped - m_dwTimeStarted) >=1000)
{
this->GetDlgItem(IDC_ShowPassWord)->ShowWindow(SW_SHOW);
this->SetDlgItemText(IDC_ShowPassWord,m_showpassword);
Invalidate();
}
}
} }
return CDialog::PreTranslateMessage(pMsg);
}void CEnCryptDlg::OnButton222()
{
// TODO: Add your control notification handler code here
this->GetDlgItem(IDC_ShowPassWord)->ShowWindow(SW_SHOW);
this->SetDlgItemText(IDC_ShowPassWord,m_showpassword);
}
将83改为VK_RETURN,然后按下Enter键1秒试试。
参考修改代码如下:BOOL CTestDlgDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class static BOOL bGetTickCount = TRUE;
int temp(pMsg->wParam);
if(pMsg->message==WM_KEYDOWN || pMsg->message==WM_KEYUP || pMsg->message == WM_ACTIVATE) {
if (pMsg->message==WM_KEYDOWN)
{
if (temp==83)
{
if(bGetTickCount)
{
m_dwTimeStarted =0;
m_dwTimeStoped =0;
m_dwTimeStarted = GetTickCount();
bGetTickCount=FALSE;
}
}
}
if (pMsg->message==WM_KEYUP)
{
if(temp==83)
{
m_dwTimeStoped = GetTickCount();
if ((m_dwTimeStoped - m_dwTimeStarted) >=1000)
{
this->GetDlgItem(IDC_ShowPassWord)->ShowWindow(SW_SHOW);
this->SetDlgItemText(IDC_ShowPassWord,m_showpassword);
}
bGetTickCount = TRUE;
}
} } return CDialog::PreTranslateMessage(pMsg);
}
判断键盘按下83对应的键超过1秒钟,上面代码应该可行。
不知83对应键盘上那个键,没有进行测试,楼主可否告知83对应的键?
在不停的变化,我用spy++看了下。