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 + -
显示快捷键?