MFC小笔记:滑动条与编辑框 | 迟思堂工作室
A-A+

MFC小笔记:滑动条与编辑框

2014-08-30 20:54 Windows程序 暂无评论 阅读 33,699 次

需求:
有一个滑动条(IDC_SLIDER1)和一个编辑框(IDC_EDIT1),当滑动条变化时,数值在编辑框中同时显示。于是在这里写了一下笔记。

添加NM_CUSTOMDRAW响应事件,代码如下:

void CCameraDlg::OnCustomdrawSliderShutter(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);
// TODO: Add your control notification handler code here
*pResult = 0;

CSliderCtrl *pSlidCtrl=(CSliderCtrl*)GetDlgItem(IDC_SLIDER1);
CString strTemp;
strTemp.Format("%d", pSlidCtrl->GetPos());
SetDlgItemText(IDC_EDIT1, strTemp.GetBuffer());
}

添加NM_RELEASEDCAPTURE响应事件,代码如下:
void CCameraDlg::OnReleasedcaptureSlider1(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: Add your control notification handler code here
*pResult = 0;

CString strTemp;
GetDlgItemText(IDC_EDIT1, strTemp);
AfxMessageBox(strTemp);
}

响应编辑框的回车事件:

在父窗体中PreTranslateMessage函数中处理,示例:


BOOL CMyDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if ( pMsg->message == WM_KEYDOWN )
{
switch (pMsg->wParam)
{
case VK_RETURN: //回车
{
// 方法1
#if 0
CWnd* pWnd;
pWnd = GetDlgItem(IDC_EDIT1);
if (pWnd->GetSafeHwnd() == pMsg->hwnd)
{
// todo
}
#endif
// 方法2
UINT nID = this->GetFocus()->GetDlgCtrlID();
if (nID == IDC_EDIT1)
{
// todo
}
if (nID == IDC_EDIT2)
{
// todo
}
}
return TRUE;

case VK_ESCAPE: //ESC

return TRUE;
}
}

return __super::PreTranslateMessage(pMsg);
}



如果本文对阁下有帮助,不妨赞助笔者以输出更多好文章,谢谢!
donate



标签:

给我留言