找一个用vc6.0的mfc对话框写通讯录的教程视频
时间: 2023-12-04 20:02:38 浏览: 101
很抱歉,我无法为您提供视频教程,但我可以为您提供一个用VC6.0 MFC对话框写通讯录的基本步骤:
1. 创建新的VC++ MFC对话框应用程序,选择“对话框”模板,并勾选“空项目”。
2. 在资源视图中,添加控件,例如编辑框、列表框、按钮等,用于输入、显示和操作通讯录信息。
3. 在对话框类的头文件中定义变量和函数,例如:CString变量用于存储通讯录信息,AddContact函数用于添加新联系人,DeleteContact函数用于删除联系人等。
4. 在对话框类的源文件中实现变量和函数,并在控件的事件响应函数中调用相应的函数。
5. 在应用程序的InitInstance函数中,创建并显示主对话框。
6. 编译并运行应用程序,测试通讯录功能。
希望这些步骤可以帮助您开始编写通讯录应用程序。如果您需要更详细的指导,可以参考VC6.0的官方文档或在线教程。
相关问题
教我用vc6.0C++语言写一个mfc对话框形式的可以删除,添加,编辑,查询的通讯录系统
VC6.0虽然已经很老了,但是仍然可以使用MFC来进行开发,以下是一个简单的MFC对话框通讯录系统的C++代码示例:
首先,创建一个MFC对话框应用程序,然后在资源视图中添加一个对话框资源以及需要的控件(如编辑框,列表框,按钮等)。
打开对话框的头文件(例如“MyDlg.h”),添加以下代码:
```c++
#include <vector>
#include <string>
struct Contact {
std::string name;
std::string phone;
};
class CMyDlg : public CDialog {
public:
CMyDlg(CWnd* pParent = nullptr); // 构造函数
enum { IDD = IDD_MY_DIALOG }; // 对话框标识符
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
DECLARE_MESSAGE_MAP()
private:
CEdit m_editName;
CEdit m_editPhone;
CListBox m_listContacts;
std::vector<Contact> m_contacts; // 储存联系人信息
public:
afx_msg void OnBnClickedBtnAdd(); // 添加联系人按钮的点击事件处理函数
afx_msg void OnBnClickedBtnDelete(); // 删除联系人按钮的点击事件处理函数
afx_msg void OnBnClickedBtnEdit(); // 编辑联系人按钮的点击事件处理函数
afx_msg void OnBnClickedBtnSearch(); // 查询联系人按钮的点击事件处理函数
};
```
然后,在“MyDlg.cpp”文件中,添加以下代码:
```c++
#include "MyDlg.h"
#include "afxdialogex.h"
CMyDlg::CMyDlg(CWnd* pParent /*=nullptr*/)
: CDialog(IDD_MY_DIALOG, pParent)
{
}
void CMyDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_EDIT_NAME, m_editName);
DDX_Control(pDX, IDC_EDIT_PHONE, m_editPhone);
DDX_Control(pDX, IDC_LIST_CONTACTS, m_listContacts);
}
BEGIN_MESSAGE_MAP(CMyDlg, CDialog)
ON_BN_CLICKED(IDC_BTN_ADD, &CMyDlg::OnBnClickedBtnAdd)
ON_BN_CLICKED(IDC_BTN_DELETE, &CMyDlg::OnBnClickedBtnDelete)
ON_BN_CLICKED(IDC_BTN_EDIT, &CMyDlg::OnBnClickedBtnEdit)
ON_BN_CLICKED(IDC_BTN_SEARCH, &CMyDlg::OnBnClickedBtnSearch)
END_MESSAGE_MAP()
void CMyDlg::OnBnClickedBtnAdd()
{
CString name, phone;
m_editName.GetWindowText(name);
m_editPhone.GetWindowText(phone);
if (!name.IsEmpty() && !phone.IsEmpty()) {
Contact contact;
contact.name = CT2A(name);
contact.phone = CT2A(phone);
m_contacts.push_back(contact);
m_listContacts.AddString(name);
}
}
void CMyDlg::OnBnClickedBtnDelete()
{
int index = m_listContacts.GetCurSel();
if (index != LB_ERR) {
m_listContacts.DeleteString(index);
m_contacts.erase(m_contacts.begin() + index);
}
}
void CMyDlg::OnBnClickedBtnEdit()
{
int index = m_listContacts.GetCurSel();
if (index != LB_ERR) {
CString name, phone;
m_editName.GetWindowText(name);
m_editPhone.GetWindowText(phone);
if (!name.IsEmpty() && !phone.IsEmpty()) {
Contact contact;
contact.name = CT2A(name);
contact.phone = CT2A(phone);
m_contacts[index] = contact;
m_listContacts.DeleteString(index);
m_listContacts.InsertString(index, name);
m_listContacts.SetCurSel(index);
}
}
}
void CMyDlg::OnBnClickedBtnSearch()
{
CString name;
m_editName.GetWindowText(name);
if (!name.IsEmpty()) {
for (size_t i = 0; i < m_contacts.size(); i++) {
if (m_contacts[i].name == CT2A(name)) {
m_listContacts.SetCurSel(i);
m_editPhone.SetWindowText(m_contacts[i].phone.c_str());
return;
}
}
MessageBox(_T("未找到该联系人"), _T("提示"), MB_OK);
}
}
```
在这个示例中,我们创建了一个Contact结构体,用于储存每个联系人的姓名和电话号码。在对话框中,我们添加了两个编辑框(用于输入姓名和电话号码),一个列表框(用于显示联系人列表)以及四个按钮(用于添加、删除、编辑和查询联系人)。
在添加联系人按钮的点击事件处理函数中,我们获取编辑框中输入的姓名和电话号码,如果两个值都不为空,则创建一个新的Contact对象,将其添加到联系人列表中,并将姓名添加到列表框中。
在删除联系人按钮的点击事件处理函数中,我们获取当前选中的联系人在列表框中的索引,如果存在选中的联系人,则从列表框和联系人列表中删除该联系人。
在编辑联系人按钮的点击事件处理函数中,我们获取当前选中的联系人在列表框中的索引,如果存在选中的联系人,并且编辑框中输入的姓名和电话号码都不为空,则更新该联系人的信息,并将其在列表框中的显示名称更新为新的姓名。
在查询联系人按钮的点击事件处理函数中,我们获取编辑框中输入的姓名,如果该姓名在联系人列表中存在,则将其在列表框中选中,并将其电话号码显示在电话号码编辑框中,否则弹出提示框。
这只是一个简单的示例,您可以根据需要添加更多的功能和控件。请注意,在VC6.0中使用Unicode字符集时,CString的构造函数参数需要使用CT2A宏进行转换。
阅读全文