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

📄 wndproc.cpp

📁 本软件是一个通迅录
💻 CPP
📖 第 1 页 / 共 2 页
字号:

				if(strcmp( szAdd, szAddress[nNo])!=0) 
				{
					if(f) strcat( UpSql, ", ");
					wsprintf( Buffer, TEXT(" mm.address=N\'%s\'"), szAdd);
					strcat( UpSql, Buffer);
					f=true;
				}
				
				if( f)
				{
					wsprintf( Buffer, TEXT("\nWHERE mm.mm_id=%s"), szID[nNo]);
					strcat( UpSql, Buffer);
					ConnToDSN( GetParent( hDlg), UpSql);
					ConnToDSN( GetParent( hDlg), szSQL);
					ReadData();
					si.fMask=SIF_ALL;
					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_GROUP, "");
					SetDlgItemText( hDlg, IDC_NAME, "");
					SetDlgItemText( hDlg, IDC_NUMBER1, "");
					SetDlgItemText( hDlg, IDC_NUMBER2, "");
					SetDlgItemText( hDlg, IDC_GENDER, "");
					SetDlgItemText( hDlg, IDC_BIRTHDAY, "");
					SetDlgItemText( hDlg, IDC_ADDRESS, "");
					SetDlgItemText( hDlg, IDC_LOOK1, "");
					SetDlgItemText( hDlg, IDC_LOOK2, "");

				}
				else
				{
					MessageBox(hDlg, TEXT("没有修改内容"), TEXT("提示"), MB_ICONINFORMATION|MB_OK);
					SetDlgItemText( hDlg, IDC_GROUP, "");
					SetDlgItemText( hDlg, IDC_NAME, "");
					SetDlgItemText( hDlg, IDC_NUMBER1, "");
					SetDlgItemText( hDlg, IDC_NUMBER2, "");
					SetDlgItemText( hDlg, IDC_GENDER, "");
					SetDlgItemText( hDlg, IDC_BIRTHDAY, "");
					SetDlgItemText( hDlg, IDC_ADDRESS, "");
					SetDlgItemText( hDlg, IDC_LOOK1, "");
					SetDlgItemText( hDlg, IDC_LOOK2, "");

				}
				}
				}

				nNo=-1;
			}
			break;
	}

	return 0;
}

LRESULT CALLBACK AddNew(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 szId[5], szGp[3], szNm1[20], szNm2[20], szGd[3], szBd[20];
				TCHAR szNm[7], szAdd[20], szSql[300];
				int n=1,b;
				BOOL f=true;

				for(int j=0; j<nRecNo && f; j++)
				{
					b=SToI( szID[j]);
					if(n==b)
					{
						n++;
					}
					else
					{
						f=0;
					}
				}
				wsprintf( szId, TEXT("%d"), n);
				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);
				b=SToI( szGp);
				if( lstrlen(szGd)==0 || (b<1 || b>4) || lstrlen( szGp)==0 || (strcmp( szGd, TEXT("男"))!=0 && strcmp( szGd, TEXT("女"))!=0))
				{
					SetDlgItemText( hDlg, IDC_GROUP, "");
					SetDlgItemText( hDlg, IDC_NAME, "");
					SetDlgItemText( hDlg, IDC_NUMBER1, "");
					SetDlgItemText( hDlg, IDC_NUMBER2, "");
					SetDlgItemText( hDlg, IDC_GENDER, "");
					SetDlgItemText( hDlg, IDC_BIRTHDAY, "");
					SetDlgItemText( hDlg, IDC_ADDRESS, "");
					MessageBox( hDlg, TEXT("输入错误,请重新输入。"), TEXT("错误提示"), MB_ICONWARNING | MB_OK);
				
				}
				else
				{
					GetDlgItemText( hDlg, IDC_BIRTHDAY, szBd, 20);
					GetDlgItemText( hDlg, IDC_ADDRESS, szAdd, 20);
					wsprintf( szSql, TEXT("INSERT INTO mm\nvalues( %s, %s, N\'%s\', \'%s\', \'%s\', N\'%s\', N\'%s\', N\'%s\')"), szId, szGp, szNm, szNm1, szNm2, szGd, szBd, szAdd);
					ConnToDSN( GetParent( hDlg), szSql);
					MessageBox( hDlg, "成功", "提示", 0);
					SetDlgItemText( hDlg, IDC_GROUP, "");
					SetDlgItemText( hDlg, IDC_NAME, "");
					SetDlgItemText( hDlg, IDC_NUMBER1, "");
					SetDlgItemText( hDlg, IDC_NUMBER2, "");
					SetDlgItemText( hDlg, IDC_GENDER, "");
					SetDlgItemText( hDlg, IDC_BIRTHDAY, "");
					SetDlgItemText( hDlg, IDC_ADDRESS, "");
					wsprintf( szID[nRecNo],"%s",szId);
					wsprintf( szGroup[nRecNo], "%s", szGp);
					wsprintf( szName[nRecNo], "%s", szNm);
					wsprintf( szNumber1[nRecNo],"%s",szNm1);
					wsprintf( szNumber2[nRecNo], "%s", szNm2);
					wsprintf( szGender[nRecNo],"%s",szGd);
					wsprintf( szBirthday[nRecNo], "%s", szBd);
					wsprintf( szAddress[nRecNo],"%s",szAdd);

					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);
				}
			}
			break;
	}

	return 0;
}

long OnFindNumber(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	DialogBox( (HINSTANCE)GetWindowLong( hwnd, GWL_HINSTANCE), (LPCTSTR)IDD_FINDNUMBER, hwnd, (DLGPROC)FindNumber);
	return 0;
}
long OnFindPerson(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	DialogBox( (HINSTANCE)GetWindowLong( hwnd, GWL_HINSTANCE), (LPCTSTR)IDD_FINDPERSON, hwnd, (DLGPROC)FindPerson);
	return 0;
}

long OnDeleteOne(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	DialogBox( (HINSTANCE)GetWindowLong( hwnd, GWL_HINSTANCE), (LPCTSTR)IDD_DELETEONE, hwnd, (DLGPROC)DeleteOne);

	return 0;
}

long OnAddNew(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	DialogBox( (HINSTANCE)GetWindowLong( hwnd, GWL_HINSTANCE), (LPCTSTR)IDD_ADDNEW, hwnd, (DLGPROC)AddNew);

	return 0;
}

long OnEditOne(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	DialogBox( (HINSTANCE)GetWindowLong( hwnd, GWL_HINSTANCE), (LPCTSTR)IDD_EDITONE, hwnd, (DLGPROC)EditOne);
	return 0;
}

long OnQuit(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	DestroyWindow(hwnd);
	return 0;
}

long OnAbout(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	DialogBox( (HINSTANCE)GetWindowLong( hwnd, GWL_HINSTANCE), (LPCTSTR)IDD_ABOUTBOX, hwnd, (DLGPROC)About);
	return 0;
}

long OnCreate(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	HDC hdc;
	hdc=GetDC( hwnd);
	GetTextMetrics( hdc, &tm);
	cxChar=tm.tmAveCharWidth;
	cyChar=tm.tmHeight+tm.tmExternalLeading;
	ReleaseDC( hwnd, hdc);

	retcode=SQLAllocHandle( SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
	retcode=SQLSetEnvAttr( henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, SQL_IS_INTEGER);

	retcode=SQLAllocHandle( SQL_HANDLE_DBC, henv, &hdbc);
	retcode=SQLConnect(hdbc, szDSN, strlen((LPCTSTR)szDSN), NULL, 0, NULL, 0);

	if((retcode==SQL_SUCCESS) || (retcode==SQL_SUCCESS_WITH_INFO))
	{
		MessageBox( hwnd, TEXT("数据库连接成功,你可以操作了!"), TEXT("成功提示"),
			MB_ICONINFORMATION|MB_OK);
	}
	else
	{
		int yn=MessageBox( hwnd, TEXT("数据库连接失败,退出程序!"), TEXT("错误提示"),
			MB_ICONWARNING|MB_OK);
		DestroyWindow( hwnd);
	}
		ConnToDSN( hwnd, szSQL);
		ReadData();

	return 0;
}

long OnSize(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	cxClient=LOWORD( lParam);
	cyClient=HIWORD( lParam);
	si.cbSize=sizeof(si);
	si.fMask= SIF_RANGE|SIF_PAGE;
	si.nMin=0;
	si.nMax=nRecNo;
	si.nPage=(cyClient/(cyChar*2)-2);

	SetScrollInfo( hwnd, SB_VERT, &si, true);
	

	return 0;
}

long OnlButtonDown(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	return 0;
}

long OnKeyDown(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	switch(wParam)
	{
	case VK_HOME:
		SendMessage( hwnd, WM_VSCROLL, SB_TOP, 0);
		break;
	case VK_END:
		SendMessage( hwnd, WM_VSCROLL, SB_BOTTOM, 0);
		break;
	case VK_PRIOR:
		SendMessage( hwnd, WM_VSCROLL, SB_PAGEUP, 0);
		break;	
	case VK_NEXT:
		SendMessage( hwnd, WM_VSCROLL, SB_PAGEDOWN, 0);
		break;
	case VK_UP:
		SendMessage( hwnd, WM_VSCROLL, SB_LINEUP, 0);
		break;
	case VK_DOWN:
		SendMessage( hwnd, WM_VSCROLL, SB_LINEDOWN, 0);
		break;
	default:
		break;
	}

	return 0;
}

long OnChar(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	return 0;
}

long OnlButtonUp(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	return 0;
}

long OnSetFocus(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	return 0;
}

long OnKillFocus(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	return 0;
}

long OnvScroll(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	RECT rc;
	rc.left=0;
	rc.top=4*cyChar;
	rc.right=cxClient;
	rc.bottom=cyClient;
	int vPos;
	si.cbSize=sizeof(si);
	si.fMask=SIF_POS;
	GetScrollInfo( hwnd, SB_VERT, &si);
	vPos=si.nPos;
	switch( LOWORD(wParam))
	{
	case SB_TOP:
		vPos=si.nMin;
		break;
	case SB_BOTTOM:
		vPos=si.nMax;
		break;
	case SB_LINEUP:
		vPos -= 1 ;
		break ;
	case   SB_LINEDOWN:
		vPos += 1 ;
		break ;
	case   SB_PAGEUP:
		vPos -= si.nPage ;
		break ;
	case   SB_PAGEDOWN:
		vPos += si.nPage ;
		break ;
	case SB_THUMBPOSITION:
		vPos=HIWORD(wParam);
		break;
	default:
		break;
	}
	vPos=max( 0, min( si.nMax, vPos));
	if(vPos!=si.nPos)
	{
		si.nPos=vPos;
		SetScrollInfo( hwnd, SB_VERT, &si, true);
		InvalidateRect( hwnd, &rc, true);
	}


	return 0;
}

long OnPaint(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	HDC hdc;
	PAINTSTRUCT ps;
	TCHAR Buffer[20];
	HFONT hFont;
	RECT rc;
	int BegPos, EndPos,i;
	rc.left=0;
	rc.top=0;
	rc.bottom=2*cyChar;
	rc.right=cxClient;

	hdc=BeginPaint( hwnd, &ps);
	SelectObject( hdc, CreateSolidBrush( RGB(207,221,239)));
	Rectangle( hdc, 0, 0, cxClient, 2*cyChar);
	SelectObject( hdc, CreateSolidBrush( RGB(207,248,255)));
	Rectangle( hdc, 0, 2*cyChar, cxClient, 4*cyChar);
	SetBkMode( hdc, TRANSPARENT);
	DrawText( hdc, TEXT("通讯录中的联系人"), 16, &rc, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
	TextOut( hdc, 4*cxChar, 2*cyChar+cyChar/2, TEXT("编号"), 4);
	TextOut( hdc, cxChar*12, 2*cyChar+cyChar/2, TEXT("组"), 2);
	TextOut( hdc, cxChar*20, 2*cyChar+cyChar/2, TEXT("姓名"), 4);
	TextOut( hdc, cxChar*30, 2*cyChar+cyChar/2, TEXT("电话号码1"), 9);
	TextOut( hdc, cxChar*50, 2*cyChar+cyChar/2, TEXT("电话号码2"), 9);
	TextOut( hdc, cxChar*68, 2*cyChar+cyChar/2, TEXT("性别"), 4);
	TextOut( hdc, cxChar*84, 2*cyChar+cyChar/2, TEXT("生日"), 4);
	TextOut( hdc, cxChar*120, 2*cyChar+cyChar/2, TEXT("地址"), 4);
	
	SelectObject( hdc, CreatePen( PS_DOT, 0, RGB(50,50,25)));

	MoveToEx( hdc, 2*cxChar, 2*cyChar, NULL);
	LineTo( hdc, 2*cxChar, cyClient);
	MoveToEx( hdc, 10*cxChar, 2*cyChar, NULL);
	LineTo( hdc, 10*cxChar, cyClient);
	MoveToEx( hdc, 17*cxChar, 2*cyChar, NULL);
	LineTo( hdc, 17*cxChar, cyClient);
	MoveToEx( hdc, 27*cxChar, 2*cyChar, NULL);
	LineTo( hdc, 27*cxChar, cyClient);
	MoveToEx( hdc, 45*cxChar, 2*cyChar, NULL);
	LineTo( hdc, 45*cxChar, cyClient);
	MoveToEx( hdc, 65*cxChar, 2*cyChar, NULL);
	LineTo( hdc, 65*cxChar, cyClient);
	MoveToEx( hdc, 76*cxChar, 2*cyChar, NULL);
	LineTo( hdc, 76*cxChar, cyClient);
	MoveToEx( hdc, 98*cxChar, 2*cyChar, NULL);
	LineTo( hdc, 98*cxChar, cyClient);
	MoveToEx( hdc, cxClient, 2*cyChar, NULL);
	LineTo( hdc, cxClient, cyClient);

	si.fMask=SIF_ALL;
	GetScrollInfo( hwnd, SB_VERT, &si);
	BegPos=max(0,min(si.nPos, si.nMax));
	EndPos=min( si.nMax, si.nPos+si.nPage);

	for(i=0; i<cyClient/(cyChar*2)-1; i++)
	{
		MoveToEx( hdc, 0, (i+2)*(cyChar*2),  NULL);
		LineTo( hdc, cxClient, (i+2)*(cyChar*2));
		Rectangle( hdc, 0,(i+2)*(cyChar*2), 2*cxChar, (i+3)*(cyChar*2));
	}
	i=-1;
	for(int j=BegPos; j<EndPos; j++)
	{
		i++;
		TextOut( hdc, 4*cxChar, 2*(i+2)*cyChar+cyChar/2, Buffer, wsprintf(Buffer, TEXT("%s"), szID[i+BegPos]));
		int g;
		if( strcmp( szGroup[i], "1")==0)
		{
			g=wsprintf( Buffer, TEXT("%s"), TEXT("朋友\0\0"));
			TextOut( hdc, cxChar*11, 2*(i+2)*cyChar+cyChar/2, Buffer, g);
		}
		if( strcmp( szGroup[i], "2")==0)
		{
			g=wsprintf( Buffer, TEXT("%s"), TEXT("同学\0\0"));
			TextOut( hdc, cxChar*11, 2*(i+2)*cyChar+cyChar/2, Buffer, g);
		}
		if( strcmp( szGroup[i], "3")==0)
		{
			g=wsprintf( Buffer, TEXT("%s"), TEXT("老师\0\0"));
			TextOut( hdc, cxChar*11, 2*(i+2)*cyChar+cyChar/2, Buffer, g);
		}
		if( strcmp( szGroup[i], "4")==0)
		{
			g=wsprintf( Buffer, TEXT("%s"), TEXT("家人\0\0"));
			TextOut( hdc, cxChar*11, 2*(i+2)*cyChar+cyChar/2, Buffer, g);
		}
		TextOut( hdc, cxChar*18, 2*(i+2)*cyChar+cyChar/2, Buffer, wsprintf(Buffer, TEXT("%s"), szName[i+BegPos]));
		TextOut( hdc, cxChar*28, 2*(i+2)*cyChar+cyChar/2, Buffer, wsprintf(Buffer, TEXT("%s"), szNumber1[i+BegPos]));
		TextOut( hdc, cxChar*50, 2*(i+2)*cyChar+cyChar/2, Buffer, wsprintf(Buffer, TEXT("%s"), szNumber2[i+BegPos]));
		TextOut( hdc, cxChar*68, 2*(i+2)*cyChar+cyChar/2, Buffer, wsprintf(Buffer, TEXT("%s"), szGender[i+BegPos]));
		TextOut( hdc, cxChar*78, 2*(i+2)*cyChar+cyChar/2, Buffer, wsprintf(Buffer, TEXT("%s"), szBirthday[i+BegPos]));
		TextOut( hdc, cxChar*100, 2*(i+2)*cyChar+cyChar/2, Buffer, wsprintf(Buffer, TEXT("%s"), szAddress[i+BegPos]));
}
	SelectObject( hdc, GetStockObject( WHITE_BRUSH));

	EndPaint( hwnd, &ps);
	return 0;
}

long OnDestroy(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	SQLDisconnect( hdbc);
	SQLFreeHandle( SQL_HANDLE_DBC, hdbc);
	SQLFreeHandle( SQL_HANDLE_ENV, henv);
	PostQuitMessage( 0 );
	return 0;
}

long OnCommand(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	int wmId,i;
	wmId=LOWORD(wParam);

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

⌨️ 快捷键说明

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