Replace TABs by Spaces.

No code changes!

svn path=/trunk/; revision=37564
This commit is contained in:
Eric Kohl 2008-11-22 19:25:48 +00:00
parent 01f04141d9
commit db8c3e9162
2 changed files with 793 additions and 774 deletions

View file

@ -70,7 +70,9 @@ INT_PTR CALLBACK About (HWND, UINT, WPARAM, LPARAM);
INT_PTR CALLBACK EventDetails(HWND, UINT, WPARAM, LPARAM); INT_PTR CALLBACK EventDetails(HWND, UINT, WPARAM, LPARAM);
static INT_PTR CALLBACK StatusMessageWindowProc (HWND, UINT, WPARAM, LPARAM); static INT_PTR CALLBACK StatusMessageWindowProc (HWND, UINT, WPARAM, LPARAM);
int APIENTRY _tWinMain(HINSTANCE hInstance,
int APIENTRY
_tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance, HINSTANCE hPrevInstance,
LPTSTR lpCmdLine, LPTSTR lpCmdLine,
int nCmdShow) int nCmdShow)
@ -114,11 +116,15 @@ int APIENTRY _tWinMain(HINSTANCE hInstance,
return (int)msg.wParam; return (int)msg.wParam;
} }
VOID EventTimeToSystemTime (DWORD EventTime, SYSTEMTIME *pSystemTime)
VOID
EventTimeToSystemTime(DWORD EventTime,
SYSTEMTIME *pSystemTime)
{ {
SYSTEMTIME st1970 = { 1970, 1, 0, 1, 0, 0, 0, 0 }; SYSTEMTIME st1970 = { 1970, 1, 0, 1, 0, 0, 0, 0 };
FILETIME ftLocal; FILETIME ftLocal;
union { union
{
FILETIME ft; FILETIME ft;
ULONGLONG ll; ULONGLONG ll;
} u1970, uUCT; } u1970, uUCT;
@ -131,6 +137,7 @@ VOID EventTimeToSystemTime (DWORD EventTime, SYSTEMTIME *pSystemTime)
FileTimeToSystemTime(&ftLocal, pSystemTime); FileTimeToSystemTime(&ftLocal, pSystemTime);
} }
void void
TrimNulls(LPSTR s) TrimNulls(LPSTR s)
{ {
@ -145,8 +152,9 @@ TrimNulls ( LPSTR s )
} }
} }
BOOL GetEventMessageFileDLL(
IN LPCTSTR lpLogName, BOOL
GetEventMessageFileDLL(IN LPCTSTR lpLogName,
IN LPCTSTR SourceName, IN LPCTSTR SourceName,
IN LPCTSTR EntryName, IN LPCTSTR EntryName,
OUT LPSTR ExpandedName) OUT LPSTR ExpandedName)
@ -162,23 +170,20 @@ BOOL GetEventMessageFileDLL(
_tcscat(szKeyName, _T("\\")); _tcscat(szKeyName, _T("\\"));
_tcscat(szKeyName, lpLogName); _tcscat(szKeyName, lpLogName);
if (RegOpenKeyEx( if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,
HKEY_LOCAL_MACHINE,
szKeyName, szKeyName,
0, 0,
KEY_READ, KEY_READ,
&hAppKey) == ERROR_SUCCESS) &hAppKey) == ERROR_SUCCESS)
{ {
if (RegOpenKeyEx( if (RegOpenKeyEx(hAppKey,
hAppKey,
SourceName, SourceName,
0, 0,
KEY_READ, KEY_READ,
&hSourceKey) == ERROR_SUCCESS) &hSourceKey) == ERROR_SUCCESS)
{ {
dwSize = MAX_PATH; dwSize = MAX_PATH;
if (RegQueryValueEx( if (RegQueryValueEx(hSourceKey,
hSourceKey,
EntryName, EntryName,
NULL, NULL,
NULL, NULL,
@ -210,8 +215,9 @@ BOOL GetEventMessageFileDLL(
return bReturn; return bReturn;
} }
BOOL GetEventCategory(
IN LPCTSTR KeyName, BOOL
GetEventCategory(IN LPCTSTR KeyName,
IN LPCTSTR SourceName, IN LPCTSTR SourceName,
IN EVENTLOGRECORD *pevlr, IN EVENTLOGRECORD *pevlr,
OUT LPTSTR CategoryName) OUT LPTSTR CategoryName)
@ -222,16 +228,13 @@ BOOL GetEventCategory(
if (GetEventMessageFileDLL (KeyName, SourceName, EVENT_CATEGORY_MESSAGE_FILE , szMessageDLL)) if (GetEventMessageFileDLL (KeyName, SourceName, EVENT_CATEGORY_MESSAGE_FILE , szMessageDLL))
{ {
hLibrary = LoadLibraryEx( hLibrary = LoadLibraryEx(szMessageDLL,
szMessageDLL,
NULL, NULL,
DONT_RESOLVE_DLL_REFERENCES | LOAD_LIBRARY_AS_DATAFILE); DONT_RESOLVE_DLL_REFERENCES | LOAD_LIBRARY_AS_DATAFILE);
if (hLibrary != NULL) if (hLibrary != NULL)
{ {
// Retrieve the message string. // Retrieve the message string.
if(FormatMessage( if (FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_ARGUMENT_ARRAY,
FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_ARGUMENT_ARRAY,
hLibrary, hLibrary,
pevlr->EventCategory, pevlr->EventCategory,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
@ -251,7 +254,9 @@ BOOL GetEventCategory(
{ {
strcpy(CategoryName, (LPCTSTR)lpMsgBuf); strcpy(CategoryName, (LPCTSTR)lpMsgBuf);
} }
}else{ }
else
{
strcpy(CategoryName, "None"); strcpy(CategoryName, "None");
} }
@ -271,8 +276,9 @@ BOOL GetEventCategory(
return FALSE; return FALSE;
} }
BOOL GetEventMessage(
IN LPCTSTR KeyName, BOOL
GetEventMessage(IN LPCTSTR KeyName,
IN LPCTSTR SourceName, IN LPCTSTR SourceName,
IN EVENTLOGRECORD *pevlr, IN EVENTLOGRECORD *pevlr,
OUT LPTSTR EventText) OUT LPTSTR EventText)
@ -323,11 +329,9 @@ BOOL GetEventMessage(
szDll = strtok(SourceModuleName, EVENT_DLL_SEPARATOR); szDll = strtok(SourceModuleName, EVENT_DLL_SEPARATOR);
while ((szDll != NULL) && (!bDone)) while ((szDll != NULL) && (!bDone))
{ {
hLibrary = LoadLibraryEx( hLibrary = LoadLibraryEx(szDll,
szDll,
NULL, NULL,
DONT_RESOLVE_DLL_REFERENCES | LOAD_LIBRARY_AS_DATAFILE); DONT_RESOLVE_DLL_REFERENCES | LOAD_LIBRARY_AS_DATAFILE);
if (hLibrary == NULL) if (hLibrary == NULL)
{ {
// The DLL could not be loaded try the next one (if any) // The DLL could not be loaded try the next one (if any)
@ -336,8 +340,7 @@ BOOL GetEventMessage(
else else
{ {
// Retrieve the message string. // Retrieve the message string.
if(FormatMessage( if (FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_FROM_HMODULE |
FORMAT_MESSAGE_ARGUMENT_ARRAY, FORMAT_MESSAGE_ARGUMENT_ARRAY,
@ -388,8 +391,10 @@ BOOL GetEventMessage(
return FALSE; return FALSE;
} }
VOID VOID
GetEventType (WORD dwEventType, OUT LPSTR eventTypeText) GetEventType(IN WORD dwEventType,
OUT LPSTR eventTypeText)
{ {
switch (dwEventType) switch (dwEventType)
{ {
@ -433,8 +438,7 @@ GetEventUserName (EVENTLOGRECORD *pelr, OUT LPSTR pszUser)
// User SID // User SID
if (pelr->UserSidLength > 0) if (pelr->UserSidLength > 0)
{ {
if (LookupAccountSid( if (LookupAccountSid(NULL,
NULL,
lpSid, lpSid,
szName, szName,
&cbName, &cbName,
@ -450,22 +454,22 @@ GetEventUserName (EVENTLOGRECORD *pelr, OUT LPSTR pszUser)
return FALSE; return FALSE;
} }
static DWORD WINAPI static DWORD WINAPI
ShowStatusMessageThread( ShowStatusMessageThread(IN LPVOID lpParameter)
IN LPVOID lpParameter)
{ {
HWND *phWnd = (HWND *)lpParameter; HWND *phWnd = (HWND *)lpParameter;
HWND hWnd; HWND hWnd;
MSG Msg; MSG Msg;
hWnd = CreateDialogParam( hWnd = CreateDialogParam(hInst,
hInst,
MAKEINTRESOURCE(IDD_PROGRESSBOX), MAKEINTRESOURCE(IDD_PROGRESSBOX),
GetDesktopWindow(), GetDesktopWindow(),
StatusMessageWindowProc, StatusMessageWindowProc,
(LPARAM)NULL); (LPARAM)NULL);
if (!hWnd) if (!hWnd)
return 0; return 0;
*phWnd = hWnd; *phWnd = hWnd;
ShowWindow(hWnd, SW_SHOW); ShowWindow(hWnd, SW_SHOW);
@ -480,8 +484,9 @@ ShowStatusMessageThread(
return 0; return 0;
} }
VOID QueryEventMessages (
LPTSTR lpMachineName , VOID
QueryEventMessages(LPTSTR lpMachineName,
LPTSTR lpLogName) LPTSTR lpLogName)
{ {
HWND hwndDlg; HWND hwndDlg;
@ -515,10 +520,8 @@ VOID QueryEventMessages (
lpComputerName = lpMachineName; lpComputerName = lpMachineName;
// Open the event log. // Open the event log.
hEventLog = OpenEventLog( hEventLog = OpenEventLog(lpMachineName,
lpMachineName,
lpLogName); lpLogName);
if (hEventLog == NULL) if (hEventLog == NULL)
{ {
MessageBox(NULL, MessageBox(NULL,
@ -546,8 +549,7 @@ VOID QueryEventMessages (
//If we have at least 1000 records show the waiting dialog //If we have at least 1000 records show the waiting dialog
if (dwTotalRecords > 1000) if (dwTotalRecords > 1000)
{ {
CreateThread( CreateThread(NULL,
NULL,
0, 0,
ShowStatusMessageThread, ShowStatusMessageThread,
(LPVOID)&hwndDlg, (LPVOID)&hwndDlg,
@ -559,21 +561,18 @@ VOID QueryEventMessages (
{ {
pevlr = (EVENTLOGRECORD*)malloc(MAX_PATH); pevlr = (EVENTLOGRECORD*)malloc(MAX_PATH);
bResult = ReadEventLog( bResult = ReadEventLog(hEventLog, // Event log handle
hEventLog, // Event log handle
dwFlags, // Sequential read dwFlags, // Sequential read
0, // Ignored for sequential read 0, // Ignored for sequential read
pevlr, // Pointer to buffer pevlr, // Pointer to buffer
MAX_PATH, // Size of buffer MAX_PATH, // Size of buffer
&dwRead, // Number of bytes read &dwRead, // Number of bytes read
&dwNeeded); // Bytes in the next record &dwNeeded); // Bytes in the next record
if((!bResult) && (GetLastError () == ERROR_INSUFFICIENT_BUFFER)) if((!bResult) && (GetLastError () == ERROR_INSUFFICIENT_BUFFER))
{ {
pevlr = (EVENTLOGRECORD*)malloc (dwNeeded); pevlr = (EVENTLOGRECORD*)malloc (dwNeeded);
ReadEventLog( ReadEventLog(hEventLog, // event log handle
hEventLog, // event log handle
dwFlags, // read flags dwFlags, // read flags
0, // offset; default is 0 0, // offset; default is 0
pevlr, // pointer to buffer pevlr, // pointer to buffer
@ -626,18 +625,23 @@ VOID QueryEventMessages (
case EVENTLOG_ERROR_TYPE: case EVENTLOG_ERROR_TYPE:
lviEventItem.iImage = 2; lviEventItem.iImage = 2;
break; break;
case EVENTLOG_AUDIT_FAILURE: case EVENTLOG_AUDIT_FAILURE:
lviEventItem.iImage = 2; lviEventItem.iImage = 2;
break; break;
case EVENTLOG_WARNING_TYPE: case EVENTLOG_WARNING_TYPE:
lviEventItem.iImage = 1; lviEventItem.iImage = 1;
break; break;
case EVENTLOG_INFORMATION_TYPE: case EVENTLOG_INFORMATION_TYPE:
lviEventItem.iImage = 0; lviEventItem.iImage = 0;
break; break;
case EVENTLOG_AUDIT_SUCCESS: case EVENTLOG_AUDIT_SUCCESS:
lviEventItem.iImage = 0; lviEventItem.iImage = 0;
break; break;
case EVENTLOG_SUCCESS: case EVENTLOG_SUCCESS:
lviEventItem.iImage = 0; lviEventItem.iImage = 0;
break; break;
@ -683,14 +687,15 @@ VOID QueryEventMessages (
CloseEventLog(hEventLog); CloseEventLog(hEventLog);
} }
VOID VOID
Refresh(VOID) Refresh(VOID)
{ {
QueryEventMessages( QueryEventMessages(lpComputerName,
lpComputerName ,
lpSourceLogName); lpSourceLogName);
} }
// //
// FUNCTION: MyRegisterClass() // FUNCTION: MyRegisterClass()
// //
@ -704,7 +709,8 @@ Refresh (VOID)
// so that the application will get 'well formed' small icons associated // so that the application will get 'well formed' small icons associated
// with it. // with it.
// //
ATOM MyRegisterClass(HINSTANCE hInstance) ATOM
MyRegisterClass(HINSTANCE hInstance)
{ {
WNDCLASSEX wcex; WNDCLASSEX wcex;
@ -725,6 +731,7 @@ ATOM MyRegisterClass(HINSTANCE hInstance)
return RegisterClassEx(&wcex); return RegisterClassEx(&wcex);
} }
// //
// FUNCTION: InitInstance(HINSTANCE, int) // FUNCTION: InitInstance(HINSTANCE, int)
// //
@ -735,15 +742,16 @@ ATOM MyRegisterClass(HINSTANCE hInstance)
// In this function, we save the instance handle in a global variable and // In this function, we save the instance handle in a global variable and
// create and display the main program window. // create and display the main program window.
// //
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) BOOL
InitInstance(HINSTANCE hInstance,
int nCmdShow)
{ {
HIMAGELIST hSmall; HIMAGELIST hSmall;
LVCOLUMN lvc = {0}; LVCOLUMN lvc = {0};
hInst = hInstance; // Store instance handle in our global variable hInst = hInstance; // Store instance handle in our global variable
hwndMainWindow = CreateWindow( hwndMainWindow = CreateWindow(szWindowClass,
szWindowClass,
szTitle, szTitle,
WS_OVERLAPPEDWINDOW, WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0,
@ -751,14 +759,12 @@ BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
NULL, NULL,
hInstance, hInstance,
NULL); NULL);
if (!hwndMainWindow) if (!hwndMainWindow)
{ {
return FALSE; return FALSE;
} }
hwndStatus = CreateWindowEx( hwndStatus = CreateWindowEx(0, // no extended styles
0, // no extended styles
STATUSCLASSNAME, // status bar STATUSCLASSNAME, // status bar
"Done.", // no text "Done.", // no text
WS_CHILD | WS_BORDER | WS_VISIBLE, // styles WS_CHILD | WS_BORDER | WS_VISIBLE, // styles
@ -771,8 +777,7 @@ BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
// Create our listview child window. Note that I use WS_EX_CLIENTEDGE // Create our listview child window. Note that I use WS_EX_CLIENTEDGE
// and WS_BORDER to create the normal "sunken" look. Also note that // and WS_BORDER to create the normal "sunken" look. Also note that
// LVS_EX_ styles cannot be set in CreateWindowEx(). // LVS_EX_ styles cannot be set in CreateWindowEx().
hwndListView = CreateWindowEx( hwndListView = CreateWindowEx(WS_EX_CLIENTEDGE,
WS_EX_CLIENTEDGE,
WC_LISTVIEW, WC_LISTVIEW,
_T(""), _T(""),
LVS_SHOWSELALWAYS | WS_CHILD | WS_VISIBLE | LVS_REPORT, LVS_SHOWSELALWAYS | WS_CHILD | WS_VISIBLE | LVS_REPORT,
@ -789,8 +794,7 @@ BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
(void)ListView_SetExtendedListViewStyle (hwndListView, LVS_EX_FULLROWSELECT); (void)ListView_SetExtendedListViewStyle (hwndListView, LVS_EX_FULLROWSELECT);
// Create the ImageList // Create the ImageList
hSmall = ImageList_Create( hSmall = ImageList_Create(GetSystemMetrics(SM_CXSMICON),
GetSystemMetrics(SM_CXSMICON),
GetSystemMetrics(SM_CYSMICON), GetSystemMetrics(SM_CYSMICON),
ILC_MASK, ILC_MASK,
1, 1,
@ -845,13 +849,13 @@ BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
ShowWindow(hwndMainWindow, nCmdShow); ShowWindow(hwndMainWindow, nCmdShow);
UpdateWindow(hwndMainWindow); UpdateWindow(hwndMainWindow);
QueryEventMessages ( QueryEventMessages(lpComputerName, // Use the local computer.
lpComputerName, // Use the local computer.
EVENT_SOURCE_APPLICATION); // The event log category EVENT_SOURCE_APPLICATION); // The event log category
return TRUE; return TRUE;
} }
// //
// FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM) // FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM)
// //
@ -862,7 +866,8 @@ BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
// WM_DESTROY - post a quit message and return // WM_DESTROY - post a quit message and return
// //
// //
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) LRESULT CALLBACK
WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{ {
int wmId, wmEvent; int wmId, wmEvent;
RECT rect; RECT rect;
@ -888,6 +893,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
break; break;
} }
break; break;
case WM_COMMAND: case WM_COMMAND:
wmId = LOWORD(wParam); wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam); wmEvent = HIWORD(wParam);
@ -912,48 +918,51 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
switch (wmId) switch (wmId)
{ {
case ID_LOG_APPLICATION: case ID_LOG_APPLICATION:
QueryEventMessages ( QueryEventMessages(lpComputerName, // Use the local computer.
lpComputerName, // Use the local computer.
EVENT_SOURCE_APPLICATION); // The event log category EVENT_SOURCE_APPLICATION); // The event log category
break; break;
case ID_LOG_SYSTEM: case ID_LOG_SYSTEM:
QueryEventMessages ( QueryEventMessages(lpComputerName, // Use the local computer.
lpComputerName, // Use the local computer.
EVENT_SOURCE_SYSTEM); // The event log category EVENT_SOURCE_SYSTEM); // The event log category
break; break;
case ID_LOG_SECURITY: case ID_LOG_SECURITY:
QueryEventMessages ( QueryEventMessages(lpComputerName, // Use the local computer.
lpComputerName, // Use the local computer.
EVENT_SOURCE_SECURITY); // The event log category EVENT_SOURCE_SECURITY); // The event log category
break; break;
case IDM_REFRESH: case IDM_REFRESH:
Refresh(); Refresh();
break; break;
case IDM_ABOUT: case IDM_ABOUT:
DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About); DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
break; break;
case IDM_HELP: case IDM_HELP:
MessageBox ( MessageBox(NULL,
NULL ,
_TEXT("Help not implemented yet!"), _TEXT("Help not implemented yet!"),
_TEXT("Event Log"), _TEXT("Event Log"),
MB_OK | MB_ICONINFORMATION); MB_OK | MB_ICONINFORMATION);
break; break;
case IDM_EXIT: case IDM_EXIT:
DestroyWindow(hWnd); DestroyWindow(hWnd);
break; break;
default: default:
return DefWindowProc(hWnd, message, wParam, lParam); return DefWindowProc(hWnd, message, wParam, lParam);
} }
break; break;
case WM_SIZE: case WM_SIZE:
{ {
// Gets the window rectangle // Gets the window rectangle
GetClientRect(hWnd, &rect); GetClientRect(hWnd, &rect);
// Relocate the listview // Relocate the listview
MoveWindow( MoveWindow(hwndListView,
hwndListView,
0, 0,
0, 0,
rect.right, rect.right,
@ -964,17 +973,22 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
SendMessage(hwndStatus, message, wParam, lParam); SendMessage(hwndStatus, message, wParam, lParam);
} }
break; break;
case WM_DESTROY: case WM_DESTROY:
PostQuitMessage(0); PostQuitMessage(0);
break; break;
default: default:
return DefWindowProc(hWnd, message, wParam, lParam); return DefWindowProc(hWnd, message, wParam, lParam);
} }
return 0; return 0;
} }
// Message handler for about box. // Message handler for about box.
INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) INT_PTR CALLBACK
About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{ {
UNREFERENCED_PARAMETER(lParam); UNREFERENCED_PARAMETER(lParam);
switch (message) switch (message)
@ -983,15 +997,16 @@ INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{ {
return (INT_PTR)TRUE; return (INT_PTR)TRUE;
} }
case WM_COMMAND: case WM_COMMAND:
if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
{ {
EndDialog(hDlg, LOWORD(wParam)); EndDialog(hDlg, LOWORD(wParam));
return (INT_PTR)TRUE; return (INT_PTR)TRUE;
} }
break; break;
} }
return (INT_PTR)FALSE; return (INT_PTR)FALSE;
} }
@ -1011,9 +1026,10 @@ DisplayEvent (HWND hDlg)
BOOL bEventData = FALSE; BOOL bEventData = FALSE;
LVITEM li; LVITEM li;
EVENTLOGRECORD* pevlr; EVENTLOGRECORD* pevlr;
int iIndex;
// Get index of selected item // Get index of selected item
int iIndex = (int)SendMessage (hwndListView ,LVM_GETNEXTITEM, -1 , LVNI_SELECTED | LVNI_FOCUSED); iIndex = (int)SendMessage (hwndListView ,LVM_GETNEXTITEM, -1 , LVNI_SELECTED | LVNI_FOCUSED);
li.mask = LVIF_PARAM; li.mask = LVIF_PARAM;
li.iItem = iIndex; li.iItem = iIndex;
@ -1055,17 +1071,17 @@ DisplayEvent (HWND hDlg)
} }
else else
{ {
MessageBox( MessageBox(NULL,
NULL,
"No Items in ListView", "No Items in ListView",
"Error", "Error",
MB_OK | MB_ICONINFORMATION); MB_OK | MB_ICONINFORMATION);
} }
} }
static static
INT_PTR CALLBACK StatusMessageWindowProc( INT_PTR CALLBACK
IN HWND hwndDlg, StatusMessageWindowProc(IN HWND hwndDlg,
IN UINT uMsg, IN UINT uMsg,
IN WPARAM wParam, IN WPARAM wParam,
IN LPARAM lParam) IN LPARAM lParam)
@ -1082,18 +1098,19 @@ INT_PTR CALLBACK StatusMessageWindowProc(
return FALSE; return FALSE;
} }
// Message handler for event details box. // Message handler for event details box.
INT_PTR CALLBACK EventDetails(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) INT_PTR CALLBACK
EventDetails(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{ {
UNREFERENCED_PARAMETER(lParam); UNREFERENCED_PARAMETER(lParam);
switch (message) switch (message)
{ {
case WM_INITDIALOG: case WM_INITDIALOG:
{
// Show event info on dialog box // Show event info on dialog box
DisplayEvent(hDlg); DisplayEvent(hDlg);
return (INT_PTR)TRUE; return (INT_PTR)TRUE;
}
case WM_COMMAND: case WM_COMMAND:
if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
@ -1101,6 +1118,7 @@ INT_PTR CALLBACK EventDetails(HWND hDlg, UINT message, WPARAM wParam, LPARAM lPa
EndDialog(hDlg, LOWORD(wParam)); EndDialog(hDlg, LOWORD(wParam));
return (INT_PTR)TRUE; return (INT_PTR)TRUE;
} }
if (LOWORD(wParam) == IDPREVIOUS) if (LOWORD(wParam) == IDPREVIOUS)
{ {
SendMessage(hwndListView, WM_KEYDOWN, VK_UP, 0); SendMessage(hwndListView, WM_KEYDOWN, VK_UP, 0);
@ -1139,5 +1157,6 @@ INT_PTR CALLBACK EventDetails(HWND hDlg, UINT message, WPARAM wParam, LPARAM lPa
} }
break; break;
} }
return (INT_PTR)FALSE; return (INT_PTR)FALSE;
} }