📄 cnewcontactdlg.cpp
字号:
// CNewContactDlg.cpp: implementation of the CNewContactDlg class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "CNewContactDlg.h"
#include "resource.h"
#include "CContacts.h"
#include "ContactsManager.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CNewContactDlg g_newcontactdlg;
extern HINSTANCE g_hInst;
extern TCHAR g_group[GROUP_NUMBER][16];
extern CContactsManager g_contactmanager;
CNewContactDlg::CNewContactDlg()
{
m_addcontact = FALSE;
}
CNewContactDlg::~CNewContactDlg()
{
}
BOOL CNewContactDlg::CreateDlg(HWND parent, HINSTANCE hInstance)
{
m_result = DialogBox (hInstance, MAKEINTRESOURCE(IDD_DIALOG_NEWCONTACTS), parent, (DLGPROC)NewContactsDialogProc);
if(m_result == -1)
return FALSE;
return TRUE;
}
BOOL CNewContactDlg::DestroyDlg(const HWND hDlg)
{
if(!EndDialog(hDlg,m_result))
return FALSE;
return TRUE;
}
BOOL CALLBACK NewContactsDialogProc(const HWND hDlg, const UINT uiMessage, const WPARAM wParam, const LPARAM lParam)
{
BOOL bProcessedMsg = TRUE;
switch(uiMessage)
{
case WM_INITDIALOG:
if(!g_newcontactdlg.InitialDlg(hDlg))
{
g_newcontactdlg.DestroyDlg(hDlg);
}
break;
case WM_COMMAND:
switch (LOWORD(wParam))
{
case ID_MENUITEM_NEWCANTACTCANCEL:
g_newcontactdlg.DestroyDlg(hDlg);
break;
case ID_MENUITEM_NEWCONTACTADD:
if(g_newcontactdlg.AddContact(hDlg))
g_newcontactdlg.DestroyDlg(hDlg);
break;
default:
bProcessedMsg = FALSE;
break;
}
break;
case WM_CLOSE:
g_newcontactdlg.DestroyDlg(hDlg);
break;
case WM_HOTKEY:
if(VK_TBACK == HIWORD(lParam))
{
SHSendBackToFocusWindow(uiMessage, wParam, lParam);
}
else
bProcessedMsg = FALSE;
break;
case WM_ACTIVATE:
{
DWORD dwFlags = LOWORD(wParam);
if(dwFlags != WA_INACTIVE)
{
SetFocus(g_newcontactdlg.m_focus);
}
else
{
g_newcontactdlg.m_focus = GetFocus();
bProcessedMsg = FALSE;
}
break;
}
case WM_KEYDOWN:
{
int a = 12;
a++;
break;
}
case WM_NOTIFY:
if(IDC_EDIT_DES == wParam)
{
int a = 12;
a++;
}
break;
default:
bProcessedMsg = FALSE;
break;
}
return bProcessedMsg;
}
BOOL CNewContactDlg::InitialDlg(HWND hDlg)
{
int i;
TCHAR lpszSubTitle[30];
// Specify that the dialog box should stretch full screen
SHINITDLGINFO shidi;
ZeroMemory(&shidi, sizeof(shidi));
shidi.dwMask = SHIDIM_FLAGS;
shidi.dwFlags = SHIDIF_SIZEDLGFULLSCREEN|SHIDIF_SIPDOWN;
shidi.hDlg = hDlg;
// Set up the menu bar
SHMENUBARINFO shmbi;
ZeroMemory(&shmbi, sizeof(shmbi));
shmbi.cbSize = sizeof(shmbi);
shmbi.hwndParent = hDlg;
shmbi.nToolBarId = IDR_MENUBAR_NEWCONTACT;
shmbi.hInstRes = g_hInst;
// If we could not initialize the dialog box, return an error
if (!(SHInitDialog(&shidi) && SHCreateMenuBar(&shmbi)))
{
return FALSE;
}
// set the title bar
if(m_addcontact)
{
LoadString(g_hInst,IDS_STRING_NEWCONTACT,lpszSubTitle,ARRAYSIZE(lpszSubTitle));
if (lpszSubTitle)
SetWindowText(hDlg, lpszSubTitle);
}
else
{
LoadString(g_hInst,IDS_STRING_CONTACTIMF,lpszSubTitle,ARRAYSIZE(lpszSubTitle));
if (lpszSubTitle)
SetWindowText(hDlg, lpszSubTitle);
}
//Overriding Back button functionality
(void)SendMessage(shmbi.hwndMB, SHCMBM_OVERRIDEKEY, VK_TBACK,
MAKELPARAM(SHMBOF_NODEFAULT | SHMBOF_NOTIFY,
SHMBOF_NODEFAULT | SHMBOF_NOTIFY));
for(i = 0;i < GROUP_NUMBER;++i)
{
SendMessage(GetDlgItem(hDlg, IDC_LIST_GROUP),LB_INSERTSTRING,-1, (LPARAM)g_group[i]);
}
//限制编辑框内容长度
SendMessage(GetDlgItem(hDlg,IDC_EDIT_ADDRESS),EM_LIMITTEXT,39,0);
SendMessage(GetDlgItem(hDlg,IDC_EDIT_NAME),EM_LIMITTEXT,39,0);
SendMessage(GetDlgItem(hDlg,IDC_EDIT_DES),EM_LIMITTEXT,99,0);
//根据是添加联系人或编辑联系来设定对话框的信息
if(m_addcontact)
{
m_contacts.m_group = 0;
m_contacts.m_oidRecord = 0;
SetWindowText(GetDlgItem(hDlg,IDC_EDIT_ADDRESS),m_address);
}
else
{
SetWindowText(GetDlgItem(hDlg,IDC_EDIT_ADDRESS),m_contacts.m_mailaddress);
SetWindowText(GetDlgItem(hDlg,IDC_EDIT_NAME),m_contacts.m_name);
SetWindowText(GetDlgItem(hDlg,IDC_EDIT_DES),m_contacts.m_des);
}
SendMessage(GetDlgItem(hDlg, IDC_LIST_GROUP), LB_SETCURSEL, m_contacts.m_group, 0);
SendMessage(GetDlgItem(hDlg, IDC_SPIN1), UDM_SETBUDDY, (WPARAM)GetDlgItem(hDlg, IDC_LIST_GROUP), 0);
SetFocus(GetDlgItem(hDlg,IDC_EDIT_ADDRESS));
m_focus = GetDlgItem(hDlg,IDC_EDIT_ADDRESS);
return TRUE;
}
BOOL CNewContactDlg::AddContact(HWND hDlg)
{
GetWindowText(GetDlgItem(hDlg,IDC_EDIT_ADDRESS),m_contacts.m_mailaddress,sizeof(m_contacts.m_mailaddress)/sizeof(TCHAR));
if(lstrlen(m_contacts.m_mailaddress) == 0)
{
MessageBox(hDlg,_T("The E-mail Address can not be empty!"),_T("Error"),MB_OK|MB_ICONERROR);
return FALSE;
}
GetWindowText(GetDlgItem(hDlg,IDC_EDIT_NAME),m_contacts.m_name,sizeof(m_contacts.m_name)/sizeof(TCHAR));
GetWindowText(GetDlgItem(hDlg,IDC_EDIT_DES),m_contacts.m_des,sizeof(m_contacts.m_des)/sizeof(TCHAR));
int index = SendMessage(GetDlgItem(hDlg, IDC_LIST_GROUP), LB_GETCURSEL, 0, 0);
m_contacts.m_group = index;
if(!g_contactmanager.EditContact(m_contacts))
{
g_contactmanager.OpenDataBase(0);
g_contactmanager.EditContact(m_contacts);
}
if(m_addcontact == TRUE)
MessageBox(hDlg,_T("Completed adding Contact!"),_T("Success"),MB_ICONASTERISK);
return TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -