newmessage.c

来自「minigui PDA系统 可实现手机功能」· C语言 代码 · 共 397 行

C
397
字号
#ifndef _newMSG_C
#define _newMSG_C
#include "msgCom.h"

#include "message.h"
#include "fileMessage.h"
#include "../mybuttonreg.h"
#include "../telbook/telbook.h"

#define IDC_NMST_NUM 0X1007#define IDC_NMSTXT_NUM 0X1008#define IDC_NMBUT_NUM 0X1009#define IDC_NMMTXT_TXT 0X1010#define IDC_NMBUT_SEND 0X1011#define IDC_NMBUT_SAVE 0X1012#define IDC_NMBUT_CANCEL 0X1013#define MY_ES_DIGIT_ONLY    0x0001

BITMAP jpg_bkgnd_NM;
static BITMAP al_pushed;
static BITMAP al_unpushed;
static BITMAP al_mousemove;

static BITMAP send_pushed;
static BITMAP send_unpushed;
static BITMAP send_mousemove;

static BITMAP save_pushed;
static BITMAP save_unpushed;
static BITMAP save_mousemove;

static BITMAP cancel_pushed;
static BITMAP cancel_unpushed;
static BITMAP cancel_mousemove;

HWND NMhWnd;//窗口句柄
HWND STXThWnd,MTXThWnd;



HWND 	hCtrl_al;
HWND 	hCtrl_send;
HWND 	hCtrl_save;
HWND     hCtrl_cancel;
/*static void emLoadBitmap()
{
	LoadBitmap (HDC_SCREEN, &al_pushed, "image/button/msg_al_pushed.jpg");
       LoadBitmap (HDC_SCREEN, &al_unpushed, "image/button/msg_al_unpushed.jpg");
       LoadBitmap (HDC_SCREEN, &al_mousemove, "image/button/msg_al_mousemove.jpg");	

	LoadBitmap (HDC_SCREEN, &send_pushed, "image/button/msg_send_pushed.jpg");
       LoadBitmap (HDC_SCREEN, &send_unpushed, "image/button/msg_send_unpushed.jpg");
       LoadBitmap (HDC_SCREEN, &send_mousemove, "image/button/msg_send_mousemove.jpg");

	LoadBitmap (HDC_SCREEN, &save_pushed, "image/button/msg_save_pushed.jpg");
       LoadBitmap (HDC_SCREEN, &save_unpushed, "image/button/msg_save_unpushed.jpg");
       LoadBitmap (HDC_SCREEN, &save_mousemove, "image/button/msg_save_mousemove.jpg");
	   
	LoadBitmap (HDC_SCREEN, &cancel_pushed, "image/button/msg_cancel_pushed.jpg");
       LoadBitmap (HDC_SCREEN, &cancel_unpushed, "image/button/msg_cancel_unpushed.jpg");
       LoadBitmap (HDC_SCREEN, &cancel_mousemove, "image/button/msg_cancel_mousemove.jpg");
}
static void emUnLoadBitmap()
{
	 UnloadBitmap (&al_pushed);
        UnloadBitmap (&al_unpushed);
        UnloadBitmap (&al_mousemove);

	 UnloadBitmap (&send_pushed);
        UnloadBitmap (&send_unpushed);
        UnloadBitmap (&send_mousemove);

	 UnloadBitmap (&save_pushed);
        UnloadBitmap (&save_unpushed);
        UnloadBitmap (&save_mousemove);

	 UnloadBitmap (&cancel_pushed);
        UnloadBitmap (&cancel_unpushed);
        UnloadBitmap (&cancel_mousemove);
}	
*/
///////////////////////新信息/////////////////////////////////////////////
static void nm_notify_proc (HWND hwnd, int id, int nc, DWORD add_data)
{		
	if ( hwnd == hCtrl_al&& nc == MYBUTTON_PUSHED)
	{		
		SetWindowAdditionalData(hwnd, (DWORD)&al_pushed);
	}
	if ( hwnd == hCtrl_al && nc == BN_CLICKED&&id==IDC_NMBUT_NUM)
	{
		//SetWindowAdditionalData(hwnd, (DWORD)&al_unpushed);
		SendNotifyMessage(NMhWnd,IDC_NMBUT_NUM,0,0);
	}
	if( hwnd == hCtrl_al && nc == MYBUTTON_MOUSEMOVE)
	{	
		SetWindowAdditionalData(hwnd, (DWORD)&al_mousemove);
	}
//-----------------------------------------------------------
	if ( hwnd == hCtrl_send&& nc == MYBUTTON_PUSHED)
	{		
		SetWindowAdditionalData(hwnd, (DWORD)&send_pushed);
	}
	if ( hwnd == hCtrl_send && nc == BN_CLICKED&&id==IDC_NMBUT_SEND)
	{
		//SetWindowAdditionalData(hwnd, (DWORD)&send_unpushed);
		SendNotifyMessage(NMhWnd,IDC_NMBUT_SEND,0,0);
	}
	if( hwnd == hCtrl_send && nc == MYBUTTON_MOUSEMOVE)
	{	
		SetWindowAdditionalData(hwnd, (DWORD)&send_mousemove );
	}
//-----------------------------------------------------------------------	
	if ( hwnd == hCtrl_save&& nc == MYBUTTON_PUSHED)
	{		
		SetWindowAdditionalData(hwnd, (DWORD)&save_pushed);
	}
	if ( hwnd == hCtrl_save&& nc == BN_CLICKED&&id==IDC_NMBUT_SAVE)
	{
		//SetWindowAdditionalData(hwnd, (DWORD)&save_unpushed);
		SendNotifyMessage(NMhWnd,IDC_NMBUT_SAVE,0,0);
	}
	if( hwnd == hCtrl_save && nc == MYBUTTON_MOUSEMOVE)
	{	
		SetWindowAdditionalData(hwnd, (DWORD)&save_mousemove );
	}
//---------------------------------------------------------------------------
	if ( hwnd == hCtrl_cancel&& nc == MYBUTTON_PUSHED)
	{		
		SetWindowAdditionalData(hwnd, (DWORD)&cancel_pushed);
	}
	if ( hwnd == hCtrl_cancel&& nc == BN_CLICKED&&id==IDC_NMBUT_CANCEL)
	{
		//SetWindowAdditionalData(hwnd, (DWORD)&cancel_unpushed);
		SendNotifyMessage(NMhWnd,MSG_CLOSE,0,0);
	}
	if( hwnd == hCtrl_cancel && nc == MYBUTTON_MOUSEMOVE)
	{	
		SetWindowAdditionalData(hwnd, (DWORD)&cancel_mousemove );
	}
//---------------------------------------------------------------------------
	InvalidateRect (hwnd, NULL, TRUE);
}


