MFC:成员变量vs控制的资源ID

时间:2015-06-09 12:51:21

标签: visual-c++ mfc

我是vc ++的新手。我想通过使用成员变量或控件的资源ID来了解哪种方法是正确有效的处理控件。

m_Name.SetWindowTextW(_T("xyz"));
or 
SetDlgItemText(IDC_EDIT2,_T("xyz"));
or 
CWnd* cwd =    GetDlgItem(IDC_EDIT2);
cwd->SetWindowTextW(_T("xyz"));

2 个答案:

答案 0 :(得分:2)

有效的方法是创建一个控制成员变量。您可以在资源编辑器中右键单击控件并选择Add Variable。

每次将GetDlgItem与资源ID一起使用时,它会遍历所有子控件以查找具有指定ID的控件。完成每个GetDlgItem调用后,此迭代效率很低。

答案 1 :(得分:1)

除非你确实存在性能瓶颈,否则你应该关注从长远来看哪些更易于维护而不是效率。在SetWindowText()操作中可能没有什么可担心的。

你必须提出像

这样的问题

1)你要设置窗口文本多少次?只是一次或多次?如果一次,你应该只使用SetDlgItemText()。

2)除了设置文本之外,您还要进行其他操作吗?如果是这样,那么可能使它成为一个成员变量。如果没有,那么将它作为成员变量并对窗口进行子类化有什么意义呢?为了节省毫秒,用户永远不会注意到?