当前位置: 首页 > Windows程序 > 正文

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

需求:
有一个滑动条(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);
}

本文固定链接: http://www.latelee.org/programming-under-windows/mfc-slider-edit.html

如无特别说明,迟思堂工作室文章均为原创,转载请注明: MFC小笔记:滑动条与编辑框 | 迟思堂工作室

目前暂无评论

发表评论

*

快捷键:Ctrl+Enter