关于编辑框初始化

johnlove9527 2011-03-08 09:39:33
请问,我建立基于对话框程序,界面中有编辑框控件,为什么我运行后,初始化显示的是我获取的当前时间。但是我没有赋值过去啊,求解惑。
...全文
783 43 打赏 收藏 转发到动态 举报
写回复
用AI写文章
43 条回复
切换为时间正序
请发表友善的回复…
发表回复
johnlove9527 2011-04-09
  • 打赏
  • 举报
回复
[Quote=引用 42 楼 schlafenhamster 的回复:]
在你代码上,改成我给你的就行了,别的没动。应该就是这里的问题。
[/Quote]

恩,我用了是可以了,当然17方法也可以,不过这个函数sscanf用的很多啊,而且很好用。。不知道其他用的人出过这个问题没。结贴了
schlafenhamster 2011-03-17
  • 打赏
  • 举报
回复
在你代码上,改成我给你的就行了,别的没动。应该就是这里的问题。
johnlove9527 2011-03-17
  • 打赏
  • 举报
回复
[Quote=引用 40 楼 schlafenhamster 的回复:]
//毛病找到了:
m_timetest3=m_timetest.Left(4);
m_timetest4=m_timetest.Mid(5,2);
m_timetest5=m_timetest.Right(2);
// sscanf((LPSTR)(LPCSTR)m_timetest, "%s-%s-%s", m_timetest3, m_timetest4, m_timetest5);……
[/Quote]

就是这个sscanf函数的问题?但是我按照前几楼的说法注释了,还是有这个问题。。
schlafenhamster 2011-03-16
  • 打赏
  • 举报
回复
//毛病找到了:
m_timetest3=m_timetest.Left(4);
m_timetest4=m_timetest.Mid(5,2);
m_timetest5=m_timetest.Right(2);
// sscanf((LPSTR)(LPCSTR)m_timetest, "%s-%s-%s", m_timetest3, m_timetest4, m_timetest5);
m_timetest6=m_timetest2.Left(2);
m_timetest7=m_timetest2.Mid(3,2);
m_timetest8=m_timetest2.Right(2);
// sscanf((LPSTR)(LPCSTR)m_timetest2, "%s:%s:%s", m_timetest6, m_timetest7, m_timetest8);
//
sscanf((LPSTR)(LPCSTR)m_timetest, "%s-%s-%s", m_timetest3, m_timetest4, m_timetest5);
这句不但没起作用,可能把内存搞乱了。
johnlove9527 2011-03-15
  • 打赏
  • 举报
回复
[Quote=引用 34 楼 xianglitian 的回复:]
引用 20 楼 johnlove9527 的回复:

引用 18 楼 xianglitian 的回复:
你void CLfWithHelpDlg::OnTimer(UINT nIDEvent)里
sscanf(m_timetest, "%s-%s-%s", m_timetest3, m_timetest4, m_timetest5);
sscanf(m_timetest2, "%s:%s……
[/Quote]

我加上去了发现还是初始化错误啊。还是获取当前时间赋值给了编辑框。
schlafenhamster 2011-03-15
  • 打赏
  • 举报
回复
或者:
void CPropPg4::OnBtnBir()
{
// TODO: Add your control notification handler code here
// CAdviceDlg addlg;
// addlg.DoModal();
//
m_pAddlg=new CAdviceDlg;
m_pAddlg->Create(IDD_DLG_ADVICE);
m_pAddlg->ShowWindow(SW_SHOW);
}
// 你那样是不对的,原因难查。
schlafenhamster 2011-03-15
  • 打赏
  • 举报
回复
试试:
void CPropPg4::OnBtnBir()
{
// TODO: Add your control notification handler code here
CAdviceDlg addlg;

addlg.DoModal();
}
johnlove9527 2011-03-15
  • 打赏
  • 举报
回复
[Quote=引用 36 楼 schlafenhamster 的回复:]
打开“resource。h”看看!
[/Quote]

那个同一对话框内资源ID号都不一样,而不同对话框有一样的,但是没有消息响应啊,那应该无所谓的。
schlafenhamster 2011-03-15
  • 打赏
  • 举报
回复
打开“resource。h”看看!
向立天 2011-03-11
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 johnlove9527 的回复:]

