📄 employee.cpp
字号:
InitCommonControls();
if (!(hwndTab = CreateWindow (
WC_TABCONTROL, TEXT(""),
WS_CHILD | WS_CLIPSIBLINGS | WS_VISIBLE,
10, 40, 425, 250,
hwndParent, (HMENU)IDC_TAB, g_hInst, NULL)))
return NULL;
// Add tabs.
tie.mask = TCIF_TEXT | TCIF_IMAGE;
tie.iImage = -1;
tie.pszText = TEXT("Company Info");
if (TabCtrl_InsertItem (hwndTab, 0, &tie) == -1)
{
DestroyWindow(hwndTab);
return NULL;
}
tie.pszText = TEXT("Personal Info");
if (TabCtrl_InsertItem (hwndTab, 1, &tie) == -1)
{
DestroyWindow(hwndTab);
return NULL;
}
return hwndTab;
}
/***********************************************************************
FUNCTION:
InitSQLServer
PURPOSE:
***********************************************************************/
BOOL InitSQLServer ()
{
if(FAILED(CoInitialize(NULL)))
return FALSE;
//_bstr_t strCnn("Provider=sqloledb;Data Source=;Integrated Security='SSPI';Initial Catalog=Northwind;User Id=;Password=;");
//_bstr_t strCnn("Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Password=68620154;Initial Catalog=Northwind;Data Source=FIREWALL");
_bstr_t strCnn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=employee.mdb;Persist Security Info=False";
// Open recordset from Authors table.
g_pRS.CreateInstance(__uuidof(Recordset));
g_pRS->CursorType = adOpenStatic;
// Use client cursor to enable AbsolutePosition property.
g_pRS->CursorLocation = adUseClient;
g_pRS->Open("Employees", strCnn, adOpenKeyset, adLockBatchOptimistic, adCmdTable);
return TRUE;
}
/***********************************************************************
FUNCTION:
DisplayData
PURPOSE:
***********************************************************************/
VOID DisplayData ()
{
// Empty all of the data fields.
EmptyDataFields ();
// Take care of the record count and position.
TCHAR szRecord[100];
_bstr_t bstrRecordCount;
int iAbsolutePosition;
bstrRecordCount = g_pRS->RecordCount;
iAbsolutePosition = g_pRS->AbsolutePosition;
swprintf (szRecord, TEXT("%d of %S"), iAbsolutePosition,
(wchar_t *)bstrRecordCount);
SetDlgItemText (g_hWnd, IDC_RECORD, szRecord);
// Take care of the field items except for "Notes", "ReportsTo" and "Photo".
_bstr_t bstrName;
_bstr_t bstrFName;
_bstr_t bstrLName;
_bstr_t bstrTitle;
_bstr_t bstrCTitle;
_bstr_t bstrAddress;
_bstr_t bstrCity;
_bstr_t bstrRegion;
_bstr_t bstrZipCode;
_bstr_t bstrCountry;
_bstr_t bstrHomePhone;
_bstr_t bstrExtension;
_bstr_t bstrEID;
_bstr_t bstrBirthdate;
_bstr_t bstrHiredate;
if (g_pRS->Fields->Item["FirstName"]->ActualSize > 0)
{
bstrFName = g_pRS->Fields->Item["FirstName"]->Value;
SetDlgItemText (g_hDlg1Wnd, IDC_FIRSTNAME, bstrFName);
bstrName = bstrFName;
}
if (g_pRS->Fields->Item["LastName"]->ActualSize > 0)
{
bstrLName = g_pRS->Fields->Item["LastName"]->Value;
SetDlgItemText (g_hDlg1Wnd, IDC_LASTNAME, bstrLName);
bstrName = bstrName + " " + bstrLName;
SetDlgItemText (g_hWnd, IDC_NAME, bstrName);
}
if (g_pRS->Fields->Item["Title"]->ActualSize > 0)
{
bstrTitle = g_pRS->Fields->Item["Title"]->Value;
SetDlgItemText (g_hDlg1Wnd, IDC_TITLE, bstrTitle);
}
if (g_pRS->Fields->Item["TitleOfCourtesy"]->ActualSize > 0)
{
bstrCTitle = g_pRS->Fields->Item["TitleOfCourtesy"]->Value;
SetDlgItemText (g_hDlg2Wnd, IDC_CTITLE, bstrCTitle);
}
if (g_pRS->Fields->Item["Address"]->ActualSize > 0)
{
bstrAddress = g_pRS->Fields->Item["Address"]->Value;
SetDlgItemText (g_hDlg2Wnd, IDC_ADDRESS, bstrAddress);
}
if (g_pRS->Fields->Item["City"]->ActualSize > 0)
{
bstrCity = g_pRS->Fields->Item["City"]->Value;
SetDlgItemText (g_hDlg2Wnd, IDC_CITY, bstrCity);
}
if (g_pRS->Fields->Item["Region"]->ActualSize > 0)
{
bstrRegion = g_pRS->Fields->Item["Region"]->Value;
SetDlgItemText (g_hDlg2Wnd, IDC_REGION, bstrRegion);
}
if (g_pRS->Fields->Item["PostalCode"]->ActualSize > 0)
{
bstrZipCode = g_pRS->Fields->Item["PostalCode"]->Value;
SetDlgItemText (g_hDlg2Wnd, IDC_ZIPCODE, bstrZipCode);
}
if (g_pRS->Fields->Item["Country"]->ActualSize > 0)
{
bstrCountry = g_pRS->Fields->Item["Country"]->Value;
SetDlgItemText (g_hDlg2Wnd, IDC_COUNTRY, bstrCountry);
}
if (g_pRS->Fields->Item["HomePhone"]->ActualSize > 0)
{
bstrHomePhone = g_pRS->Fields->Item["HomePhone"]->Value;
SetDlgItemText (g_hDlg2Wnd, IDC_HOMEPHONE, bstrHomePhone);
}
if (g_pRS->Fields->Item["Extension"]->ActualSize > 0)
{
bstrExtension = g_pRS->Fields->Item["Extension"]->Value;
SetDlgItemText (g_hDlg1Wnd, IDC_EXTENSION, bstrExtension);
}
if (g_pRS->Fields->Item["EmployeeID"]->ActualSize > 0)
{
bstrEID = g_pRS->Fields->Item["EmployeeID"]->Value;
SetDlgItemText (g_hDlg1Wnd, IDC_EID, bstrEID);
}
if (g_pRS->Fields->Item["BirthDate"]->ActualSize > 0)
{
bstrBirthdate = g_pRS->Fields->Item["BirthDate"]->Value;
SetDlgItemText (g_hDlg2Wnd, IDC_BIRTHDATE, bstrBirthdate);
}
if (g_pRS->Fields->Item["HireDate"]->ActualSize > 0)
{
bstrHiredate = g_pRS->Fields->Item["HireDate"]->Value;
SetDlgItemText (g_hDlg1Wnd, IDC_HIREDATE, bstrHiredate);
}
// Take care of "ReportsTo" item.
if (g_pRS->Fields->Item["ReportsTo"]->ActualSize > 0)
{
_bstr_t bstrReportsTo;
_bstr_t bstrReportsToFName;
_bstr_t bstrReportsToLName;
TCHAR szFindString[100];
bstrReportsTo = g_pRS->Fields->Item["ReportsTo"]->Value;
swprintf (szFindString, TEXT("EmployeeID = %S"), (wchar_t *)bstrReportsTo);
g_pRS->MoveFirst (); // Move to the first record to ensure a search for the whole records.
g_pRS->Find (szFindString, 1, adSearchForward); // Search for the whole records.
if (!(g_pRS->EndOfFile)) // Did find the match.
{
bstrReportsToLName = g_pRS->Fields->Item["LastName"]->Value;
bstrReportsToFName = g_pRS->Fields->Item["FirstName"]->Value;
bstrReportsTo = bstrReportsToFName + " " + bstrReportsToLName;
SetDlgItemText (g_hDlg1Wnd, IDC_REPORTSTO, (wchar_t *)bstrReportsTo);
}
g_pRS->Move (iAbsolutePosition - g_pRS->AbsolutePosition); // Move back to the record before the search.
}
// Take care of "Notes" and "Photo" items.
DisplayPhoto ();
DisplayNotes ();
}
/***********************************************************************
FUNCTION:
EmptyDataFields
PURPOSE:
***********************************************************************/
VOID EmptyDataFields ()
{
SetDlgItemText (g_hWnd, IDC_NAME, NULL);
SetDlgItemText (g_hWnd, IDC_RECORD, NULL);
SetDlgItemText (g_hDlg1Wnd, IDC_FIRSTNAME, NULL);
SetDlgItemText (g_hDlg1Wnd, IDC_LASTNAME, NULL);
SetDlgItemText (g_hDlg1Wnd, IDC_TITLE, NULL);
SetDlgItemText (g_hDlg2Wnd, IDC_CTITLE, NULL);
SetDlgItemText (g_hDlg2Wnd, IDC_ADDRESS, NULL);
SetDlgItemText (g_hDlg2Wnd, IDC_CITY, NULL);
SetDlgItemText (g_hDlg2Wnd, IDC_REGION, NULL);
SetDlgItemText (g_hDlg2Wnd, IDC_ZIPCODE, NULL);
SetDlgItemText (g_hDlg2Wnd, IDC_COUNTRY, NULL);
SetDlgItemText (g_hDlg2Wnd, IDC_HOMEPHONE, NULL);
SetDlgItemText (g_hDlg1Wnd, IDC_EXTENSION, NULL);
SetDlgItemText (g_hDlg1Wnd, IDC_EID, NULL);
SetDlgItemText (g_hDlg2Wnd, IDC_BIRTHDATE, NULL);
SetDlgItemText (g_hDlg1Wnd, IDC_HIREDATE, NULL);
SetDlgItemText (g_hDlg1Wnd, IDC_REPORTSTO, NULL);
}
/***********************************************************************
FUNCTION:
DisplayNotes
PURPOSE:
***********************************************************************/
VOID DisplayNotes ()
{
_bstr_t varChunk;
_bstr_t varNotes;
long lngTotalsize,
lngOffSet = 0,
lngChunkSize = 100;
lngTotalsize = g_pRS->Fields->Item["Notes"]->ActualSize / 2 ; // Becuase of being WChar
if (lngTotalsize <= 0)
return;
while (lngOffSet < lngTotalsize)
{
varChunk = g_pRS->Fields->Item["Notes"]->GetChunk(lngChunkSize);
varNotes = varNotes + varChunk;
lngOffSet = lngOffSet + lngChunkSize;
}
SetDlgItemText (g_hDlg2Wnd, IDC_NOTES, varNotes);
}
/***********************************************************************
FUNCTION:
DisplayPhoto
PURPOSE:
***********************************************************************/
VOID DisplayPhoto ()
{
// Put your code in displaying the photo. Make sure to get rid of the
// photo header (Please see the VB "Employee" sample.).
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -