additem.c
来自「minigui PDA系统 可实现手机功能」· C语言 代码 · 共 288 行
C
288 行
/*添加联系人*/
#include "telbook.h"
#include "../tel/call_time.h"
#include "../mybuttonreg.h"
/*static BITMAP add_pushed;
static BITMAP add_unpushed;
static BITMAP add_mousemove;
static BITMAP cancel_pushed;
static BITMAP cancel_unpushed;
static BITMAP cancel_mousemove;
*/
static HWND hCtrl1;
static HWND hCtrl2;
static HWND hMainWnd;
void createaddwin(HWND hwnd)
{
CreateWindowEx(CTRL_EDIT, NULL,WS_VISIBLE | WS_TABSTOP | WS_BORDER,WS_EX_TRANSPARENT, IDM_ADD_NAME,40, 20, 100, 25, hwnd, 0);
CreateWindowEx(CTRL_EDIT, NULL,WS_VISIBLE | WS_TABSTOP | WS_BORDER,WS_EX_TRANSPARENT, IDM_ADD_PHONE,40, 60, 140, 25, hwnd, 0);
//hCtrl1 = CreateWindowEx(CTRL_MYBUTTON, "添加",WS_VISIBLE | BS_DEFPUSHBUTTON,WS_EX_TRANSPARENT,IDM_OK,200, 20, 65, 30,hwnd, (DWORD)&add_unpushed);
hCtrl1 =CreateWindow ("button",
"添加",
WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE,
IDM_OK,
200, 20, 65, 30,hwnd, 0);
//hCtrl2 = CreateWindowEx(CTRL_MYBUTTON,"取消",WS_VISIBLE | BS_DEFPUSHBUTTON,WS_EX_TRANSPARENT,IDM_CANCLE,200, 60, 65, 30,hwnd, (DWORD)&cancel_unpushed);
hCtrl2 =CreateWindow ("button",
"取消",
WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE,
IDM_CANCLE,
200, 60, 65, 30,hwnd, 0);
}
//添加信息回调函数
static void addItem_proc (HWND hwnd, int id, int nc, DWORD add_data)
{
if (id == IDM_ADD_NAME && nc == EN_CHANGE)
GetWindowText (hwnd, buff_name, 30);
if (id == IDM_ADD_PHONE && nc == EN_CHANGE)
GetWindowText (hwnd, buff_num, 20);
}
static int checkNum(char *phonenum)//检验电话号码输入的正确性
{
int len=strlen(phonenum);
int flag=1;//号码全为数字
int i;
for(i=0;i<len;i++)
if(phonenum[i]<'0'||phonenum[i]>'9')
{
flag=0;//号码中有任何一个字符不为数字
break;
}
return flag;
}
int writeToFile(char *name,char *num)//添加数据写入文件
{
FILE *fp;
Note item;
strcpy(item.name,name);
strcpy(item.phone,num);
if((fp=fopen("data/phonebook.dat","a+"))==NULL)//追加方式打开文件
{
printf("open file error\n");
exit(1);
}
if (fwrite(&item,sizeof(Note),1,fp)!=1)
printf("write to file error!\n");
fclose(fp);
}
/*static void notify_proc (HWND hwnd, int id, int nc, DWORD add_data)
{
int flag;
int len1,len2;
//printf("hwnd=%d\n", hwnd);
if ( hwnd == hCtrl1 && nc == MYBUTTON_PUSHED)
{
SetWindowAdditionalData(hwnd, (DWORD)&add_pushed);
}
if(hwnd == hCtrl2 && nc == MYBUTTON_PUSHED)
{
SetWindowAdditionalData(hwnd, (DWORD)&cancel_pushed);
}
if ( hwnd == hCtrl1 && nc == MYBUTTON_UNPUSHED)
{
SetWindowAdditionalData(hwnd, (DWORD)&add_unpushed);
flag=checkNum(buff_num);
len1=GetWindowTextLength(GetDlgItem(hMainWnd,IDM_ADD_NAME));
len2=GetWindowTextLength(GetDlgItem(hMainWnd,IDM_ADD_PHONE));
if(flag == 0)
{
MessageBox(hMainWnd,"号码输入格式有误!","确定",MB_OK|MB_BASEDONPARENT);
SetWindowText (GetDlgItem (hMainWnd, IDM_ADD_PHONE), "");
return;
}
else
{
if(len1 == 0)
{
MessageBox(hMainWnd,"请输入姓名!","确定",MB_OK|MB_BASEDONPARENT);
return;
}
if(len2 == 0)
{
MessageBox(hMainWnd,"请输入号码!","确定",MB_OK|MB_BASEDONPARENT);
return;
}
writeToFile(buff_name,buff_num);
MessageBox(hMainWnd,"添加成功!","确定",MB_OK|MB_BASEDONPARENT);
}
SendNotifyMessage(hMainWnd,MSG_CLOSE,0,0);
}
if(hwnd == hCtrl2 && nc == MYBUTTON_UNPUSHED)
{
SetWindowAdditionalData(hwnd, (DWORD)&cancel_unpushed);
SendNotifyMessage(hMainWnd,MSG_CLOSE,0,0);
}
if( hwnd == hCtrl1 && nc == MYBUTTON_MOUSEMOVE)
{
SetWindowAdditionalData(hwnd, (DWORD)&add_mousemove);
}
if(hwnd == hCtrl2 && nc == MYBUTTON_MOUSEMOVE)
{
SetWindowAdditionalData(hwnd, (DWORD)&cancel_mousemove);
}
InvalidateRect (hwnd, NULL, TRUE);
}
*/
static int InitAddProc (HWND hDlg, int message, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
int flag;
int len1,len2;
switch (message)
{
case MSG_CREATE:
/*LoadBitmap (HDC_SCREEN, &add_pushed, "image/button/a3.jpg");
LoadBitmap (HDC_SCREEN, &add_unpushed, "image/button/a1.jpg");
LoadBitmap (HDC_SCREEN, &add_mousemove, "image/button/a2.jpg");
LoadBitmap (HDC_SCREEN, &cancel_pushed, "image/button/c03.jpg");
LoadBitmap (HDC_SCREEN, &cancel_unpushed, "image/button/c01.jpg");
LoadBitmap (HDC_SCREEN, &cancel_mousemove, "image/button/c02.jpg");
SetNotificationCallback (hCtrl1, notify_proc);
SetNotificationCallback (hCtrl2, notify_proc);
*/
createaddwin(hDlg);
SetNotificationCallback (GetDlgItem (hDlg, IDM_ADD_NAME), addItem_proc);
SetNotificationCallback (GetDlgItem (hDlg, IDM_ADD_PHONE), addItem_proc);
SetWindowText (GetDlgItem (hDlg,IDM_ADD_PHONE), tem_num);
strcpy(buff_num,tem_num);
strcpy(tem_num,"");
return 0;
case MSG_PAINT:
hdc = BeginPaint (hDlg);
SetBkMode(hdc, BM_TRANSPARENT);
SetTextColor(hdc, PIXEL_red);
TextOut(hdc,5, 20,"姓名");
TextOut(hdc,5, 60,"号码");
EndPaint (hDlg, hdc);
return 0;
case MSG_MOUSEMOVE:
//SetWindowAdditionalData(hCtrl1, (DWORD)&add_unpushed);
//SetWindowAdditionalData(hCtrl2, (DWORD)&cancel_unpushed);
InvalidateRect (hCtrl1, NULL, TRUE);
InvalidateRect (hCtrl2, NULL, TRUE);
break;
case MSG_COMMAND:
switch (wParam) {
case IDM_OK:
flag=checkNum(buff_num);
len1=GetWindowTextLength(GetDlgItem(hDlg,IDM_ADD_NAME));
len2=GetWindowTextLength(GetDlgItem(hDlg,IDM_ADD_PHONE));
if(flag == 0)
{
MessageBox(hDlg,"号码输入格式有误!","确定",MB_OK|MB_BASEDONPARENT);
SetWindowText (GetDlgItem (hDlg, IDM_ADD_PHONE), "");
break;
}
else {
if(len1 == 0)
{MessageBox(hDlg,"请输入姓名!","确定",MB_OK|MB_BASEDONPARENT);
break;}
if(len2 == 0)
{MessageBox(hDlg,"请输入号码!","确定",MB_OK|MB_BASEDONPARENT);
break;}
writeToFile(buff_name,buff_num);
MessageBox(hDlg,"添加成功!","确定",MB_OK|MB_BASEDONPARENT);
}
case IDM_CANCLE:
DestroyMainWindow (hDlg);//销毁主窗口,发送MSG_DESTROY消息
PostQuitMessage (hDlg );
break;
}
return 0;
case MSG_ERASEBKGND://用图片填充背景
{
HDC hdc = (HDC)wParam;
const RECT* clip = (const RECT*) lParam;
BOOL fGetDC = FALSE;
RECT rcTemp;
if (hdc == 0) {
hdc = GetClientDC (hDlg);
fGetDC = TRUE;}
if (clip) {
rcTemp = *clip;
//将屏幕坐标转换为客户区坐标
ScreenToClient (hDlg, &rcTemp.left, &rcTemp.top);
ScreenToClient (hDlg, &rcTemp.right, &rcTemp.bottom);
IncludeClipRect (hdc, &rcTemp);
}
FillBoxWithBitmap (hdc, 0, 0, 0, 0, &bmp_bkgnd);
if (fGetDC)
ReleaseDC (hdc);
return 0;
}
case MSG_CLOSE:
/* UnloadBitmap (&bmp_bkgnd);
UnloadBitmap (&cancel_pushed);
UnloadBitmap (&cancel_unpushed);
UnloadBitmap (&cancel_mousemove);
UnloadBitmap (&add_pushed);
UnloadBitmap (&add_unpushed);
UnloadBitmap (&add_mousemove);
*/
DestroyMainWindow (hDlg);
PostQuitMessage (hDlg);
return 0;
}
return DefaultMainWinProc(hDlg, message, wParam, lParam);
}
int addItem(HWND hWnd)
{
MSG Msg;
//HWND hMainWnd;
MAINWINCREATE CreateInfo;
if( LoadBitmap(HDC_SCREEN,&bmp_bkgnd,"image/background/bkgnd29.jpg"))
return -1;
RegisterMyButtonControl ();
CreateInfo.dwStyle = WS_VISIBLE | WS_BORDER | WS_CAPTION;
CreateInfo.dwExStyle = WS_EX_NONE;
CreateInfo.spCaption = "添加联系人";
CreateInfo.hMenu = 0;
CreateInfo.hCursor = GetSystemCursor(0);
CreateInfo.hIcon = 0;
CreateInfo.MainWindowProc = InitAddProc;
CreateInfo.lx = 0;
CreateInfo.ty = 0;
CreateInfo.rx = 320;
CreateInfo.by = 240;
CreateInfo.iBkColor = COLOR_lightwhite;
CreateInfo.dwAddData = 0;
CreateInfo.hHosting = hWnd;
hMainWnd= CreateMainWindow (&CreateInfo);
if (hMainWnd == HWND_INVALID)
return -1;
ShowWindow(hMainWnd, SW_SHOWNORMAL);
while (GetMessage(&Msg, hMainWnd)) {
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
UnregisterMyButtonControl ();
MainWindowThreadCleanup (hMainWnd);
return 0;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?