modify.c
来自「minigui PDA系统 可实现手机功能」· C语言 代码 · 共 273 行
C
273 行
/*修改联系人信息*/
#include "telbook.h"
#include "../mybuttonreg.h"
/*static BITMAP ok_pushed;
static BITMAP ok_unpushed;
static BITMAP ok_mousemove;
static BITMAP cancel_pushed;
static BITMAP cancel_unpushed;
static BITMAP cancel_mousemove;
*/
static HWND hCtrl1;
static HWND hCtrl2;
static HWND hMainWnd;
void createmdfwin(HWND hwnd)
{
CreateWindowEx(CTRL_EDIT, mod_name,WS_VISIBLE | WS_TABSTOP | WS_BORDER,WS_EX_TRANSPARENT, IDM_MD_NAME,40, 20, 100, 25, hwnd, 0);
CreateWindowEx(CTRL_EDIT, mod_num,WS_VISIBLE | WS_TABSTOP | WS_BORDER,WS_EX_TRANSPARENT, IDM_MD_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)&ok_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 modify_proc (HWND hwnd, int id, int nc, DWORD add_data)
{
//获取输入框中的信息,存入buff_name和buff_num中
GetWindowText (GetDlgItem (GetParent(hwnd), IDM_MD_NAME), buff_name, 30);
GetWindowText (GetDlgItem (GetParent(hwnd), IDM_MD_PHONE), buff_num, 20);
}
static int checkNum(char *phonenum)
{
int len=strlen(phonenum);
int flag=1, i;
for(i=0;i<len;i++)
if(phonenum[i]<'0'||phonenum[i]>'9')
{
flag=0;
break;
}
return flag;
}
int modifyFile()//更新文件内容
{
FILE *fp;
int i=0;
Note item[100];
int c=0;//记录个数
if((fp=fopen("data/phonebook.dat","r+"))==NULL)
{
printf("open file error\n");
exit(1);
}
while(!feof(fp))
if(fread(&item[i],sizeof(Note),1,fp)==1)
{
i++;
c++;
}
rewind(fp);
for(i=0;i<c;i++)
{
if(strcmp(item[i].name,mod_name)==0)
{
strcpy(item[i].name,buff_name);
strcpy(item[i].phone,buff_num);
}
if(fwrite(&item[i],sizeof(Note),1,fp)!=1)
{printf("modify file error!\n");
exit(1);
}
}
fclose(fp);
}
/*static void notify_proc (HWND hwnd, int id, int nc, DWORD add_data)
{
int flag;
//printf("hwnd=%d\n", hwnd);
if ( hwnd == hCtrl1 && nc == MYBUTTON_PUSHED)
{
SetWindowAdditionalData(hwnd, (DWORD)&ok_pushed);
}
if(hwnd == hCtrl2 && nc == MYBUTTON_PUSHED)
{
SetWindowAdditionalData(hwnd, (DWORD)&cancel_pushed);
}
if ( hwnd == hCtrl1 && nc == MYBUTTON_UNPUSHED)
{
SetWindowAdditionalData(hwnd, (DWORD)&ok_unpushed);
flag=checkNum(buff_num);
if(flag == 0)
{
MessageBox(hMainWnd,"号码输入格式有误!","确定",MB_OK|MB_BASEDONPARENT);
SetWindowText (GetDlgItem (hMainWnd, IDM_MD_NAME), mod_name);
SetWindowText (GetDlgItem (hMainWnd, IDM_MD_PHONE), mod_num);
return;
}
else
{
modifyFile();
MessageBox(hMainWnd,"修改成功!","确定",MB_OK| MB_BASEDONPARENT);
}
}
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)&ok_mousemove);
}
if(hwnd == hCtrl2 && nc == MYBUTTON_MOUSEMOVE)
{
SetWindowAdditionalData(hwnd, (DWORD)&cancel_mousemove);
}
InvalidateRect (hwnd, NULL, TRUE);
}
*/
static int InitMdfProc (HWND hDlg, int message, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
int flag;
switch (message) {
case MSG_CREATE:
/*LoadBitmap (HDC_SCREEN, &ok_pushed, "image/button/u3.jpg");
LoadBitmap (HDC_SCREEN, &ok_unpushed, "image/button/u1.jpg");
LoadBitmap (HDC_SCREEN, &ok_mousemove, "image/button/u2.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");
*/
createmdfwin(hDlg);
// SetNotificationCallback (hCtrl1, notify_proc);
//SetNotificationCallback (hCtrl2, notify_proc);
SetNotificationCallback (GetDlgItem (hDlg, IDM_MD_NAME), modify_proc);
SetNotificationCallback (GetDlgItem (hDlg, IDM_MD_PHONE), modify_proc);
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)&ok_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);
if(flag == 0)
{
MessageBox(hDlg,"号码输入格式有误!","确定",MB_OK|MB_BASEDONPARENT);
SetWindowText (GetDlgItem (hDlg, IDM_MD_NAME), mod_name);
SetWindowText (GetDlgItem (hDlg, IDM_MD_PHONE), mod_num);
break;
}
else {
modifyFile();
MessageBox(hDlg,"修改成功!","确定",MB_OK| MB_BASEDONPARENT);
}
case IDM_CANCLE:
DestroyMainWindow (hDlg);
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 (&ok_pushed);
UnloadBitmap (&ok_unpushed);
UnloadBitmap (&ok_mousemove);*/
DestroyMainWindow (hDlg);
PostQuitMessage (hDlg );
return 0;
}
return DefaultMainWinProc(hDlg, message, wParam, lParam);
}
int modify(HWND hWnd)
{
HDC hdc;
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 = InitMdfProc;
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 + -
显示快捷键?