//...................................................................static WNDPROC old_edit_proc;//这段代码用来控制号码输入时只能输入数字.static int RestrictedEditBox (HWND hwnd, int message, WPARAM wParam, LPARAM lParam)
{    if (message == MSG_CHAR) {        DWORD my_style = GetWindowAdditionalData (hwnd);        if ((my_style & MY_ES_DIGIT_ONLY) && (wParam < '0' || wParam > '9'))            return 0;    }    return (*old_edit_proc) (hwnd, message, wParam, lParam);}//..................................................新信息......................................................static int NEWMSGProc (HWND NMhWnd, int message, WPARAM wParam, LPARAM lParam)
{	int TXTLENGTH = 0;
	int NUMLENGTH = 0;
	    HDC hdc = (HDC)wParam;
	    const RECT* clip = (const RECT*) lParam;
	    BOOL fGetDC = FALSE;
	    RECT rcTemp;
    switch (message) {    		case MSG_CREATE:
			// emLoadBitmap();
            		STXThWnd = CreateWindowEx (CTRL_EDIT, "", WS_CHILD |WS_VISIBLE | WS_BORDER, WS_EX_TRANSPARENT, IDC_NMSTXT_NUM, 
                           100, 10, 180, 25, NMhWnd, MY_ES_DIGIT_ONLY);
             		MTXThWnd = CreateWindowEx (CTRL_MLEDIT, "", WS_CHILD |WS_BORDER | WS_VISIBLE | WS_VSCROLL | ES_AUTOWRAP | ES_BASELINE,WS_EX_TRANSPARENT,IDC_NMMTXT_TXT, 
                           80,45,220,90, NMhWnd, 0);
			old_edit_proc = SetWindowCallbackProc (STXThWnd, RestrictedEditBox);
			
			//hCtrl_al= CreateWindowEx(CTRL_MYBUTTON, 
		//								"通读录",WS_VISIBLE | WS_CHILD, WS_EX_TRANSPARENT,IDC_NMBUT_NUM,245, 10, 60, 28, NMhWnd, (DWORD)&al_unpushed);
			hCtrl_al =CreateWindow ("button",
                          "通读录",
                          WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE,
                          IDC_NMBUT_NUM,
                          10, 40, 60, 28, NMhWnd, 0);
		//	hCtrl_send = CreateWindowEx(CTRL_MYBUTTON, 
			//							"发送",WS_VISIBLE | WS_CHILD, WS_EX_TRANSPARENT,IDC_NMBUT_SEND,28, 148, 60, 28, NMhWnd, (DWORD)&send_unpushed);
			hCtrl_send =CreateWindow ("button",
                          "发送",
                          WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE |BS_BITMAP,
                          IDC_NMBUT_SEND,
                          28, 148, 60, 50, NMhWnd, (DWORD)&send_unpushed);
		//	hCtrl_save= CreateWindowEx(CTRL_MYBUTTON, 
		//								"保存",WS_VISIBLE | WS_CHILD, WS_EX_TRANSPARENT,IDC_NMBUT_SAVE,128, 148, 60, 28, NMhWnd, (DWORD)&save_unpushed);

			hCtrl_save =CreateWindow ("button",
                          "保存",
                          WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE,
                          IDC_NMBUT_SAVE,
                          128, 148, 60, 28, NMhWnd, 0);
		//	hCtrl_cancel= CreateWindowEx(CTRL_MYBUTTON, 
		//								"取消",WS_VISIBLE | WS_CHILD, WS_EX_TRANSPARENT,IDC_NMBUT_CANCEL,229, 148, 60, 28, NMhWnd, (DWORD)&cancel_unpushed);
			hCtrl_cancel =CreateWindow ("button",
                          "取消",
                          WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE,
                          IDC_NMBUT_CANCEL,
                          229, 148, 60, 28, NMhWnd, 0);

			SetNotificationCallback ( hCtrl_al, nm_notify_proc );
			SetNotificationCallback ( hCtrl_send, nm_notify_proc );
			SetNotificationCallback ( hCtrl_save, nm_notify_proc );
			SetNotificationCallback ( hCtrl_cancel, nm_notify_proc );
		
			switch ( newmsflag )
			{
				case 0: break;
				case 1:  SetWindowText ( STXThWnd, GetMsgTxt.number ); break;
				case 2:	SetWindowText ( MTXThWnd, EditMsgTxt.txt );
						SetWindowText ( STXThWnd, EditMsgTxt.number );
						break;
				case 5: SetWindowText ( MTXThWnd, GetMsgTxt.txt );break;
				case 6:   SetWindowText ( MTXThWnd, SendMsgTxt.txt );
						SetWindowText ( STXThWnd, SendMsgTxt.number );
						break;
				default: break;
			}
     		      break;
		/*	case MSG_MOUSEMOVE:
				SetWindowAdditionalData( hCtrl_al, (DWORD)&al_unpushed );
				InvalidateRect (hCtrl_al, NULL, TRUE);
				SetWindowAdditionalData( hCtrl_send, (DWORD)&send_unpushed );
				InvalidateRect (hCtrl_send, NULL, TRUE);
				SetWindowAdditionalData( hCtrl_save, (DWORD)&save_unpushed );
				InvalidateRect (hCtrl_save, NULL, TRUE);
				SetWindowAdditionalData( hCtrl_cancel, (DWORD)&cancel_unpushed );
				InvalidateRect (hCtrl_cancel, NULL, TRUE);
				break;
				*/
	/*	case MSG_COMMAND:
					switch (wParam) {


							case  IDC_NMBUT_NUM:                                                  //通讯录
								SendNotifyMessage(NMhWnd,IDC_NMBUT_NUM,0,0);
					//-----------------------------------------------------------
							case  IDC_NMBUT_SEND:                                                  //发送
								SendNotifyMessage(NMhWnd,IDC_NMBUT_SEND,0,0);
						
					//-----------------------------------------------------------------------	

							case  IDC_NMBUT_SAVE:                                            //保存
							SendNotifyMessage(NMhWnd,IDC_NMBUT_SAVE,0,0);
						
						
					//---------------------------------------------------------------------------

							case  MSG_CLOSE: 						//取消
							SendNotifyMessage(NMhWnd,MSG_CLOSE,0,0);
						

					}*/

			
		case MSG_ERASEBKGND:
			
	    		if (hdc == 0) {
				hdc = GetClientDC (NMhWnd);
				fGetDC = TRUE;
	 		   }       
		    
	    		if (clip) {
				rcTemp = *clip;
				ScreenToClient (NMhWnd, &rcTemp.left, &rcTemp.top);
				ScreenToClient (NMhWnd, &rcTemp.right, &rcTemp.bottom);
				IncludeClipRect (hdc, &rcTemp);
	    		}

//	  		  FillBoxWithBitmap (hdc, rcTemp.left, rcTemp.top, 0, 0, &jpg_bkgnd_NM);
			FillBoxWithBitmap (hdc, 0, 0, 320, 192, &jpg_bkgnd_NM);
			TextOut (  hdc,10,12,"电话号:");
	    		if (fGetDC)
				ReleaseDC (hdc);
	 		   return 0;
		  case  IDC_NMBUT_NUM:
		  	telbook(NMhWnd);
		  break;		  case IDC_NMBUT_SAVE:
		  	///////////////////////////////////////////////
			TXTLENGTH=GetWindowTextLength (MTXThWnd);
			if ( TXTLENGTH >0 )
			{
				GetWindowText(MTXThWnd, EditMsgTxt.txt,MTXThWnd);
			}
		  	NUMLENGTH=GetWindowTextLength (STXThWnd);
			if ( NUMLENGTH > 0 )
			{
				GetWindowText(STXThWnd, EditMsgTxt.number,TXTLENGTH);
			}
			if ( TXTLENGTH == 0 && NUMLENGTH == 0 )
			{
				MessageBox (NMhWnd,"无存储信息","草稿箱", MB_OK | MB_ICONINFORMATION);
				break;
			}
			if ( TXTLENGTH == 0 && NUMLENGTH > 0 )
			{
				MessageBox (NMhWnd,"请输入存储内容","草稿箱", MB_OK | MB_ICONINFORMATION);
				break;
			}
			if ( TXTLENGTH > 0 && NUMLENGTH == 0 )
			{
				MessageBox (NMhWnd,"请输入存储号码","草稿箱", MB_OK | MB_ICONINFORMATION);
				break;
			}
			msg_time = time ( &msg_time );
			memcpy ( EditMsgTxt.time, ctime ( &msg_time ), 24 );
			EditMsgTxt.time[24] = '\0';
			EditMsgFp = fopen ("data/EditMsg.txt","a+");
			fwrite ( &EditMsgTxt,  sizeof(msg), 1, EditMsgFp );
			printf ("%s\n",EditMsgTxt.number);
			printf ("%s\n",EditMsgTxt.txt);
			printf ("保存 \n");
			fclose (EditMsgFp);
			MessageBox (NMhWnd,"草稿箱", "已存储",MB_OK | MB_ICONINFORMATION);
			//--------------------------------------------
		  break;		  case IDC_NMBUT_SEND:	
			TXTLENGTH=GetWindowTextLength (STXThWnd);			if ( TXTLENGTH == 0 )				{				MessageBox (NMhWnd, "无发送号码", "请输入号码", MB_OK | MB_ICONINFORMATION);
				break;}
			GetWindowText(STXThWnd, SendMsgTxt.number,TXTLENGTH);
			TXTLENGTH=GetWindowTextLength (MTXThWnd);			if ( TXTLENGTH == 0 )				{				MessageBox (NMhWnd, "无发送内容", "请输入内容", MB_OK | MB_ICONINFORMATION);
				break;}		  	GetWindowText(MTXThWnd, SendMsgTxt.txt,MTXThWnd);
			gprs_msg(SendMsgTxt.number,SendMsgTxt.txt);
			MessageBox (NMhWnd,"已发送", "短信",MB_OK | MB_ICONINFORMATION);
			/////////////////////////////////////////////
			msg_time = time ( &msg_time );
			memcpy ( SendMsgTxt.time, ctime ( &msg_time ), 24 );
			SendMsgTxt.time[24] = '\0';
			SendMsgFp = fopen ( "data/SendMsg.txt", "a+" );
			fwrite ( &SendMsgTxt, sizeof(msg), 1, SendMsgFp);
			fclose ( SendMsgFp );
			//-------------------------------------------
		  break;
case MSG_CLOSE:
	//emUnLoadBitmap();
	UnloadBitmap (&send_unpushed);
       DestroyMainWindow(NMhWnd);
       PostQuitMessage(NMhWnd);
        break;       
    }      return DefaultMainWinProc(NMhWnd,message,wParam,lParam);
}//^^^^^^^^^^^^^^^^新信息^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^int NewMSG(HWND hWnd)
{
    MSG Msg;
    MAINWINCREATE CreateInfo;
    RegisterMyButtonControl ();
    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=NEWMSGProc;
    CreateInfo.lx=0;    CreateInfo.ty=0;    CreateInfo.rx=320;    CreateInfo.by=216;    CreateInfo.iBkColor=GetWindowElementColor (BKC_CONTROL_DEF);    CreateInfo.dwAddData=0;    CreateInfo.hHosting=hWnd;
 
     LoadBitmap (HDC_SCREEN, &jpg_bkgnd_NM, "./image/background/bkgnd29.jpg");
	LoadBitmap (HDC_SCREEN, &send_unpushed, "image/button/msg_send.jpg");
    NMhWnd=CreateMainWindow(&CreateInfo); 
    ShowWindow(NMhWnd,SW_SHOWNORMAL);
    while(GetMessage(&Msg,NMhWnd)) 
    {        TranslateMessage(&Msg);        DispatchMessage(&Msg);    }    MainWindowThreadCleanup(NMhWnd);
    UnloadBitmap (&jpg_bkgnd_NM);
    UnregisterMyButtonControl ();
    return 0; 	
}
#endif
///////////////////////新信息/////////////////////////////////////////////

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?