MFC:成员变量与控件的资源ID
MFC: member variable vs resource id of control
我是 vc++ 的新手。我想知道通过使用控件的成员变量或资源 id 来处理控件的正确和有效的方法。
m_Name.SetWindowTextW(_T("xyz"));
or
SetDlgItemText(IDC_EDIT2,_T("xyz"));
or
CWnd* cwd = GetDlgItem(IDC_EDIT2);
cwd->SetWindowTextW(_T("xyz"));
高效的方法是创建控件成员变量。您可以在资源编辑器中通过右键单击控件和 select 添加变量来执行此操作。
每次您使用带有资源 ID 的 GetDlgItem 时,它都会遍历所有子控件以找到具有指定 ID 的子控件。每次调用 GetDlgItem 时,此迭代效率低下。
您应该关注长期 运行 什么更易于维护,而不是效率,除非您确实存在性能瓶颈。在 SetWindowText() 操作中,这可能不是什么值得担心的事情。
你必须问这样的问题
1) window 文本要设置多少次?只是一次还是多次?如果一次,您可能应该只使用 SetDlgItemText()。
2) 除了设置文本,你还会做其他操作吗?如果是这样,那么可能使它成为一个成员变量。如果不是,那么将其作为成员变量并将 window 子类化的意义何在?节省一毫秒用户永远不会注意到?
我是 vc++ 的新手。我想知道通过使用控件的成员变量或资源 id 来处理控件的正确和有效的方法。
m_Name.SetWindowTextW(_T("xyz"));
or
SetDlgItemText(IDC_EDIT2,_T("xyz"));
or
CWnd* cwd = GetDlgItem(IDC_EDIT2);
cwd->SetWindowTextW(_T("xyz"));
高效的方法是创建控件成员变量。您可以在资源编辑器中通过右键单击控件和 select 添加变量来执行此操作。
每次您使用带有资源 ID 的 GetDlgItem 时,它都会遍历所有子控件以找到具有指定 ID 的子控件。每次调用 GetDlgItem 时,此迭代效率低下。
您应该关注长期 运行 什么更易于维护,而不是效率,除非您确实存在性能瓶颈。在 SetWindowText() 操作中,这可能不是什么值得担心的事情。
你必须问这样的问题
1) window 文本要设置多少次?只是一次还是多次?如果一次,您可能应该只使用 SetDlgItemText()。
2) 除了设置文本,你还会做其他操作吗?如果是这样,那么可能使它成为一个成员变量。如果不是,那么将其作为成员变量并将 window 子类化的意义何在?节省一毫秒用户永远不会注意到?