第11章 GUI Page487 步骤二十七 “脏数据”与“新文档”状态维护 代码重构

重构的步骤:

1. WxMyPainterMain.cpp中调用SetDirty(……)的地方,全部改为UpdateFileStatusUI(),包括我们在“Undo/Redo”响应函数中加上的那两行

第11章 GUI Page487 步骤二十七 “脏数据”与“新文档”状态维护 代码重构_第1张图片

这些位置分别在下面的函数中

//鼠标抬起函数
void wxMyPainterFrame::OnScrolledWindow1LeftUp(wxMouseEvent& event)

//置顶
void wxMyPainterFrame::OnMenuItemTopLevelSelected(wxCommandEvent& event)

//上浮
void wxMyPainterFrame::OnMenuItemFowardLevelSelected(wxCommandEvent& event)

//下降
void wxMyPainterFrame::OnMenuItemBackLevelSelected(wxCommandEvent& event)

//置底
void wxMyPainterFrame::OnMenuItemBottomLevelSelected(wxCommandEvent& event)

//删除
void wxMyPainterFrame::OnMenuItemDelItemSelected(wxCommandEvent& event)

//隐藏
void wxMyPainterFrame::OnMenuItemHideSelected(wxCommandEvent& event)

//Undo
void wxMyPainterFrame::OnMenuItemEditUndoSelected(wxCommandEvent& event)

//Redo
void wxMyPainterFrame::OnMenuItemEditRedoSelected(wxCommandEvent& event)

2. 原来需要判断“_is_dirty”的地方,都改成判断“_actionLink.IsDirty()”

易错点:替换的时候,818行的叹号容易忽略掉,忽略了,后面会出问题

第11章 GUI Page487 步骤二十七 “脏数据”与“新文档”状态维护 代码重构_第2张图片

3.完成修改之后,从类wxMyPainterFrame的定义及实现代码中,将_is_dirty和SetDirty()删除

运行效果:

第11章 GUI Page487 步骤二十七 “脏数据”与“新文档”状态维护 代码重构_第3张图片

第11章 GUI Page487 步骤二十七 “脏数据”与“新文档”状态维护 代码重构_第4张图片

你可能感兴趣的:(《白话C++》第11章,我的小画家,《白话C++》学习,c++,ui)