切换资源文件后,如何刷新View视图中的窗口?

dracoo 2008-02-24 10:32:15
用VC++6.0,在做一个多国语言化的应用程序,在菜单上选择新的语言后,要动态刷新画面,包括菜单、工具栏、状态栏、主窗口的显示内容。所谓的主窗口就是我在View视图当中嵌入了一个窗口资源,打开应用程序后,该窗口一直保持打开。现在当切换语言后,其他部分都实现了动态刷新为新语言的显示,唯独视图中的这个窗口,始终不能刷新。由于不同的语言窗口画面布局有不同,所以不能用重新写文字的方法,我使用以下语句:

CMainFrame *pMain = (CMainFrame*)AfxGetMainWnd();
pMain->GetActiveView()->Invalidate();

不起作用。或许还是我对MFC框架结构的理解不够,请问大家这种情况如何解决?
...全文
233 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
孤客天涯 2008-02-27
  • 打赏
  • 举报
回复
菜单、工具栏等可以刷新,但现有的视图对话话框内的资源如果不采用重建那只有用SetWindowText此类的东东了
菜牛 2008-02-25
  • 打赏
  • 举报
回复
对所有控件调用新的文字资源然后SetWindowText
cnzdgs 2008-02-25
  • 打赏
  • 举报
回复
Close之后用DestroyWindow销毁,然后再CDialog()重新构造。
hityct1 2008-02-25
  • 打赏
  • 举报
回复
1)Invalidate函数用错了吧,刷新窗口应该用UpdateWindow
2)刷新你的主窗口,应该线获得主窗口的的句柄吧。GetActiveView()获得是view的窗口。
仅供参靠。
cnzdgs 2008-02-25
  • 打赏
  • 举报
回复
不知道View能不能销毁重建,你试试吧。
xt_kd 2008-02-25
  • 打赏
  • 举报
回复
A modal dialog box closes automatically when the user presses the OK or Cancel buttons or when your code calls the EndDialog member function.

When you implement a modeless dialog box, always override the OnCancel member function and call DestroyWindow from within it. Don't call the base class CDialog::OnCancel, because it calls EndDialog, which will make the dialog box invisible but will not destroy it. You should also override PostNcDestroy for modeless dialog boxes in order to delete this, since modeless dialog boxes are usually allocated with new. Modal dialog boxes are usually constructed on the frame and do not need PostNcDestroy cleanup.
仔细看看上边的段子
dracoo 2008-02-25
  • 打赏
  • 举报
回复
由于对话框是在程序启动时,嵌入在View当中的(视图的基类为CFrameView,并选择了一个对话框资源)
class CMyView : public CFormView
{
...
}

这种情况下,怎么样把这个对话框销毁然后创建呢,还是要连View一起销毁,然后创建新的View呢?
dracoo 2008-02-24
  • 打赏
  • 举报
回复
可能是这样的,那View视图里的对话框如何销毁再创建呢,好像Close()就可以关闭掉,但是再次打开用什么方法?
cnzdgs 2008-02-24
  • 打赏
  • 举报
回复
按我理解是这样,对话框在创建的时候根据对话框资源对所有控件SetWindowText,所以对话框创建之后就不再需要对话框资源了。这样看来,需要把对话框销毁再重新创建一个。
dracoo 2008-02-24
  • 打赏
  • 举报
回复
切换语言部分已经搞定.每种语言做了一个dll资源库。

m_hLangDLL=::LoadLibrary("Spanish.dll");
AfxSetResourceHandle(m_hLangDLL);

这时资源文件已经变更,但画面的更新还要作进一步处理,菜单、工具栏等都能刷新了,现在就差View视图中这个对话框。不知如何刷新。
cnzdgs 2008-02-24
  • 打赏
  • 举报
回复
用什么方式切换语言?是只要重画这个窗口就可以吗?

15,980

社区成员

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

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