📄 smscomdlg.cpp
字号:
// SmsComDlg.cpp : implementation file
//
#include "stdafx.h"
#include "SmsCom.h"
#include "SmsComDlg.h"
#include "DlgProxy.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMyEdit
CMyEdit::CMyEdit()
{
//m_Brush.CreateSolidBrush(RGB(128,128,128));
m_nColor=1;
m_YellowBrush.CreateSolidBrush(RGB(GLRED,GLGREEN,GLBLUE));
m_GrayBrush.CreateSolidBrush(RGB(128,128,128));
}
CMyEdit::~CMyEdit()
{
}
void CMyEdit::SetColor(int nColor)
{
m_nColor=nColor;
}
BEGIN_MESSAGE_MAP(CMyEdit, CEdit)
//{{AFX_MSG_MAP(CMyEdit)
ON_WM_CTLCOLOR_REFLECT()
ON_WM_ERASEBKGND()
ON_WM_VSCROLL()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMyEdit message handlers
HBRUSH CMyEdit::CtlColor(CDC* pDC, UINT nCtlColor)
{
// TODO: Change any attributes of the DC here
if(m_nColor==1){
pDC->SetBkMode(TRANSPARENT);
CRect r;
GetClientRect(r);
if(r.Width()<256)
if(((CSmsComDlg*)AfxGetMainWnd())->Is256()==TRUE)
return NULL;
else
return (HBRUSH)m_YellowBrush.GetSafeHandle();
else{
pDC->SetTextColor((COLORREF)RGB(255,255,255));
return (HBRUSH)m_GrayBrush.GetSafeHandle();
}
}
else
return NULL;
}
BOOL CMyEdit::OnEraseBkgnd(CDC* pDC)
{
// TODO: Add your message handler code here and/or call default
CRect r;
GetClientRect(r);
::FillRect(pDC->m_hDC,CRect(0,0,r.Width(),r.Height()),CBrush(RGB(255,255,224)));
// CDC* pMemDC=new CDC;
// CBitmap* pBMP=new CBitmap;
// pBMP->LoadBitmap(IDB_DOG);
// pMemDC->CreateCompatibleDC(pDC);
// pMemDC->SelectObject(pBMP);
// pDC->BitBlt(0,0,r.Width(),r.Height(),pMemDC,0,0,SRCCOPY);
// delete pMemDC;
// delete pBMP;
return FALSE;
}
void CMyEdit::AppendText(CString sMsg, int nColor)
{
int nLen=GetWindowTextLength();
if(nLen>0)
sMsg="\r\n"+sMsg;
SetColor(nColor);
SetFocus();
SetSel(nLen,nLen);
ReplaceSel(sMsg);
Invalidate();
}
void CMyEdit::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default
Invalidate();
CEdit::OnVScroll(nSBCode, nPos, pScrollBar);
}
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSmsComDlg dialog
const char CSmsComDlg::s_profileHeading[]="Settings";
const char CSmsComDlg::s_profileMoniUnitName[]="MoniUnitName";
IMPLEMENT_DYNAMIC(CSmsComDlg, CDialog);
CSmsComDlg::CSmsComDlg(CWnd* pParent /*=NULL*/)
: CDialog(CSmsComDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CSmsComDlg)
m_szPhoneCode = _T("");
m_szSMSCCode = _T("");
m_szSMText = _T("");
m_nSMTextCounter = 0;
m_szCurSettingPrompt = _T("");
m_szInterAreaMTCode = _T("");
m_szInterAreaSMCCode = _T("");
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
m_pAutoProxy = NULL;
m_nBaudList[0]=2400;
m_nBaudList[1]=4800;
m_nBaudList[2]=9600;
m_nBaudList[3]=14400;
m_nBaudList[4]=19200;
m_nBaudList[5]=28800;
m_nBaudList[6]=38400;
m_nReselCenterBtnFlag=1;//1-修改,2-存档
m_nCodingType=0;//0-英文,1-中文
}
CSmsComDlg::~CSmsComDlg()
{
// If there is an automation proxy for this dialog, set
// its back pointer to this dialog to NULL, so it knows
// the dialog has been deleted.
if (m_pAutoProxy != NULL)
m_pAutoProxy->m_pDialog = NULL;
}
void CSmsComDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CSmsComDlg)
DDX_Control(pDX, IDC_MSG_TIPS, m_ctrlMsgTipsEdt);
DDX_Control(pDX, IDC_CENTER_NAME, m_ctrlCenterName);
DDX_Control(pDX, IDC_SNDSM_LIST, m_ctrlSndSMList);
DDX_Control(pDX, IDC_BAUDLIST_COMBO, m_ctrlBaudSel);
DDX_Control(pDX, IDC_COMLIST_COMBO, m_ctrlComSel);
DDX_Control(pDX, IDC_MSCOMM1, m_ctrlSMSCom);
DDX_Text(pDX, IDC_PHONE_CODE_EDIT, m_szPhoneCode);
DDX_Text(pDX, IDC_SMSC_CODE_EDIT, m_szSMSCCode);
DDV_MaxChars(pDX, m_szSMSCCode, 20);
DDX_Text(pDX, IDC_SM_TEXT_EDIT, m_szSMText);
DDV_MaxChars(pDX, m_szSMText, 160);
DDX_Text(pDX, IDC_SMTEXT_CUNTER_EDIT, m_nSMTextCounter);
DDX_Text(pDX, IDC_CURSETTING_PROMPT_EDIT, m_szCurSettingPrompt);
DDX_Text(pDX, IDC_INTER_AREA_MTCODE_EDIT, m_szInterAreaMTCode);
DDV_MaxChars(pDX, m_szInterAreaMTCode, 3);
DDX_Text(pDX, IDC_INTER_AREA_SMCCODE_EDIT, m_szInterAreaSMCCode);
DDV_MaxChars(pDX, m_szInterAreaSMCCode, 3);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CSmsComDlg, CDialog)
//{{AFX_MSG_MAP(CSmsComDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_WM_CLOSE()
ON_BN_CLICKED(IDC_CLOSE_COM_BUTTON, OnCloseComButton)
ON_BN_CLICKED(IDC_INIT_COM_BUTTON, OnInitComButton)
ON_BN_CLICKED(IDC_SNDSMS_BUTTON, OnSndsmsButton)
ON_BN_CLICKED(IDC_OK, OnClickedOk)
ON_EN_CHANGE(IDC_SM_TEXT_EDIT, OnChangeSmTextEdit)
ON_CBN_SELCHANGE(IDC_COMLIST_COMBO, OnSelchangeComlistCombo)
ON_CBN_SELCHANGE(IDC_BAUDLIST_COMBO, OnSelchangeBaudlistCombo)
ON_BN_CLICKED(IDC_SETTING_BUTTON, OnSettingButton)
ON_BN_CLICKED(IDC_RESEL_CENTER_BUTN, OnReselCenterButn)
ON_CBN_SELCHANGE(IDC_CENTER_NAME, OnSelchangeCenterName)
//}}AFX_MSG_MAP
ON_MESSAGE(MYMSG_GSMSMS_SENDMSG ,OnSndtoPhoneMsgProcess)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSmsComDlg message handlers
BOOL CSmsComDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
CDC* pDC=GetDC();
int nBits=pDC->GetDeviceCaps(BITSPIXEL);
ReleaseDC(pDC);
if(nBits>0&&nBits<=8){
// AfxMessageBox(" 疑蔚 覃 善256伎 ");
m_b256=TRUE;
}
else
m_b256=FALSE;
HWND hWnd;
GetDlgItem(IDC_SNDSM_LIST,&hWnd);
ASSERT(hWnd);
DWORD dwStyle = GetWindowLong(hWnd, GWL_STYLE);
dwStyle &= ~(LVS_TYPEMASK);
dwStyle &= ~(LVS_EDITLABELS);
// Make sure we have report view and send edit label messages.
SetWindowLong( hWnd, GWL_STYLE, dwStyle | LVS_REPORT );
// Enable the full row selection and the drag drop of headers.
DWORD styles = LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDROP | LVS_EX_GRIDLINES;
// Use macro since this is new and not in MFC.
ListView_SetExtendedListViewStyleEx(hWnd, styles, styles );
/****
GetDlgItem(IDC_RCVSM_LIST,&hWnd);
ASSERT(hWnd);
dwStyle = GetWindowLong(hWnd, GWL_STYLE);
dwStyle &= ~(LVS_TYPEMASK);
dwStyle &= ~(LVS_EDITLABELS);
// Make sure we have report view and send edit label messages.
SetWindowLong( hWnd, GWL_STYLE, dwStyle | LVS_REPORT );
// Enable the full row selection and the drag drop of headers.
styles = LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDROP | LVS_EX_GRIDLINES;
// Use macro since this is new and not in MFC.
ListView_SetExtendedListViewStyleEx(hWnd, styles, styles );
****/
LV_COLUMN lvcolumn;
CRect rect;
CString szheader;
m_ctrlSndSMList.GetWindowRect( &rect );
// Insert columns using the order field
lvcolumn.mask = LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH | LVCF_ORDER;
lvcolumn.fmt = LVCFMT_LEFT;
szheader.LoadString(IDS_LISTHEADER_NO);
lvcolumn.pszText =(LPSTR)((LPCSTR)szheader);
//lvcolumn.pszText = _T("序号");
lvcolumn.iSubItem = 0;
lvcolumn.iOrder = 0;
lvcolumn.cx = (rect.Width() /18);
m_ctrlSndSMList.InsertColumn(0, &lvcolumn);
szheader.LoadString(IDS_LISTHEADER_SNDMTCODE);
lvcolumn.pszText =(LPSTR)((LPCSTR)szheader);
//lvcolumn.pszText = _T("发方手机号");
lvcolumn.cx = (rect.Width() /8);
// m_ctrlRcvSMList.InsertColumn(0, &lvcolumn);
lvcolumn.mask = LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH | LVCF_ORDER;
lvcolumn.fmt = LVCFMT_LEFT;
szheader.LoadString(IDS_LISTHEADER_SNDTIME);
lvcolumn.pszText =(LPSTR)((LPCSTR)szheader);
//lvcolumn.pszText = _T("发送时间");
lvcolumn.iSubItem = 1;
lvcolumn.iOrder = 1;
lvcolumn.cx =rect.Width()/5;
m_ctrlSndSMList.InsertColumn(1, &lvcolumn);
szheader.LoadString(IDS_LISTHEADER_SMTEXT);
lvcolumn.pszText =(LPSTR)((LPCSTR)szheader);
//lvcolumn.pszText = _T("消息内容");
lvcolumn.cx =rect.Width()*4;
// m_ctrlRcvSMList.InsertColumn(1, &lvcolumn);
lvcolumn.mask = LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH | LVCF_ORDER;
lvcolumn.fmt = LVCFMT_LEFT;
szheader.LoadString(IDS_LISTHEADER_RCVMTCODE);
lvcolumn.pszText =(LPSTR)((LPCSTR)szheader);
//lvcolumn.pszText = _T("收方手机号");
lvcolumn.iSubItem = 2;
lvcolumn.iOrder = 2;
lvcolumn.cx =rect.Width()/7;
m_ctrlSndSMList.InsertColumn(2, &lvcolumn);
lvcolumn.mask = LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH | LVCF_ORDER;
lvcolumn.fmt = LVCFMT_LEFT;
szheader.LoadString(IDS_LISTHEADER_SMTEXT);
lvcolumn.pszText =(LPSTR)((LPCSTR)szheader);
//lvcolumn.pszText = _T("消息内容");
lvcolumn.iSubItem = 3;
lvcolumn.iOrder = 3;
lvcolumn.cx =rect.Width()*2;
m_ctrlSndSMList.InsertColumn(3, &lvcolumn);
m_ctrlComSel.AddString(_T("Com1"));
m_ctrlComSel.AddString(_T("Com2"));
m_ctrlComSel.SetCurSel(0);
m_nCurComSel=1;//Com1
CString szBaud;
for(int i=0;i<7;i++)
{
szBaud.Empty();
szBaud.Format("%d",m_nBaudList[i]);
m_ctrlBaudSel.AddString(szBaud);
}
m_ctrlBaudSel.SetCurSel(4);
m_nCurBaud=m_nBaudList[4];
CReadDB db;
POSITION pos;
int nCnt=0;
CStringList szMoniUnitNameList;
if(db.GetMoniUnitName(&szMoniUnitNameList)==TRUE)
{
pos=szMoniUnitNameList.GetHeadPosition();
for(int i=0;i<szMoniUnitNameList.GetCount();i++)
{
m_ctrlCenterName.AddString(szMoniUnitNameList.GetAt(pos));
szMoniUnitNameList.GetNext(pos);
}
}
else
{
DispMsg(_T("读取监测中心名[监测中心表=>无数据]!"));
}
if(m_ctrlCenterName.GetCount()>0)
{
CString szMoniUnitName=_T("");
szMoniUnitName=AfxGetApp()->GetProfileString(s_profileHeading,s_profileMoniUnitName);
szMoniUnitName.TrimLeft();
szMoniUnitName.TrimRight();
if(szMoniUnitName.IsEmpty())
{
m_ctrlCenterName.SetCurSel(0);
}
else
{
int nret=m_ctrlCenterName.FindString(0,szMoniUnitName);
if(nret==CB_ERR)
m_ctrlCenterName.SetCurSel(0);
else
m_ctrlCenterName.SetCurSel(nret);
}
m_ctrlCenterName.GetWindowText(szMoniUnitName);
szMoniUnitName.TrimLeft();
szMoniUnitName.TrimRight();
AfxGetApp()->WriteProfileString(s_profileHeading,s_profileMoniUnitName,szMoniUnitName);
CString szMoniUnitID;
if(db.GetMoniUnitIDByMoniUnitName(szMoniUnitName,szMoniUnitID)==TRUE)
{
if(!szMoniUnitID.IsEmpty())
{
CString szSMCIAC,szSMCCode,szMTIAC,szMTCode;
if(db.GetSmsSettingMsg(szMoniUnitID,szSMCIAC,szSMCCode,szMTIAC,szMTCode)==TRUE)
{
m_ctrlGsmSms.SetSMCInterAreaCode(szSMCIAC);
m_ctrlGsmSms.SetSMSCCode(szSMCCode);
m_ctrlGsmSms.SetMTInterAreaCode(szMTIAC);
m_ctrlGsmSms.SetCalledPhoneCode(szMTCode);
}
else
{
CString idgetstr,szcap;
idgetstr.LoadString(IDS_READDB_ERROR);
szcap.LoadString(IDS_READDB_CAPTION_SMSETTING);
//MessageBox(idgetstr,szcap,MB_OK | MB_ICONWARNING);
DispMsg(_T("[")+szMoniUnitName+_T("]")+szcap+idgetstr);
}
if(m_ctrlGsmSms.ReadMTCodeFromDBSet(szMoniUnitID,nCnt)==FALSE)
{
CString idgetstr,szcap;
idgetstr.LoadString(IDS_READDB_ERROR);
szcap.LoadString(IDS_READDB_CAPTION_SMMTLIST);
//MessageBox(idgetstr,szcap,MB_OK | MB_ICONWARNING);
DispMsg(_T("[")+szMoniUnitName+_T("]")+szcap+_T("=>")+idgetstr);
}
}
}
}
/****
CString szSMCIAC,szSMCCode,szMTIAC,szMTCode;
if(db.GetSmsSettingMsg(szSMCIAC,szSMCCode,szMTIAC,szMTCode)==TRUE)
{
m_ctrlGsmSms.SetSMCInterAreaCode(szSMCIAC);
m_ctrlGsmSms.SetSMSCCode(szSMCCode);
m_ctrlGsmSms.SetMTInterAreaCode(szMTIAC);
m_ctrlGsmSms.SetCalledPhoneCode(szMTCode);
}
else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -