CEdit在SetWindowText是报错遇到不适当的参数 - 小众知识

CEdit在SetWindowText是报错遇到不适当的参数

2013年01月27日 14:18:05 苏内容
  标签: CEdit/MFC
阅读:1863
void CMainFrame::OnTest()
{
        // TODO: 在此添加命令处理程序代码
        CPropertySheet sheet(_T("测试"),this);
        CFirstPage *m_firstPage = new CFirstPage;
        CScendPage *m_scendPage = new CScendPage;
        sheet.AddPage(m_firstPage);
        sheet.AddPage(m_scendPage);


        int m_firstOption;
        int m_scendOption;
        CString temp;


        m_firstOption = ::GetPrivateProfileInt(_T("Option"),_T("FirstOption"),0,_T(".\\option.ini"));
        m_scendOption = ::GetPrivateProfileInt(_T("Option"),_T("ScendOption"),0,_T(".\\option.ini"));


        temp.Format(_T("%d"),m_firstOption);
        
        m_firstPage->m_edit.SetWindowText(temp);


        sheet.DoModal();
        delete m_firstPage;
        delete m_scendPage;
}



程序总是在 m_firstPage->m_edit.SetWindowText(temp); 产生中断,是SetWindowText给的参数不对吗?
那应该怎么将一个整形传给Edit Control显示出来呢?
如何将一个Edit控件设置成灰色,只能显示不能编辑呢?
##########
看着没错啊!
显示int还不容易,定义一个CString str;
str.Format(_T("%d"), 你的int变量);

就是这么做的啊,可现在
void CWnd::SetWindowText(LPCTSTR lpszString)
{
        ENSURE(this);
        ENSURE(::IsWindow(m_hWnd) || (m_pCtrlSite != NULL));


        if (m_pCtrlSite == NULL)
                ::SetWindowText(m_hWnd, lpszString);
        else
                m_pCtrlSite->SetWindowText(lpszString);
}
这里出现了中断,是什么原因呢
##########
将m_firstPage->m_edit.SetWindowText(temp);
换成SetDlgItemText(m_firstPage->IDC_EDIT,temp);
编译提示:错误 3 error C2039: “sheet”: 不是“CFirstPage”的成员

这又是什么状况啊???关sheet什么事。。。。
##########
中断在第四行?
至于只读的那个,MFC的话,直接修改Edit的属性,吧ReadOnly选上就可以了吧
##########
忽略debug信息后提示遇到不适当的参数
##########
重新定义了一个文本变量,
m_firstPage->m_editText.Format(_T("%d"),m_firstOption);
UpdateData(FALSE);
为什么这样就可以,通过CEdit变量就不能更新信息呢???
##########
通过CEdit变量肯定可以更新信息啊,而且不需要UpdateData这样。

是不是CEdit控件未创建完成?
如果 ENSURE(::IsWindow(m_hWnd) || (m_pCtrlSite != NULL)); 这儿崩溃的话应该就是了,否则的话,就有点奇怪了
##########
CFirstPage *m_firstPage = new CFirstPage;
new 的时候不是CFirstPage的变量都已经创建了吗?刚才又再改m_firstPage上的另一个空间,
 m_firstPage->m_option1.SetCheck(1); 同样的错误,所以我猜想是不是因为在创建m_firstPage的时候各种控件的状态已经定下了,没办法更改?或者需要重绘?刚学mfc好多概念还不清晰

 m_firstPage->m_option1.SetCheck(1);
中断位置,{ ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, BM_SETCHECK, nCheck, 0); }

这说明了什么呢?::IsWindow(m_hWnd) ,这个是什么意思?是出问题的地方?

你的 m_firstPage 有没有Create出来,new出来的只是一个对象,如果没有Create的话,句柄等资源还没有分配,使用的话会出错。ASSERT(::IsWindow(m_hWnd)); 就是断言这个控件已经初始化完毕,已经是一个窗口对象,句柄可用了。

##########
##########
GetDlgItem(IDC_STATIC)->SetWindowText(L"你好");
我在CE下用的这句,但程序老是报错:遇到不适当的参数 请问如何解决。

GetDlgItem(IDC_STATIC)->SetWindowText(L"你好");
问题是IDC_STATIC 不能直接用的 重命名一个ID号 例如 IDC_STATIC_NIHAO

OK,搞定,谢谢,在XP下,IDC_STATIC是可以的,在CE下原来须要修改一下了,谢谢大家了。
扩展阅读
© CopyRight 2010-2021, PREDREAM.ORG, Inc.All Rights Reserved. 京ICP备13045924号-1