如何操作控件的DDX方法

No9 2000-05-28 05:58:00
我最近写了一个程序,需要直接得到编辑框中的浮点数的数值,却发现原来的DDX方法不行,当用户输入未完成时,(比如要输入‘2.0’,已经输入‘2.’时,更新后自动变成了‘2’),于是我想要自行控制控件的DDX方法,我想派生一个新类,去重载DDX方法,不知道该如何处理,请指教?
...全文
201 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
No9 2000-06-28
  • 打赏
  • 举报
回复
谢谢 jiangsheng 的指点,您的意思我明白了!
蒋晟 2000-06-20
  • 打赏
  • 举报
回复
See TN026 in MSDN.
No9 2000-06-19
  • 打赏
  • 举报
回复
本人愚钝,直到目前还没有 jiangsheng 的意思,不知道是不是少了一部分文字/代码,再次烦请你解释一下,好吗?
谢谢!
蒋晟 2000-06-17
  • 打赏
  • 举报
回复
// 必须已经设置好10位的长度限制和number风格
void extern AFXAPI DDX_Text_DWORD(CDataExchange* pDX, UINT nIDC,DWORD& rDWord)
{
CString string,MaxString,ErrMsg;

pDX->m_pDlgWnd->GetDlgItem(nIDC)->GetWindowText(string);
while (string.GetLength() > 0) {
if (string.GetAt(0) == '0')
string=string.Right(string.GetLength() - 1);
else
break;
}
if (string.GetLength() > 10) {
string.Format("错误:输入的数字太长!\n长度不能大于%d!",10);
AfxMessageBox(string);
pDX->Fail();
return; // fail
}
if (string.GetLength() == 10) {
MaxString.Format("%u",ULONG_MAX);
if (string > MaxString) {
ErrMsg.Format("错误:输入的数字太大:%s!\n输入的数字不能大于%u!",string,ULONG_MAX);
AfxMessageBox(ErrMsg);
pDX->Fail();
return; // fail
}
}

// call the system's DDX_Text
DDX_Text(pDX,nIDC,rDWord);
}

void AFXAPI DDX_DateTimeCtrl(CDataExchange* pDX, UINT nIDC,COleDateTimeSpan& tmspn)
{
HWND hWndCtrl = pDX->PrepareCtrl(nIDC);
CDateTimeCtrl* pWnd = (CDateTimeCtrl*) CWnd::FromHandle(hWndCtrl);
if(!pWnd) return;
COleDateTime tmTemp,tmBase;

if(pDX->m_bSaveAndValidate){
pWnd->GetTime(tmTemp);
tmspn=tmTemp-tmBase;
}
else{
tmTemp=tmspn+tmBase;

if(::IsWindow(pWnd->m_hWnd))
pWnd->SetTime(tmTemp);
}
}
No9 2000-06-17
  • 打赏
  • 举报
回复
为什么还是没有人回答我呀,我好急呀......
No9 2000-06-07
  • 打赏
  • 举报
回复
噢!我还不知道该如何加分呢?
No9 2000-06-07
  • 打赏
  • 举报
回复
为什么我发表了多日,至今还是没人回应,我好伤心呀,好着急呀!
难道是太难吗?高手那么多,这么可能!
难道是分数太少吗?我现在加分求解!
还可能是......

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