
vc++新建对话框 但不出对话框 可是能打开别人建好的 10
3个回答
展开全部
你的问题其实很简单的,几乎没有难度可言!
我觉得你连这样的问题都想不出个解决办法,或没有什么思路,只能说明你看的代码太少了,对C++(你的问题不能算是MFC的问题)还不熟悉。
给个问题思考逻辑吧:
static CDialog1 dlg1这行,明显定义了个局部类,既然局部类最终会被销毁,因此由局部类所创建的那个窗口(不管是不是对话框,什么模态不模态都一样)做的任何修改都不应该在局部类里的成员变量里保存起来,因为类都消失了,哪来的成员变量。因此下次再重新定义个局部类,窗口初始化代码里(OnInitDialog里响应),不可能用成员变量对窗口进行初始化(也就是无法显示上次该对话框里任何控件所做的任何设置),上次做的修改你保存在哪里呢,成员变量已经重新被初始化了呀。
因此,上次做的修改只能保存在其它地方,譬如创建这个局部类的那个类(B类里),可以在局部类返回时,立刻将局部类做的设置赋值给B类的成员变量,然后下次再创建这个局部类时,再把B类成员变量保存的值再传给这个局部类,然后再调用DoModal创建窗口。
局部类做的设置外传给B类,以及B类再重新回传给局部类,这样的编程技巧应该会吧!?可以在局部类里定义个成员变量,这个变量就是用来与B类进行通信的,但建议不要用PUBLIC定义这个成员变量,而应该在局部类里定义一对PUBLIC成员函数,一个是BOOL SetInitValue(xxx),一个是xxx GetModifiedValue(),这两个函数是给B类调用的,以便能方便与局部类通信。
最后在局部类使用DoModal的时候必要调用InitDialog函数,这个时候因为这个局部类里有个成员变量已经被B类给设置过了,因此在InitDialog里可以轻松地为窗口做上次调用的各种设置。
思路应该很简单吧,你没想到,只是因为你的C++没学好。至于那个static我明白你的意思,不让那个变量消失嘛!但,一般做程序的,好像都不会立刻想到用static的,因为像你这样的场合,熟练的程序员可能考虑都不用考虑什么static。而且,解决初始化的问题还有好多好多办法呢!多阅读别人的代码,会有提高的,只是时间问题,坚持下来你就是高手!!
你的串号我已经记下,采纳后我会帮你制作
我觉得你连这样的问题都想不出个解决办法,或没有什么思路,只能说明你看的代码太少了,对C++(你的问题不能算是MFC的问题)还不熟悉。
给个问题思考逻辑吧:
static CDialog1 dlg1这行,明显定义了个局部类,既然局部类最终会被销毁,因此由局部类所创建的那个窗口(不管是不是对话框,什么模态不模态都一样)做的任何修改都不应该在局部类里的成员变量里保存起来,因为类都消失了,哪来的成员变量。因此下次再重新定义个局部类,窗口初始化代码里(OnInitDialog里响应),不可能用成员变量对窗口进行初始化(也就是无法显示上次该对话框里任何控件所做的任何设置),上次做的修改你保存在哪里呢,成员变量已经重新被初始化了呀。
因此,上次做的修改只能保存在其它地方,譬如创建这个局部类的那个类(B类里),可以在局部类返回时,立刻将局部类做的设置赋值给B类的成员变量,然后下次再创建这个局部类时,再把B类成员变量保存的值再传给这个局部类,然后再调用DoModal创建窗口。
局部类做的设置外传给B类,以及B类再重新回传给局部类,这样的编程技巧应该会吧!?可以在局部类里定义个成员变量,这个变量就是用来与B类进行通信的,但建议不要用PUBLIC定义这个成员变量,而应该在局部类里定义一对PUBLIC成员函数,一个是BOOL SetInitValue(xxx),一个是xxx GetModifiedValue(),这两个函数是给B类调用的,以便能方便与局部类通信。
最后在局部类使用DoModal的时候必要调用InitDialog函数,这个时候因为这个局部类里有个成员变量已经被B类给设置过了,因此在InitDialog里可以轻松地为窗口做上次调用的各种设置。
思路应该很简单吧,你没想到,只是因为你的C++没学好。至于那个static我明白你的意思,不让那个变量消失嘛!但,一般做程序的,好像都不会立刻想到用static的,因为像你这样的场合,熟练的程序员可能考虑都不用考虑什么static。而且,解决初始化的问题还有好多好多办法呢!多阅读别人的代码,会有提高的,只是时间问题,坚持下来你就是高手!!
你的串号我已经记下,采纳后我会帮你制作
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询