引用 18 楼 xianglitian 的回复:
你void CLfWithHelpDlg::OnTimer(UINT nIDEvent)里
sscanf(m_timetest, "%s-%s-%s", m_timetest3, m_timetest4, m_timetest5);
sscanf(m_timetest2, "%s:%s:%:", m_timetest6, m_timetes……
[/Quote]
这里少了一个s你没注意么?
sscanf这个有可能会破坏内存数据导致位置错误
guocherish 2011-03-11
  • 打赏
  • 举报
回复
加上那个s就可以了
guocherish 2011-03-11
  • 打赏
  • 举报
回复
第2句里m_timetest8对应的转化少1一个s
sscanf(m_timetest, "%s-%s-%s", m_timetest3, m_timetest4, m_timetest5);

sscanf(m_timetest2, "%s:%s:%s:", m_timetest6, m_timetest7, m_timetest8);

[Quote=引用 20 楼 johnlove9527 的回复:]
引用 18 楼 xianglitian 的回复:
你void CLfWithHelpDlg::OnTimer(UINT nIDEvent)里
sscanf(m_timetest, "%s-%s-%s", m_timetest3, m_timetest4, m_timetest5);
sscanf(m_timetest2, "%s:%s:%:", m_timetest6, m_timetest……
[/Quote]
johnlove9527 2011-03-10
  • 打赏
  • 举报
回复
[Quote=引用 30 楼 johnlove9527 的回复:]
引用 27 楼 afk_02 的回复:
我想我找到为什么了!!!!


void CTRANSDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CTRANSDlg)
DDX_Text(pDX, IDC_ET_DATAIN, m_datain);
DDX_……
[/Quote]

大家来继续讨论讨论啊。
johnlove9527 2011-03-09
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 afk_02 的回复:]
我想我找到为什么了!!!!


void CTRANSDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CTRANSDlg)
DDX_Text(pDX, IDC_ET_DATAIN, m_datain);
DDX_Text(pDX, IDC_ET_TRAN……
[/Quote]

饿,我检查了没发现变量有过赋值啊。。
野生大猫 2011-03-09
  • 打赏
  • 举报
回复
这里应该是你的相关内容.从这下手查吧 具体没找 今天下班了 明天找不到我再帮你找啊
野生大猫 2011-03-09
  • 打赏
  • 举报
回复
我想我找到为什么了!!!!


void CTRANSDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CTRANSDlg)
DDX_Text(pDX, IDC_ET_DATAIN, m_datain);
DDX_Text(pDX, IDC_ET_TRANSHOW, m_transhow);
DDX_Text(pDX, IDC_ET_TRANSHOW2, m_transhow2);
//}}AFX_DATA_MAP
}

检查下吧! 数据传中~
johnlove9527 2011-03-09
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 kxywnljz 的回复:]
MFC中添加运行时的静态时间在OnInitDialog中函数处添加如下代码:
SYSTEMTIME st;
CString strDate,strTime;
GetLocalTime(&st);
strDate.Format("%4d-%02d-%02d",st.wYear,st.wMonth,st.wDay);
strTime.Format("【%02d:%02d:%02d】"……
[/Quote]

那个我不是要动态输出时间。。。
johnlove9527 2011-03-09
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 afk_02 的回复:]
您的代码好多地方都可以简化......

您的问题我感觉有可能是变量误用导致!声明以后没有销毁或重置就拿过去用了
[/Quote]

关于简化,我也是本着不错误再简化的原则,呵呵尽量先完成再回头修改。
还有变量,什么叫重置?初始化还要重置?销毁?求具体解惑。
野生大猫 2011-03-09
  • 打赏
  • 举报
回复
您的代码好多地方都可以简化......

您的问题我感觉有可能是变量误用导致!声明以后没有销毁或重置就拿过去用了
kxywnljz 2011-03-09
  • 打赏
  • 举报
回复
MFC中添加运行时的静态时间在OnInitDialog中函数处添加如下代码:
SYSTEMTIME st;
CString strDate,strTime;
GetLocalTime(&st);
strDate.Format("%4d-%02d-%02d",st.wYear,st.wMonth,st.wDay);
strTime.Format("【%02d:%02d:%02d】",st.wHour,st.wMinute,st.wSecond);
//将时间显示在static text中
GetDlgItem(IDC_STATIC_TIME)->SetWindowText(strDate + strTime);
//定时开始
SetTimer(1, 1000, 0);
************************************************************************************


如果要放在编辑框中显示实时动态时间,按以下操作:


在你的对话框上放置一个Edit控件,要有一定的长度便于显示。

给编辑框关联一个控件变量:CEdit m_Edit1;

在OnInitDialog中添加如下代码:

{{{{{
CString strTime;
CTime tm;
tm=CTime::GetCurrentTime();//获得系统时间
strTime=tm.Format("%y年%m月%d日 %X");//格式化系统时间
m_Edit1.SetWindowText(strTime);//初始化编辑框的显示
}}}}}}}可以不加,也行

SetTimer(1,1000,NULL);//启动定时器

然后给对话框添加WM_TIMER消息处理函数,在消息处理函数中添加如下代码:

CString strTime;
CTime tm;
tm=CTime::GetCurrentTime();//获得系统时间
strTime=tm.Format("%y年%m月%d日 %X");//格式化系统时间
m_Edit1.SetWindowText(strTime);//显示时间的渐变

OK,一定行了!!!
加载更多回复(22)

16,472

社区成员

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

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

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