📄 tstril.cpp
字号:
// tstril.cpp : Defines the entry point for the application.
//
#include "stdafx.h"
#include "tstril.h"
#include <commctrl.h>
#include <aygshell.h>
#include <sipapi.h>
#include "ril.h"
#define MAX_LOADSTRING 100
// Global Variables:
HINSTANCE g_hInst; // The current instance
HWND g_hwndCB; // The command bar handle
HWND g_hwndEdit;
HRIL g_hRil = 0;
DWORD g_dwParam = 0x55AA55AA;
static SHACTIVATEINFO s_sai;
// Forward declarations of functions included in this code module:
ATOM MyRegisterClass (HINSTANCE, LPTSTR);
BOOL InitInstance (HINSTANCE, int);
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK About (HWND, UINT, WPARAM, LPARAM);
HWND CreateRpCommandBar(HWND);
TCHAR *hexdump(unsigned char *data, int n)
{
static TCHAR buf[1000];
TCHAR *p;
p=buf;
while (n--)
{
p += _sntprintf(p, 4, TEXT(" %02x"), *data++);
}
return buf;
}
void DoError(LPTSTR where)
{
TCHAR *msgbuf;
int msglen= FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
NULL, GetLastError(), 0, (LPTSTR) &msgbuf, 0, NULL);
MessageBox(NULL, msgbuf, where, MB_OK);
LocalFree(msgbuf);
}
BOOL GetDateAndTime(SYSTEMTIME *st, LPTSTR szDate, LPTSTR szTime, DWORD dwSize)
{
if (!GetDateFormat(LOCALE_NEUTRAL, DATE_SHORTDATE, st, NULL, szDate, dwSize)) {
DoError(L"GetDateFormat");
return FALSE;
}
if (!GetTimeFormat(LOCALE_NEUTRAL, TIME_NOSECONDS, st, NULL, szTime, dwSize)) {
DoError(L"GetTimeFormat");
return FALSE;
}
return TRUE;
}
void
DisplayDCS(RILMSGDCS * prmDCS)
{
TCHAR szString[256];
wsprintf(szString, L" DCS cbSize: 0x%0x, %d", prmDCS->cbSize, prmDCS->cbSize);
SendMessage(g_hwndEdit, LB_ADDSTRING, 0, (LPARAM) szString);
wsprintf(szString, L" DCS dwParams: 0x%0x, %d", prmDCS->dwParams, prmDCS->dwParams);
SendMessage(g_hwndEdit, LB_ADDSTRING, 0, (LPARAM) szString);
wsprintf(szString, L" DCS dwType: 0x%0x, %d", prmDCS->dwType, prmDCS->dwType);
SendMessage(g_hwndEdit, LB_ADDSTRING, 0, (LPARAM) szString);
wsprintf(szString, L" DCS dwFlags: 0x%0x, %d", prmDCS->dwFlags, prmDCS->dwFlags);
SendMessage(g_hwndEdit, LB_ADDSTRING, 0, (LPARAM) szString);
wsprintf(szString, L" DCS dwMsgClass: 0x%0x, %d", prmDCS->dwMsgClass, prmDCS->dwMsgClass);
SendMessage(g_hwndEdit, LB_ADDSTRING, 0, (LPARAM) szString);
wsprintf(szString, L" DCS dwAlphabet: 0x%0x, %d", prmDCS->dwAlphabet, prmDCS->dwAlphabet);
SendMessage(g_hwndEdit, LB_ADDSTRING, 0, (LPARAM) szString);
wsprintf(szString, L" DCS dwIndication: 0x%0x, %d", prmDCS->dwIndication, prmDCS->dwIndication);
SendMessage(g_hwndEdit, LB_ADDSTRING, 0, (LPARAM) szString);
wsprintf(szString, L" DCS dwLanguage: 0x%0x, %d", prmDCS->dwLanguage, prmDCS->dwLanguage);
SendMessage(g_hwndEdit, LB_ADDSTRING, 0, (LPARAM) szString);
}
void
DisplayMessage(RILMESSAGE *prmMsg)
{
TCHAR szDate[256], szTime[256];
TCHAR szString[1024];
wsprintf(szString, L" cbSize: 0x%0x, %d", prmMsg->cbSize, prmMsg->cbSize);
SendMessage(g_hwndEdit, LB_ADDSTRING, 0, (LPARAM) szString);
wsprintf(szString, L" dwParams: 0x%0x, %d", prmMsg->dwParams, prmMsg->dwParams);
SendMessage(g_hwndEdit, LB_ADDSTRING, 0, (LPARAM) szString);
wsprintf(szString, L" Service Centre: %s", prmMsg->raSvcCtrAddress.wszAddress);
SendMessage(g_hwndEdit, LB_ADDSTRING, 0, (LPARAM) szString);
wsprintf(szString, L" dwType: 0x%0x, %d", prmMsg->dwType, prmMsg->dwType);
SendMessage(g_hwndEdit, LB_ADDSTRING, 0, (LPARAM) szString);
wsprintf(szString, L" dwFlags: 0x%0x, %d", prmMsg->dwFlags, prmMsg->dwFlags);
SendMessage(g_hwndEdit, LB_ADDSTRING, 0, (LPARAM) szString);
switch(prmMsg->dwType) {
case RIL_MSG_IN_DELIVER:
{
wsprintf(szString, L" From: %s", prmMsg->msgInDeliver.raOrigAddress.wszAddress);
SendMessage(g_hwndEdit, LB_ADDSTRING, 0, (LPARAM) szString);
wsprintf(szString, L" dwProtocolID: 0x%0x, %d", prmMsg->msgInDeliver.dwProtocolID, prmMsg->msgInDeliver.dwProtocolID);
SendMessage(g_hwndEdit, LB_ADDSTRING, 0, (LPARAM) szString);
DisplayDCS(&prmMsg->msgInDeliver.rmdDataCoding);
if (!GetDateAndTime(&prmMsg->msgInDeliver.stSCReceiveTime, szDate, szTime, 256))
{
return;
}
wsprintf(szString, L" Received: %s on %s", szTime, szDate);
SendMessage(g_hwndEdit, LB_ADDSTRING, 0, (LPARAM) szString);
wsprintf(szString, L" Header Length: %d", prmMsg->msgInDeliver.cbHdrLength);
SendMessage(g_hwndEdit, LB_ADDSTRING, 0, (LPARAM) szString);
wsprintf(szString, L" Body Length: %d", prmMsg->msgInDeliver.cchMsgLength);
SendMessage(g_hwndEdit, LB_ADDSTRING, 0, (LPARAM) szString);
if (prmMsg->msgInDeliver.cchMsgLength) {
wsprintf(szString, L" Message: %s", hexdump(prmMsg->msgInDeliver.rgbMsg, prmMsg->msgInDeliver.cchMsgLength));
SendMessage(g_hwndEdit, LB_ADDSTRING, 0, (LPARAM) szString);
}
break;
}
case RIL_MSG_IN_STATUS:
{
wsprintf(szString, L" Target address: %s", prmMsg->msgInStatus.raTgtRecipAddress.wszAddress);
SendMessage(g_hwndEdit, LB_ADDSTRING, 0, (LPARAM) szString);
if (!GetDateAndTime(&prmMsg->msgInStatus.stTgtSCReceiveTime, szDate, szTime, 256))
{
return;
}
wsprintf(szString, L" Receive Time: %s on %s", szTime, szDate);
SendMessage(g_hwndEdit, LB_ADDSTRING, 0, (LPARAM) szString);
if (!GetDateAndTime(&prmMsg->msgInStatus.stTgtDischargeTime, szDate, szTime, 256))
{
return;
}
wsprintf(szString, L" Discharge Time: %s on %s", szTime, szDate);
SendMessage(g_hwndEdit, LB_ADDSTRING, 0, (LPARAM) szString);
wsprintf(szString, L" dwTgtDlvStatus: 0x%0x, %d", prmMsg->msgInStatus.dwTgtDlvStatus, prmMsg->msgInStatus.dwTgtDlvStatus);
SendMessage(g_hwndEdit, LB_ADDSTRING, 0, (LPARAM) szString);
wsprintf(szString, L" dwProtocolID: 0x%0x, %d", prmMsg->msgInStatus.dwProtocolID, prmMsg->msgInStatus.dwProtocolID);
SendMessage(g_hwndEdit, LB_ADDSTRING, 0, (LPARAM) szString);
DisplayDCS(&prmMsg->msgInStatus.rmdDataCoding);
wsprintf(szString, L" Header Length: %d", prmMsg->msgInStatus.cbHdrLength);
SendMessage(g_hwndEdit, LB_ADDSTRING, 0, (LPARAM) szString);
wsprintf(szString, L" Body Length: %d", prmMsg->msgInStatus.cchMsgLength);
SendMessage(g_hwndEdit, LB_ADDSTRING, 0, (LPARAM) szString);
if (prmMsg->msgInStatus.cchMsgLength) {
wsprintf(szString, L" Message: %s", hexdump(prmMsg->msgInStatus.rgbMsg, prmMsg->msgInStatus.cchMsgLength));
SendMessage(g_hwndEdit, LB_ADDSTRING, 0, (LPARAM) szString);
}
break;
}
default:
wsprintf(szString, L"Message type not covered yet!");
SendMessage(g_hwndEdit, LB_ADDSTRING, 0, (LPARAM) szString);
break;
}
}
void CALLBACK NotifyCallback(DWORD dwCode, const void *lpData,
DWORD cbData, DWORD dwParam)
{
TCHAR szString[256];
wsprintf(szString, L"notify: dwCode=0x%0X lpData=%p, cbData=%d",dwCode, lpData, cbData);
SendMessage(g_hwndEdit, LB_ADDSTRING, 0, (LPARAM) szString);
switch (dwCode & RIL_NCLASS_ALL) {
case RIL_NCLASS_MESSAGE:
{
wsprintf(szString, L"SMS Message Notification:");
SendMessage(g_hwndEdit, LB_ADDSTRING, 0, (LPARAM) szString);
switch (dwCode & 0xff) {
case RIL_NOTIFY_MESSAGE:
{
RILMESSAGE *prm = (RILMESSAGE *)lpData;
wsprintf(szString, L" Incoming message");
SendMessage(g_hwndEdit, LB_ADDSTRING, 0, (LPARAM) szString);
DisplayMessage(prm);
break;
}
case RIL_NOTIFY_STATUSMESSAGE:
{
RILMESSAGE *prm = (RILMESSAGE *)lpData;
wsprintf(szString, L" Incoming status message");
SendMessage(g_hwndEdit, LB_ADDSTRING, 0, (LPARAM) szString);
DisplayMessage(prm);
break;
}
}
break;
}
}
}
void CALLBACK ResultCallback(DWORD dwCode, HRESULT hrCmdID, const void *lpData,
DWORD cbData, DWORD dwParam)
{
TCHAR szString[256];
wsprintf(szString, L"result: dwCode=%d, hrCmdID=%d lpData=%p, cbData=%d",dwCode,
hrCmdID, lpData, cbData);
SendMessage(g_hwndEdit, LB_ADDSTRING, 0, (LPARAM) szString);
}
DWORD
DoRIL(LPVOID lpvoid)
{
HRESULT result;
DWORD dwNotificationClasses = 0xFF0000;
LRESULT lresult;
TCHAR szString[256];
SendMessage(g_hwndEdit, LB_RESETCONTENT, 0, 0);
lresult = SendMessage(g_hwndEdit, LB_GETHORIZONTALEXTENT, 0, 0);
SendMessage(g_hwndEdit, LB_SETHORIZONTALEXTENT, 1000, 0);
result = RIL_Initialize(1, ResultCallback, NotifyCallback,
dwNotificationClasses, g_dwParam, &g_hRil);
wsprintf(szString, L"RIL Handle: %08X, result %08X", g_hRil, result);
SendMessage(g_hwndEdit, LB_ADDSTRING, 0, (LPARAM) szString);
while(1) {
Sleep(100);
// wsprintf(szString, L"%s",L"...");
// SendMessage(g_hwndEdit, LB_ADDSTRING, 0, (LPARAM) szString);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -