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