BOOL CPeriodCheckDlg::PreTranslateMessage(MSG* pMsg)
{if (pMsg->message == WM_LBUTTONDOWN)
{
if (pMsg->hwnd == m_editTime.m_hWnd && GetFocus() != (CWnd*)&m_editTime)
{
static int nStart = 0, nEnd = 0;
CString time;
m_editTime.GetWindowText(time);
CString hour = time.Left(2);
CString minute = time.Mid(3,2);
CString second = time.Right(2);
m_editTime.GetSel(nStart,nEnd);//为什么获取不了开始位置,一直是0!!!!!
m_editTime.SetFocus();
m_editTime.SetSel(nStart, nStart+2);
return TRUE;
}
}
return CPAIBaseDialog::PreTranslateMessage(pMsg);
}
解决方案 »
- mfc 单文档 odbc数据库更新问题
- 我有两个重名的Dll(大小写不同,功能不同),但我两个都要用到,能否在程序中强制在不同时段加载不同的Dll
- SDI窗体,怎么让边框高亮度。。。
- 为什么COleDateTime 格式时间 转 struct tm 结构时间会增加一个月 ?
- 帮帮忙,一个奇怪的问题。关于OnDraw()函数
- 关于语音广播的问题,会的就进来.....
- CGridCtrl::SetFocusCell(int nRow, int nCol)的问题。
- MFC编辑框不能显示特殊字符,如何解决?
- 送分行动:打印的简单问题
- 有时打开网页时出现WORD格式文档,如何实何的?
- JS调用MFC生成的activeX(OCX)控件
- vc安装部署生成一个软件test.exe, 怎样使它拷贝后不能使用
你有没有select?没有的话都为0
先设置焦点,在获取
if (pMsg->hwnd == m_editTime.m_hWnd /*&& GetFocus() != (CWnd*)&m_editTime*/)
{
int nStart = 0, nEnd = 0;
CString time;
m_editTime.GetWindowText(time);
CString hour = time.Left(2);
CString minute = time.Mid(3,2);
CString second = time.Right(2);
m_editTime.GetSel(nStart,nEnd);//为什么获取不了开始位置,一直是0!!!!!
m_editTime.SetFocus();
m_editTime.SetSel(nStart, nStart+2);
// return TRUE;
}
break;
初始化时:
m_editTime.SetWindowText("12:02:08");
m_editTime.SetSel(0,1);
可以看到'12'是兰色的
初始化时:
m_editTime.SetWindowText("12:02:08");
m_editTime.SetSel(3,5);
int s;
int e;
m_editTime.GetSel(s,e);
afxDump << s << ";" << e << "\n";
// 3;5
直接用俩常量代替不得了?何必setsel
m_editTime.SetSel(3,5);
int s;
int e;
m_editTime.GetSel(s,e);
afxDump << s << ";" << e << "\n";
// 3;5
只是想说明2点。
1.不必多行
2.只有先SetSel才能 GetSel多种操作会改变selection,如鼠标点击。从而使GetSel错误