关于CEdit的难题

dfyang 2005-01-20 12:08:04
我想让弹出的模式对话框中的CEdit的ReadOnly属性根据条件而改变。我试过SetReadOnly和EnableWindow函数,都报错。跟踪CEdit控件的CTrl型变量值为NULL(0x00000000)。现在简直是没辙了,想请高手赐教。
...全文
155 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengqinggao 2005-01-20
  • 打赏
  • 举报
回复
不能在DoModal前使用控件句柄(也就是你这里说的变量了),其实这还不是实质,实质是窗口没有创建的时候,所有控件都是没有创建的,所以他们的句柄也都是空的,也就不能对其进行任何操作……

一点都不难,随便看点书都知道,多看书吧
StarsWu 2005-01-20
  • 打赏
  • 举报
回复
我试了一下,当句柄不为0时执行完全正常,否则就出错。
StarsWu 2005-01-20
  • 打赏
  • 举报
回复
就如你说的,先判断控件的存在与否,判断他的m_hWnd是否等于0。
iamwiner 2005-01-20
  • 打赏
  • 举报
回复
你有可能犯了一个低级的错误哦,自己找找吧.
likunfeng 2005-01-20
  • 打赏
  • 举报
回复
vcleaner(我没做大哥已经很久了.......) 说的对
在弹出的模式对话框中的OnInitDialog函数中根据这个标志位使用SetReadOnly

下班了,以下简写了:
dlg.m_bReadOnly = TRUE;//m_bReadOnly是在你的模式对话框中的成员变量,在DoModal前初始化一下
dlg.DoModal();

->在哪个模式对话框OnInitDialog中判断
if(m_bReadonly)
{
SetReadOnly(TRUE);
}
else
{
SetReadOnly(FALSE);
}
oyljerry 2005-01-20
  • 打赏
  • 举报
回复
要保证窗体的有效性
fengqinggao 2005-01-20
  • 打赏
  • 举报
回复
呵呵,说了要你多看点书……

DoModal以后,窗体已经销毁,控件也不存在了,你再使用控件的句柄,当然还是错误的

对你现在来讲,可能还只能在Dialog类的内部使用控件,如,如果要设置状态,可以在OnInitDialog()函数后部设置,也可以在该类的其他函数(前提是该函数调用时窗体已经产生)中更改其状态等
dfyang 2005-01-20
  • 打赏
  • 举报
回复
可是我在DoModal之后调用也会出错啊。请问有什么好的解决方法
老夏Max 2005-01-20
  • 打赏
  • 举报
回复
同意楼上!应该在对话框中设置一个BOOL标志位,在DoModal前设置这个标志位,在对话框的OnInitDialog函数中根据这个标志位使用EnableWindow呵呵。
fengqinggao 2005-01-20
  • 打赏
  • 举报
回复
明白了一个道理:原理和道理,抵不上现成的代码,呵呵

另外,既然说“见者有分”,那么一楼的怎么没分呢?勇敢的心讲得也很有道理啊,最后的那位最起码“见”了两次啊,说的和做的,最好一样,思维才够严密,编程才更顺手啊,呵呵

哈,我想我是疯了,这点小事来扯啊扯的,^_^,闪了
dfyang 2005-01-20
  • 打赏
  • 举报
回复
OK了,谢谢各位。见者有分,^_^

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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