📄 pb_main.c
字号:
#include "../sys_headfile.h"
#include "pb_main.h"
//#include "pb_app.h"//通讯录相关对话空函数
static HICON hIcon1,hIcon2; /* 声明图标句柄 */
static HMENU phoneBookSetMenu(void)
{
HMENU hmnu;
MENUITEMINFO mii;
// hmnu=CreateMenu();
memset(&mii,0,sizeof(MENUITEMINFO));
mii.type= MFT_SEPARATOR;
mii.id=0;
mii.typedata=(DWORD)"";
hmnu = CreatePopupMenu(&mii);
memset(&mii,0,sizeof(MENUITEMINFO));
mii.type=MFT_STRING;
mii.id=IDE_PB_MENU_ADD;
mii.typedata=(DWORD)"添加";
InsertMenuItem(hmnu,0,TRUE,&mii);
memset(&mii,0,sizeof(MENUITEMINFO));
mii.type=MFT_STRING;
mii.id=IDE_PB_MENU_DELETE;
mii.typedata=(DWORD)"删除";
InsertMenuItem(hmnu,1,TRUE,&mii);
memset(&mii,0,sizeof(MENUITEMINFO));
mii.type=MFT_STRING;
mii.id=IDE_PB_MENU_EDIT;
mii.typedata=(DWORD)"修改";
InsertMenuItem(hmnu,2,TRUE,&mii);
memset(&mii,0,sizeof(MENUITEMINFO));
mii.type=MFT_STRING;
mii.id=IDE_PB_MENU_SEARCH;
mii.typedata=(DWORD)"查找";
InsertMenuItem(hmnu,3,TRUE,&mii);
memset(&mii,0,sizeof(MENUITEMINFO));
mii.type=MFT_STRING;
mii.id=IDE_PB_MENU_RETURN;
mii.typedata=(DWORD)"返回";
InsertMenuItem(hmnu,4,TRUE,&mii);
return hmnu;
}
static HMENU phoneBookSetMenu1(void)
{
HMENU hmnu;
MENUITEMINFO mii;
// hmnu=CreateMenu();
memset(&mii,0,sizeof(MENUITEMINFO));
mii.type= MFT_SEPARATOR;
mii.id=0;
mii.typedata=(DWORD)"";
hmnu = CreatePopupMenu(&mii);
memset(&mii,0,sizeof(MENUITEMINFO));
mii.type=MFT_STRING;
mii.id=IDE_PB_MENU_MAKE_CALL;
mii.typedata=(DWORD)"通话";
InsertMenuItem(hmnu,0,TRUE,&mii);
return hmnu;
}
static HMENU phoneMainMenu(void)
{
HMENU hmnu;
MENUITEMINFO mii;
hmnu=CreateMenu();
memset(&mii,0,sizeof(MENUITEMINFO));
mii.type=MFT_STRING;
mii.id=IDE_PB_MENU_MEG;
mii.typedata=(DWORD)"管理";
mii.hsubmenu=phoneBookSetMenu();
InsertMenuItem(hmnu,0,TRUE,&mii);
memset(&mii,0,sizeof(MENUITEMINFO));
mii.type=MFT_STRING;
mii.id=IDE_PB_MENU_CALL_MEG;
mii.hsubmenu=phoneBookSetMenu1();
mii.typedata=(DWORD)"通话";
InsertMenuItem(hmnu,1,TRUE,&mii);
return hmnu;
}
static void nameToTle_notif_proc (HWND hWnd, int id, int nc, DWORD add_data)
{
switch(nc)
{
case LBN_CLICKED:
{
int len;
contactTemp.index = SendMessage (GetDlgItem(GetParent(hWnd), IDC_PB_SIL_NAME), LB_GETCURSEL, 0, 0);
SendMessage (GetDlgItem(GetParent(hWnd), IDC_PB_SIL_TEL), LB_SETCURSEL, contactTemp.index, 0);
len = SendMessage(GetDlgItem(GetParent(hWnd),IDC_PB_SIL_NAME),
LB_GETTEXT,contactTemp.index,(LPARAM)contactTemp.contactName);
len = SendMessage(GetDlgItem(GetParent(hWnd),IDC_PB_SIL_TEL),
LB_GETTEXT,contactTemp.index,(LPARAM)contactTemp.contactTel);
}break;
}
}
static void tleToName_notif_proc (HWND hWnd, int id, int nc, DWORD add_data)
{
switch(nc)
{
case LBN_CLICKED:
{
int len;
contactTemp.index = SendMessage (GetDlgItem(GetParent(hWnd), IDC_PB_SIL_TEL), LB_GETCURSEL, 0, 0);
SendMessage (GetDlgItem(GetParent(hWnd), IDC_PB_SIL_NAME), LB_SETCURSEL, contactTemp.index, 0);
len = SendMessage(GetDlgItem(GetParent(hWnd),IDC_PB_SIL_NAME),LB_GETTEXT,
contactTemp.index,(LPARAM)contactTemp.contactName);
len = SendMessage(GetDlgItem(GetParent(hWnd),IDC_PB_SIL_TEL),LB_GETTEXT,
contactTemp.index,(LPARAM)contactTemp.contactTel);
}break;
}
}
static int PhoneBookProc(HWND hWnd,int message,WPARAM wParam,LPARAM lParam)
{
switch(message)
{
case MSG_CREATE:{
int count;
LISTBOXITEMINFO lbii; /* 声明列表框条目结构体变量 */
readPhonebookFile();
strcpy(contactTemp.contactName,"None!\0");
strcpy(contactTemp.contactTel,"123\0");
CreateWindow(CTRL_LISTBOX,"",WS_VISIBLE | WS_BORDER | WS_VSCROLL |LBS_NOTIFY |LBS_USEICON,IDC_PB_SIL_NAME,
10,10,100,100,hWnd,0);
CreateWindow(CTRL_LISTBOX,"",WS_VISIBLE | WS_BORDER | WS_VSCROLL |LBS_NOTIFY |LBS_USEICON,IDC_PB_SIL_TEL,
120,10,100,100,hWnd,0);
hIcon1 = LoadIconFromFile (HDC_SCREEN, "images/people.ico", 1); /* 加载图标 */
hIcon2 = LoadIconFromFile (HDC_SCREEN, "images/call.ico", 1); /* 加载图标 */
for(count = 0;count < contacts.contactCount; count++)
{
/* 设定结构信息,并添加条目 */
lbii.hIcon = hIcon1;
lbii.cmFlag = CMFLAG_BLANK;
lbii.string = contacts.contactData[count].contactName;
SendMessage (GetDlgItem(hWnd, IDC_PB_SIL_NAME), LB_ADDSTRING, 0, (LPARAM)&lbii);
/* 设定结构信息,并添加条目 */
lbii.hIcon = hIcon2;
lbii.cmFlag = CMFLAG_BLANK;
lbii.string = contacts.contactData[count].contactTel;
SendMessage (GetDlgItem(hWnd, IDC_PB_SIL_TEL), LB_ADDSTRING, 0, (LPARAM)&lbii);
}
SetNotificationCallback (GetDlgItem(hWnd,IDC_PB_SIL_NAME), nameToTle_notif_proc);
SetNotificationCallback (GetDlgItem(hWnd, IDC_PB_SIL_TEL), tleToName_notif_proc);
}break;
case MSG_COMMAND:{
LISTBOXITEMINFO lbii;
switch(wParam)
{
case IDE_PB_MENU_ADD:{
int count;
addDlg(hWnd);
//MessageBox (hWnd,contactTemp.contactName , contactTemp.contactTel, MB_OK | MB_ICONINFORMATION);
lbii.hIcon = hIcon1;
lbii.cmFlag = CMFLAG_BLANK;
lbii.string = contactTemp.contactName;
SendMessage (GetDlgItem(hWnd, IDC_PB_SIL_NAME), LB_ADDSTRING, 0, (LPARAM)&lbii);
lbii.hIcon = hIcon2;
lbii.cmFlag = CMFLAG_BLANK;
lbii.string = contactTemp.contactTel;
SendMessage (GetDlgItem(hWnd, IDC_PB_SIL_TEL), LB_ADDSTRING, 0, (LPARAM)&lbii);
count= SendMessage (GetDlgItem(hWnd, IDC_PB_SIL_NAME), LB_GETCOUNT, 0, 0);
strcpy(contacts.contactData[count].contactName,contactTemp.contactName);
strcpy(contacts.contactData[count].contactTel,contactTemp.contactTel);
contacts.contactCount = count;
//writePhonebookFile();
return 0 ;
}
case IDE_PB_MENU_EDIT:{
editDlg(hWnd); //创建 编辑对话框
/*重设显示值*/
lbii.hIcon = hIcon1;
lbii.cmFlag = CMFLAG_BLANK;
lbii.string = contactTemp.contactName;
SendMessage (GetDlgItem(hWnd, IDC_PB_SIL_NAME), LB_DELETESTRING, contactTemp.index, 0) ;
SendMessage (GetDlgItem(hWnd, IDC_PB_SIL_NAME), LB_INSERTSTRING, contactTemp.index, (LPARAM)&lbii);
lbii.hIcon = hIcon2;
lbii.cmFlag = CMFLAG_BLANK;
lbii.string = contactTemp.contactTel;
SendMessage (GetDlgItem(hWnd, IDC_PB_SIL_TEL), LB_DELETESTRING, contactTemp.index, 0) ;
SendMessage (GetDlgItem(hWnd, IDC_PB_SIL_TEL), LB_INSERTSTRING, contactTemp.index, (LPARAM)&lbii);
strcpy(contacts.contactData[contactTemp.index].contactName,contactTemp.contactName);
strcpy(contacts.contactData[contactTemp.index].contactTel,contactTemp.contactTel);
//writePhonebookFile();
return 0;
}
case IDE_PB_MENU_SEARCH:{
int Msg_return;
searchDlg(hWnd);
Msg_return = SendMessage(GetDlgItem(hWnd, IDC_PB_SIL_NAME), LB_FINDSTRING, 0,(LPARAM)contactTemp.contactName);
if(Msg_return == LB_ERR) //超不到
{
MessageBox (hWnd, contactTemp.contactName,"查无此人", MB_OK | MB_ICONINFORMATION);
}
else
{
SendMessage (GetDlgItem(hWnd, IDC_PB_SIL_NAME), LB_SETCURSEL, Msg_return, 0);
SendMessage (GetDlgItem(hWnd, IDC_PB_SIL_TEL), LB_SETCURSEL, Msg_return, 0);
}
return 0;
}
case IDE_PB_MENU_DELETE:{
int i,count;
DeleteDlg(hWnd);
if(contactTemp.contactName[0] == '+')
{
SendMessage (GetDlgItem(hWnd, IDC_PB_SIL_NAME), LB_DELETESTRING, contactTemp.index, 0) ;
SendMessage (GetDlgItem(hWnd, IDC_PB_SIL_TEL), LB_DELETESTRING, contactTemp.index, 0) ;
}return 0;
case IDE_PB_MENU_MAKE_CALL:
callingMainWinCreat(hWnd,contactTemp.contactTel);
return 0;
}
}
case MSG_CLOSE:{
int i,count;
count= SendMessage (GetDlgItem(hWnd, IDC_PB_SIL_NAME), LB_GETCOUNT, 0, 0);
for(i = 0; i < count; i++)
{
SendMessage(GetDlgItem(hWnd,IDC_PB_SIL_NAME),
LB_GETTEXT,i,(LPARAM)contactTemp.contactName);
SendMessage(GetDlgItem(hWnd,IDC_PB_SIL_TEL),
LB_GETTEXT,i,(LPARAM)contactTemp.contactTel);
strcpy(contacts.contactData[i].contactName,contactTemp.contactName);
strcpy(contacts.contactData[i].contactTel,contactTemp.contactTel);
}
contacts.contactCount = count;
writePhonebookFile();
DestroyMainWindow(hWnd);
PostQuitMessage(hWnd);
break;
}
}
}
return DefaultMainWinProc(hWnd,message,wParam,lParam);
}
int phoneBookWindows(HWND hcwd)
{
MSG Msg;
MAINWINCREATE CreateInfo;
HWND pb_win;
CreateInfo.dwStyle=WS_VISIBLE | WS_BORDER | WS_CAPTION;
CreateInfo.dwExStyle=WS_EX_NONE;
CreateInfo.spCaption="通讯录";
// CreateInfo.hMenu=0;
CreateInfo.hCursor=GetSystemCursor(IDC_ARROW);
CreateInfo.hIcon=0;
CreateInfo.MainWindowProc=PhoneBookProc;
printf("hahah");
CreateInfo.hMenu=phoneMainMenu();
CreateInfo.lx=0;
CreateInfo.ty=0;
CreateInfo.rx=320;
CreateInfo.by=216;
CreateInfo.iBkColor=GetWindowElementColor (BKC_CONTROL_DEF);
CreateInfo.dwAddData=0;
CreateInfo.hHosting=hcwd;
pb_win=CreateMainWindow(&CreateInfo);
ShowWindow(pb_win,SW_SHOWNORMAL);
while(GetMessage(&Msg,pb_win))
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
MainWindowThreadCleanup(pb_win);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -