📄 wndproc.cpp
字号:
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 + -