⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wndproc.cpp

📁 本软件是一个通迅录
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#include"wndproc.h"

WMMSG wmmsg[]={{WM_CREATE, OnCreate}, {WM_SIZE, OnSize}, {WM_PAINT, OnPaint}, 
{WM_DESTROY, OnDestroy}, {WM_COMMAND, OnCommand}, { WM_LBUTTONDOWN, OnlButtonDown}, 
{WM_KEYDOWN, OnKeyDown}, {WM_SETFOCUS, OnSetFocus}, {WM_KILLFOCUS, OnKillFocus}, 
{WM_CHAR, OnChar}, { WM_LBUTTONUP, OnlButtonUp},{WM_VSCROLL, OnvScroll}};

WMMSG menumsg[]={{IDM_QUIT, OnQuit}, {IDM_FINDNUMBER, OnFindNumber},{IDM_ABOUT, OnAbout},
{IDM_FINDPERSON, OnFindPerson},{IDM_DELETEONE, OnDeleteOne},{IDM_ADDNEW, OnAddNew}, 
{IDM_EDITONE, OnEditOne}};

RETCODE retcode;
SQLHENV henv=SQL_NULL_HENV;
SQLHDBC hdbc=SQL_NULL_HDBC;
SQLHSTMT hstmt=SQL_NULL_HSTMT;
UCHAR szDSN[SQL_MAX_DSN_LENGTH]="memo";
SDWORD sdlen;

char szSQL[200]="SELECT mm.mm_id, mm.groups, mm.name, mm.number1, mm.number2, mm.gender, mm.birthday, mm.address FROM mm";
int cxChar, cyChar, nRecNo=0, cxClient, cyClient, nNo=-1;

char szID[500][5];
char szGroup[500][3];
TCHAR szName[500][7];
char szNumber1[500][20];
char szNumber2[500][20];
TCHAR szGender[500][3];
char szBirthday[500][20];
TCHAR szAddress[500][20];

TEXTMETRIC tm;
SCROLLINFO si;

int SToI( char *str)
{
	int n=0;
	for(int i=0; i< strlen( str); i++)
	{
		n=n*10+str[i]-0x30;
	}
	return n;
}

BOOL ConnToDSN( HWND hwnd, char * szSql)
{
	SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
	retcode=SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt);
	if( retcode!=SQL_SUCCESS) 
	{
		MessageBox( hwnd, TEXT("语句句柄错误!"), TEXT("错误提示"),
			MB_ICONWARNING|MB_OK);
		DestroyWindow( hwnd);
	}

	retcode=SQLExecDirect( hstmt, (unsigned char*)szSql, SQL_NTS);
	if( retcode!=SQL_SUCCESS)
	{
		MessageBox( hwnd, TEXT("查询时错误!"), TEXT("错误提示"),
			MB_ICONWARNING|MB_OK);
		DestroyWindow( hwnd);
	}
	return true;
}


BOOL ReadData()
{
	nRecNo=0;
	for(retcode=SQLFetch( hstmt); retcode==SQL_SUCCESS; retcode=SQLFetch(hstmt))
	{
		SQLGetData(hstmt, 1, SQL_C_CHAR, szID[nRecNo], 5, &sdlen);
		SQLGetData(hstmt, 2, SQL_C_CHAR, szGroup[nRecNo], 3, &sdlen);
		SQLGetData(hstmt, 3, SQL_C_CHAR, szName[nRecNo], 7, &sdlen);
		SQLGetData(hstmt, 4, SQL_C_CHAR, szNumber1[nRecNo], 13, &sdlen);
		SQLGetData(hstmt, 5, SQL_C_CHAR, szNumber2[nRecNo], 13, &sdlen);
		SQLGetData(hstmt, 6, SQL_C_CHAR, szGender[nRecNo], 3, &sdlen);
		SQLGetData(hstmt, 7, SQL_C_CHAR, szBirthday[nRecNo], 20, &sdlen);
		SQLGetData(hstmt, 8, SQL_C_CHAR, szAddress[nRecNo], 20, &sdlen);
		nRecNo++;
	}

	return true;
}

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	int i,wmID,wmEvent;

	wmID=LOWORD(message);
	wmEvent=HIWORD(message);

	for(i=0;i<(sizeof(wmmsg)/sizeof(wmmsg[0]));i++)
	{
		if(wmID==(int)wmmsg[i].id)
		{
			(*wmmsg[i].lpfn)(hwnd, message, wParam, lParam);
		}
	}
	return DefWindowProc( hwnd, message, wParam, lParam);
}

LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
	switch (message)
	{
		case WM_INITDIALOG:
				return TRUE;

		case WM_COMMAND:
			if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) 
			{
				EndDialog(hDlg, LOWORD(wParam));
				return TRUE;
			}
			break;
	}

	return 0;
}

LRESULT CALLBACK FindNumber(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
	switch (message)
	{
		case WM_INITDIALOG:
				return TRUE;

		case WM_COMMAND:
			if (LOWORD(wParam) == IDCANCEL) 
			{
				EndDialog(hDlg, LOWORD(wParam));
				return TRUE;
			}
			if(LOWORD(wParam) == IDOK)
			{
				char Buffer[20];
				GetDlgItemText( hDlg, IDC_NUMBER, Buffer, 20);
				if( lstrlen( Buffer)==0)
				{
					SetDlgItemText( hDlg, IDC_NUMBER2, "");
					MessageBox( hDlg, "你没有输入任何内容!", "错误提示", MB_ICONWARNING|MB_OK);
				}
				else
				{
				for(int i=0; i<nRecNo; i++)
				{
					if( strcmp( Buffer, szNumber1[i])==0 || strcmp( Buffer, szNumber2[i])==0)
					{
						SetDlgItemText( hDlg, IDC_NUMBER2, szName[i]);
						return 0;
					}
				}
				if(i>=nRecNo)
				{
					SetDlgItemText( hDlg, IDC_NUMBER, "");
					SetDlgItemText( hDlg, IDC_NUMBER2, "");
					MessageBox( hDlg, TEXT("没有此人"), TEXT("搜索提示"), MB_ICONWARNING|MB_OK);
				}
				}
			}
			break;
	}

	return 0;
}

LRESULT CALLBACK FindPerson(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
	switch (message)
	{
		case WM_INITDIALOG:
				return TRUE;

		case WM_COMMAND:
			if ( LOWORD(wParam) == IDCANCEL) 
			{
				EndDialog(hDlg, LOWORD(wParam));
				return TRUE;
			}
			if(LOWORD(wParam) == IDOK )
			{
				char Buffer[20];
				GetDlgItemText( hDlg, IDC_NAME, Buffer, 20);
				if( lstrlen( Buffer)==0)
				{
					SetDlgItemText( hDlg, IDC_NAME2, "");
					SetDlgItemText( hDlg, IDC_NAME3, "");
					MessageBox( hDlg, "你没有输入任何内容!", "错误提示", MB_ICONWARNING|MB_OK);
				}
				else
				{
				for(int i=0; i<nRecNo; i++)
				{
					if( strcmp( Buffer, szName[i])==0)
					{
						SetDlgItemText( hDlg, IDC_NAME2, szNumber1[i]);
						SetDlgItemText( hDlg, IDC_NAME3, szNumber2[i]);
						return 0;
					}
				}
				if(i>=nRecNo) 
				{	
					SetDlgItemText( hDlg, IDC_NAME, "");
					SetDlgItemText( hDlg, IDC_NAME2, "");
					SetDlgItemText( hDlg, IDC_NAME3, "");
					MessageBox( hDlg, TEXT("没有此人"), TEXT("搜索提示"), MB_ICONWARNING|MB_OK);
				}
				}
			}
			break;
	}

	return 0;
}

