在按钮的消息响应函数中,实现设置或取消定时器,并设置按钮标题。代码如下:
void CDlgmfcDlg::OnInput()
{
// TODO: Add your control notification handler code here
static BOOL bChangeFlag=TRUE;
if (bChangeFlag)
{
SetTimer(1,500,NULL);;//设置定时器
bChangeFlag=bChangeFlag?FALSE:TRUE;
GetDlgItem(1001)->SetWindowText("停止输入");//设置按钮标题
}
else
{
GetDlgItem(1001)->SetWindowText("模拟输入");;//设置按钮标题
KillTimer(1);//取消定时器
bChangeFlag=bChangeFlag?FALSE:TRUE;
}
}
WM_TIMER消息响应函数,在函数中实现模拟按键操作。代码如下:
void CDlgmfcDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
static int count=0;
BYTE keyname[11]={72,69,76,76,79,32,87,79,82,76,68};
if (nIDEvent==1)
{
m_ctlEdit.SetFocus();
keybd_event(keyname[count],0,0,0);
keybd_event(keyname[count],0,KEYEVENTF_KEYUP,0);
count++;
if (count==12)
{
m_ctlEdit.SetWindowText("");
UpdateData(FALSE);
count=0;
}
}
CDialog::OnTimer(nIDEvent);
}
keybd_event函数:
The keybd_event function synthesizes a keystroke. The system can use such a synthesized keystroke to generate a WM_KEYUP or WM_KEYDOWN message. The keyboard driver's interrupt handler calls the keybd_event function.
Windows NT: This function has been superseded. Use SendInput instead.
VOID keybd_event(
BYTE bVk, // virtual-key code
BYTE bScan, // hardware scan code
DWORD dwFlags, // flags specifying various function options
DWORD dwExtraInfo // additional data associated with keystroke
);
已经有(1)位网友发表了评论,你也评一评吧!
原创文章如转载,请注明:转载自Eddy Blog
原文地址:http://www.rrgod.com/program/527.html 欢迎订阅Eddy Blog。
纯属支持博主!VC MFC全部不懂