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