LRESULT CALLBACK DeleteOne(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
	switch (message)
	{
		case WM_INITDIALOG:
			return TRUE;

		case WM_COMMAND:
			if (LOWORD(wParam) == IDCANCEL ) 
			{
				EndDialog(hDlg, LOWORD(wParam));
				return TRUE;
			}
			if(LOWORD(wParam) == IDOK2)
			{
				char Buffer[20], DelSql[100];
				GetDlgItemText( hDlg, IDC_DELETE2, Buffer, 20);
				if( lstrlen( Buffer)==0)
				{
					MessageBox( hDlg, "你没有输入任何内容!", "错误提示", MB_ICONWARNING|MB_OK);
				}
				else
				{
				for(int i=0; i<nRecNo; i++)
				{
					if( strcmp( Buffer, szNumber1[i])==0 || strcmp( Buffer, szNumber2[i])==0)
					{
						wsprintf( DelSql, TEXT("DELETE FROM mm WHERE mm.number1=\'%s\' OR mm.number2=\'%s\'"), Buffer, Buffer);
						ConnToDSN( GetParent( hDlg), DelSql);
						ConnToDSN( GetParent( hDlg), szSQL);
						ReadData();
						si.fMask=SIF_ALL;
						si.nMax=nRecNo;
						si.nPos=0;
						SetScrollInfo( GetParent( hDlg), SB_VERT, &si, true);
						OnPaint( GetParent( hDlg), 0, 0, 0);
						InvalidateRect( GetParent( hDlg), NULL, true);
						MessageBox( hDlg, TEXT("删除成功"), "删除提示", 0);
						SetDlgItemText( hDlg, IDC_DELETE2, "");

						return 0;
					}
				}
				if(i>=nRecNo)
				{
					SetDlgItemText( hDlg, IDC_DELETE2, "");
					MessageBox( hDlg, TEXT("没有此人"), TEXT("搜索提示"), MB_ICONWARNING|MB_OK);
				}
				}

			}
			if(LOWORD(wParam) == IDOK)
			{
				char Buffer[20], DelSql[100];
				GetDlgItemText( hDlg, IDC_DELETE1, Buffer, 20);
				if( lstrlen( Buffer)==0)
				{
					MessageBox( hDlg, "你没有输入任何内容!", "错误提示", MB_ICONWARNING|MB_OK);
				}
				else
				{
				for(int i=0; i<nRecNo; i++)
				{
					if( strcmp( Buffer, szName[i])==0 )
					{
						wsprintf( DelSql, TEXT("DELETE FROM mm WHERE mm.name=N\'%s\'"), Buffer);
						ConnToDSN( GetParent( hDlg), DelSql);
						ConnToDSN( GetParent( hDlg), szSQL);
						ReadData();
						si.fMask=SIF_ALL;
						si.nMax=nRecNo;
						si.nPos=0;
						SetScrollInfo( GetParent( hDlg), SB_VERT, &si, true);
						OnPaint( GetParent( hDlg), 0, 0, 0);
						InvalidateRect( GetParent( hDlg), NULL, true);
						MessageBox( hDlg, TEXT("删除成功"), "删除提示", 0);
						SetDlgItemText( hDlg, IDC_DELETE1, "");

						return 0;
					}
				}
				if(i>=nRecNo)
				{
					SetDlgItemText( hDlg, IDC_DELETE1, "");
					MessageBox( hDlg, TEXT("没有此人"), TEXT("搜索提示"), MB_ICONWARNING|MB_OK);
				}
				}

			}

			break;
	}

	return 0;
}

LRESULT CALLBACK EditOne(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
	switch (message)
	{
		case WM_INITDIALOG:
			return TRUE;

		case WM_COMMAND:
			if (LOWORD(wParam) == IDCANCEL) 
			{
				EndDialog(hDlg, LOWORD(wParam));
				return TRUE;
			}
			if(LOWORD(wParam) == IDOK3)
			{
				char Buffer[20], SelSql[100];
				GetDlgItemText( hDlg, IDC_LOOK1, Buffer, 20);
				if( lstrlen( Buffer)==0)
				{
					MessageBox( hDlg, "你没有输入任何内容!", "错误提示", MB_ICONWARNING|MB_OK);
				}
				else
				{
				for(int i=0; i<nRecNo; i++)
				{
					if( strcmp( Buffer, szName[i])==0 )
					{
						nNo=i;
						SetDlgItemText( hDlg, IDC_GROUP, szGroup[i]);
						SetDlgItemText( hDlg, IDC_NAME, szName[i]);
						SetDlgItemText( hDlg, IDC_NUMBER1, szNumber1[i]);
						SetDlgItemText( hDlg, IDC_NUMBER2, szNumber2[i]);
						SetDlgItemText( hDlg, IDC_GENDER, szGender[i]);
						SetDlgItemText( hDlg, IDC_BIRTHDAY, szBirthday[i]);
						SetDlgItemText( hDlg, IDC_ADDRESS, szAddress[i]);
						break;
					}
				
				}
				if(i>=nRecNo)
				{
					SetDlgItemText( hDlg, IDC_LOOK1, "");
					MessageBox( hDlg, TEXT("没有此人"), TEXT("搜索提示"), MB_ICONWARNING|MB_OK);
				}
				}

			}

			if(LOWORD(wParam) == IDOK2)
			{
				char Buffer[20], SelSql[100];
				GetDlgItemText( hDlg, IDC_LOOK2, Buffer, 20);
				if( lstrlen( Buffer)==0)
				{
					MessageBox( hDlg, "你没有输入任何内容!", "错误提示", MB_ICONWARNING|MB_OK);
				}
				else
				{
				for(int i=0; i<nRecNo; i++)
				{
					if( strcmp( Buffer, szNumber1[i])==0 || strcmp(Buffer, szNumber2[i])==0 )
					{
						nNo=i;
						SetDlgItemText( hDlg, IDC_GROUP, szGroup[i]);
						SetDlgItemText( hDlg, IDC_NAME, szName[i]);
						SetDlgItemText( hDlg, IDC_NUMBER1, szNumber1[i]);
						SetDlgItemText( hDlg, IDC_NUMBER2, szNumber2[i]);
						SetDlgItemText( hDlg, IDC_GENDER, szGender[i]);
						SetDlgItemText( hDlg, IDC_BIRTHDAY, szBirthday[i]);
						SetDlgItemText( hDlg, IDC_ADDRESS, szAddress[i]);
						
						break;
					}
					
				}
				if(i>=nRecNo)
				{
					SetDlgItemText( hDlg, IDC_LOOK2, "");
					MessageBox( hDlg, TEXT("没有此人"), TEXT("搜索提示"), MB_ICONWARNING|MB_OK);
				}
				}

			}

			if( LOWORD(wParam)==IDOK)
			{
				if( nNo==-1)
				{
					MessageBox( hDlg, TEXT("你没有修改任何内容!"), TEXT("提醒"), MB_ICONINFORMATION|MB_OK);
				}
				else
				{
				char szGp[3], szNm1[20], szNm2[20], szGd[3], szBd[20];
				TCHAR szNm[7], szAdd[20], UpSql[500], Buffer[40];
				BOOL f=false;
				int b;

				GetDlgItemText( hDlg, IDC_GROUP, szGp, 3);
				GetDlgItemText( hDlg, IDC_NAME, szNm, 7);
				GetDlgItemText( hDlg, IDC_NUMBER1, szNm1, 20);
				GetDlgItemText( hDlg, IDC_NUMBER2, szNm2, 20);
				GetDlgItemText( hDlg, IDC_GENDER, szGd, 3);
				GetDlgItemText( hDlg, IDC_BIRTHDAY, szBd, 20);
				GetDlgItemText( hDlg, IDC_ADDRESS, szAdd, 20);
				b=SToI( szGp);
				if( lstrlen(szGd)==0 || (b<1 || b>4) || lstrlen( szGp)==0 || (strcmp( szGd, TEXT("男"))!=0 && strcmp( szGd, TEXT("女"))!=0))
				{
					MessageBox( hDlg, TEXT("修改的内容格式错误,请检查后再单击修改。"), TEXT("错误提示"), MB_ICONWARNING | MB_OK);
				
				}
				else
				{


				wsprintf( UpSql, TEXT("UPDATE mm \nSET "));
				if(strcmp( szGp, szGroup[nNo])!=0) 
				{
					if(f) strcat( UpSql, ", ");
					wsprintf( Buffer, TEXT(" mm.groups=%s "), szGp);
					strcat( UpSql, Buffer);
					f=true;
				}
				if(strcmp( szNm, szName[nNo])!=0) 
				{
					if(f) strcat( UpSql, ", ");
					wsprintf( Buffer, TEXT(" mm.name=N\'%s\'"), szNm);
					strcat( UpSql, Buffer);
					f=true;
				}
				if(strcmp( szNm1, szNumber1[nNo])!=0) 
				{
					if(f) strcat( UpSql, ", ");
					wsprintf( Buffer, TEXT(" mm.number1=\'%s\'"), szNm1);
					strcat( UpSql, Buffer);
					f=true;
				}
				if(strcmp( szNm2, szNumber2[nNo])!=0) 
				{
					if(f) strcat( UpSql, ", ");
					wsprintf( Buffer, TEXT(" mm.number2=\'%s\'"), szNm2);
					strcat( UpSql, Buffer);
					f=true;
				}
				if(strcmp( szGd, szGender[nNo])!=0) 
				{
					if(f) strcat( UpSql, ", ");
					wsprintf( Buffer, TEXT(" mm.gender=N\'%s\'"), szGd);
					strcat( UpSql, Buffer);
					f=true;
				}
				if(strcmp( szBd, szBirthday[nNo])!=0) 
				{
					if(f) strcat( UpSql, ", ");
					wsprintf( Buffer, TEXT(" mm.birthday=N\'%s\'"), szBd);
					strcat( UpSql, Buffer);
					f=true;
				}

⌨️ 快捷键说明

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