?? dialerview.cpp
字號:
// DialerView.cpp : implementation of the CDialerView class
//
#include "stdafx.h"
#include "Dialer.h"
#include "DialerDoc.h"
#include "DialerView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDialerView
IMPLEMENT_DYNCREATE(CDialerView, CFormView)
BEGIN_MESSAGE_MAP(CDialerView, CFormView)
//{{AFX_MSG_MAP(CDialerView)
ON_EN_SETFOCUS(IDC_EDT_CALLCMD, OnSetfocusEdtCallcmd)
ON_EN_CHANGE(IDC_EDT_CALLCMD, OnChangeEdtCallcmd)
ON_BN_CLICKED(IDC_BTN_PLUS, OnBtnPlus)
ON_BN_CLICKED(IDC_BTN1, OnBtnNum)
ON_EN_KILLFOCUS(IDC_EDT_CALLCMD, OnKillfocusEdtCallcmd)
ON_BN_CLICKED(IDC_BTN_QUICKDIAL, OnBtnQuickdial)
ON_BN_CLICKED(IDC_BTN_CALL, OnBtnCallOut)
ON_BN_CLICKED(IDC_BTN_RETURN, OnBtnReturn)
ON_BN_CLICKED(IDC_BTN2, OnBtnNum)
ON_BN_CLICKED(IDC_BTN3, OnBtnNum)
ON_BN_CLICKED(IDC_BTN4, OnBtnNum)
ON_BN_CLICKED(IDC_BTN5, OnBtnNum)
ON_BN_CLICKED(IDC_BTN6, OnBtnNum)
ON_BN_CLICKED(IDC_BTN7, OnBtnNum)
ON_BN_CLICKED(IDC_BTN8, OnBtnNum)
ON_BN_CLICKED(IDC_BTN9, OnBtnNum)
ON_BN_CLICKED(IDC_BTN_STAR, OnBtnNum)
ON_BN_CLICKED(IDC_BTN_WAIT, OnBtnNum)
ON_BN_CLICKED(IDC_BTN_WELL, OnBtnNum)
ON_BN_CLICKED(IDC_BTN_PAUSE, OnBtnNum)
ON_BN_CLICKED(IDC_BTN0, OnBtnNum)
ON_BN_CLICKED(IDC_BTN_IP, OnBtnIp)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDialerView construction/destruction
CDialerView::CDialerView()
: CFormView(CDialerView::IDD)
{
//{{AFX_DATA_INIT(CDialerView)
m_strCallCmd = _T("");
//}}AFX_DATA_INIT
// TODO: add construction code here
}
CDialerView::~CDialerView()
{
}
void CDialerView::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDialerView)
DDX_Text(pDX, IDC_EDT_CALLCMD, m_strCallCmd);
//}}AFX_DATA_MAP
}
BOOL CDialerView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CFormView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CDialerView diagnostics
#ifdef _DEBUG
void CDialerView::AssertValid() const
{
CFormView::AssertValid();
}
void CDialerView::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
CDialerDoc* CDialerView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CDialerDoc)));
return (CDialerDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CDialerView message handlers
void CDialerView::OnSetfocusEdtCallcmd()
{
// HCURSOR hCursor = GetCursor();
// SetCursor(hCursor);
CEdit *edit = (CEdit*)(GetDlgItem(IDC_EDT_CALLCMD));
edit->SetSel(m_iStart,m_iEnd,FALSE);
}
void CDialerView::OnChangeEdtCallcmd()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CFormView::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
UpdateData(TRUE);
if (m_strCallCmd.GetLength () != 0)//電話編輯框中有輸入時,則顯示切換成刪除功能
{
GetDlgItem(IDC_BTN_PLUS)->SetWindowText(_T("C"));
}
else//否則切換成輸入“+”字符
{
GetDlgItem(IDC_BTN_PLUS)->SetWindowText(_T("+"));
}
}
void CDialerView::OnBtnPlus()
{
CString strTmp;
GetDlgItem(IDC_BTN_PLUS)->GetWindowText(strTmp);
if (strTmp == _T("C"))
{
m_strCallCmd = _T("");
}
else
{
m_strCallCmd = _T("+");
}
CEdit *edit = (CEdit*)(GetDlgItem(IDC_EDT_CALLCMD));
edit->GetSel (m_iStart,m_iEnd);
if(m_iStart == m_iEnd)
{
edit->SetSel (m_iStart++,m_iEnd++,FALSE);
}
else
{
m_iStart++;
m_iEnd = m_iStart;
edit->SetSel (m_iStart,m_iEnd,FALSE);
}
UpdateData(FALSE);
OnChangeEdtCallcmd();
edit->SetFocus ();
}
void CDialerView::OnBtnNum()
{
CString strInsert,strLeft,strRight;
int iID = GetFocus()->GetDlgCtrlID ();
switch(iID)
{
case IDC_BTN0:
strInsert = "0";
break;
case IDC_BTN1:
strInsert = "1";
break;
case IDC_BTN2:
strInsert = "2";
break;
case IDC_BTN3:
strInsert = "3";
break;
case IDC_BTN4:
strInsert = "4";
break;
case IDC_BTN5:
strInsert = "5";
break;
case IDC_BTN6:
strInsert = "6";
break;
case IDC_BTN7:
strInsert = "7";
break;
case IDC_BTN8:
strInsert = "8";
break;
case IDC_BTN9:
strInsert = "9";
break;
case IDC_BTN_STAR:
strInsert = "*";
break;
case IDC_BTN_WELL:
strInsert = "#";
break;
case IDC_BTN_WAIT:
strInsert = "W";
break;
case IDC_BTN_PAUSE:
strInsert = "P";
break;
}
CEdit *edit = (CEdit*)(GetDlgItem(IDC_EDT_CALLCMD));
edit->GetSel (m_iStart,m_iEnd);
CPoint point;// = edit->GetCaretPos ();
strLeft = m_strCallCmd.Left (m_iStart);
strRight = m_strCallCmd.Right (m_strCallCmd.GetLength () - m_iEnd);
m_strCallCmd = strLeft + strInsert + strRight;
if(m_iStart == m_iEnd)
{
edit->SetSel (m_iStart++,m_iEnd++,FALSE);
}
else
{
m_iStart++;
m_iEnd = m_iStart;
edit->SetSel (m_iStart,m_iEnd,FALSE);
}
UpdateData(FALSE);
OnChangeEdtCallcmd();
edit->SetFocus ();
}
void CDialerView::OnKillfocusEdtCallcmd()
{
CEdit *edit = (CEdit*)(GetDlgItem(IDC_EDT_CALLCMD));
edit->GetSel(m_iStart,m_iEnd);
}
//調用快速撥號程序并與之通訊
void CDialerView::OnBtnQuickdial()
{
PROCESS_INFORMATION process;
CWnd *pWnd = FindWindow(NULL,_T("QuickDial"));
if (pWnd == NULL)//快速撥號程序沒有運行,則調用程序。
{
CreateProcess(L"\\QuickDial.exe",NULL,NULL,
NULL,NULL,0,NULL,NULL,NULL,&process);
}
else//否則向程序發送消息
{
MessageBox(_T("向快速撥號程序發送消息"),NULL,MB_OK);
}
}
/*
void CDialerView::OnClose()
{
// TODO: Add your message handler code here and/or call default
MessageBox(_T("我收到了外部發來的消息WM_CLOSE"),NULL,MB_OK);
CFormView::OnClose();
}
*/
void CDialerView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
RECT rect;
CEdit *edit = (CEdit*)(GetDlgItem(IDC_EDT_CALLCMD));
edit->GetWindowRect (&rect);
LOGFONT lf;
static CFont font;
memset(&lf,0,sizeof(lf));
lf.lfHeight = rect.bottom - rect.top ; //改變字體高度,和矩形框一樣高
font.CreateFontIndirect(&lf) ;
edit->SetFont (&font,TRUE);
}
void CDialerView::OnBtnReturn()
{
CEdit *edit = (CEdit*)(GetDlgItem(IDC_EDT_CALLCMD));
edit->GetSel (m_iStart,m_iEnd);
if(m_iStart == m_iEnd)
{
m_strCallCmd.Delete (m_iStart-1,1);
edit->SetSel (m_iStart--,m_iEnd--,FALSE);
}
else
{
m_strCallCmd.Delete (m_iStart,m_iEnd-m_iStart);
m_iEnd = m_iStart;
edit->SetSel (m_iStart,m_iEnd,FALSE);
}
UpdateData(FALSE);
OnChangeEdtCallcmd();
edit->SetFocus ();
}
void CDialerView::OnBtnIp()
{
CString strIp;
UpdateData(TRUE);
strIp = _T("17951");
m_strCallCmd = strIp + m_strCallCmd;
typedef void (WINAPI * CALL)(CString);
HINSTANCE hmod;
hmod = ::LoadLibrary (_T("CALL.dll"));
if(hmod==NULL)
{
AfxMessageBox(_T("Fail"));
}
CALL lpproc = (CALL)GetProcAddress (hmod,_T("CallOut"));
if(lpproc!=(CALL)NULL)
lpproc(m_strCallCmd);
// (*lpproc)();
FreeLibrary(hmod);
}
void CDialerView::OnBtnCallOut()
{
typedef void (WINAPI * TESTDLL)();
HINSTANCE hmod;
hmod = ::LoadLibrary (_T("CALL.dll"));
if(hmod==NULL)
{
AfxMessageBox(_T("Fail"));
}
TESTDLL lpproc;
lpproc = (TESTDLL)GetProcAddress (hmod,_T("CallOut"));
if(lpproc!=(TESTDLL)NULL)
(*lpproc)();
FreeLibrary(hmod);
}
/*
m_strCallCmd = theApp.g_strCmdTel ;
MessageBox(m_strCallCmd,NULL,MB_OK);
UpdateData(FALSE);
*/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -