VOID AddToMessageLog(LPTSTR lpszMsg)
{
TCHAR szMsg[256];
HANDLE hEventSource;
LPTSTR lpszStrings[2]; //在我的程序里要修改成LPCTSTR lpszStrings[2];才能编译通过,否则提示error C2664: 'ReportEventA' : cannot convert parameter 8 from 'char *[2]' to 'const char ** ' Conversion loses qualifiers,但在原来的系统里不用修改也能通过,为什么? if ( !bDebug )
{
dwErr = GetLastError(); // Use event logging to log the error.
//
hEventSource = RegisterEventSource(NULL, TEXT(SZSERVICENAME)); _stprintf(szMsg, TEXT("%s my error: %d"), TEXT(SZSERVICENAME), dwErr);
lpszStrings[0] = szMsg;
lpszStrings[1] = lpszMsg; if (hEventSource != NULL) {
ReportEvent(hEventSource, // handle of event source
EVENTLOG_ERROR_TYPE, // event type
0, // event category
0, // event ID
NULL, // current user's SID
2, // strings in lpszStrings
0, // no bytes of raw data
lpszStrings, // array of error strings
NULL); // no raw data (VOID) DeregisterEventSource(hEventSource); }
}
}
{
TCHAR szMsg[256];
HANDLE hEventSource;
LPTSTR lpszStrings[2]; //在我的程序里要修改成LPCTSTR lpszStrings[2];才能编译通过,否则提示error C2664: 'ReportEventA' : cannot convert parameter 8 from 'char *[2]' to 'const char ** ' Conversion loses qualifiers,但在原来的系统里不用修改也能通过,为什么? if ( !bDebug )
{
dwErr = GetLastError(); // Use event logging to log the error.
//
hEventSource = RegisterEventSource(NULL, TEXT(SZSERVICENAME)); _stprintf(szMsg, TEXT("%s my error: %d"), TEXT(SZSERVICENAME), dwErr);
lpszStrings[0] = szMsg;
lpszStrings[1] = lpszMsg; if (hEventSource != NULL) {
ReportEvent(hEventSource, // handle of event source
EVENTLOG_ERROR_TYPE, // event type
0, // event category
0, // event ID
NULL, // current user's SID
2, // strings in lpszStrings
0, // no bytes of raw data
lpszStrings, // array of error strings
NULL); // no raw data (VOID) DeregisterEventSource(hEventSource); }
}
}
LPTSTR lpszStrings[2];
这样定义.然后强制转换:
ReportEvent(hEventSource, // handle of event source
EVENTLOG_ERROR_TYPE, // event type
0, // event category
0, // event ID
NULL, // current user's SID
2, // strings in lpszStrings
0, // no bytes of raw data
(LPTSTR*)lpszStrings, // array of error strings
NULL); // no raw data
这是不会出任何问题的.