孙鑫第七课

来源:互联网 发布:python在线运行 编辑:程序博客网 时间:2024/04/29 11:15
// Testdlg.cpp : 实现文件
//


#include "stdafx.h"
#include "TestDialog1.h"
#include "Testdlg.h"
#include "afxdialogex.h"




// CTestdlg 对话框


IMPLEMENT_DYNAMIC(CTestdlg, CDialog)


CTestdlg::CTestdlg(CWnd* pParent /*=NULL*/)
: CDialog(CTestdlg::IDD, pParent)
, m_NumButton(false)
, m_num1(0)
, m_num2(0)
, m_num3(0)
{


}


CTestdlg::~CTestdlg()
{
}


void CTestdlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT1, m_num1);///值变量
DDX_Text(pDX, IDC_EDIT2, m_num2);
DDX_Text(pDX, IDC_EDIT3, m_num3);
DDV_MinMaxInt(pDX, m_num1, 0, 100);
DDV_MinMaxInt(pDX, m_num2, 0, 100);
DDV_MinMaxInt(pDX, m_num3, 0, 200);///值范围
DDX_Control(pDX, IDC_EDIT1, m_edit1);
DDX_Control(pDX, IDC_EDIT2, m_edit2);///控件变量
DDX_Control(pDX, IDC_EDIT3, m_edit3);
}




BEGIN_MESSAGE_MAP(CTestdlg, CDialog)
ON_BN_CLICKED(IDC_BUTTON1, &CTestdlg::OnBnClickedButton1)
ON_COMMAND(IDC_STATIC, &CTestdlg::OnStatic)
ON_BN_CLICKED(IDC_BUTTON2, &CTestdlg::OnBnClickedButton2)
ON_BN_CLICKED(IDOK, &CTestdlg::OnBnClickedOk)
END_MESSAGE_MAP()




// CTestdlg 消息处理程序




void CTestdlg::OnBnClickedButton1()
{
// TODO:  在此添加控件通知处理程序代码
//第一种方法是 通过静态方法  第二种是通过 全局变量bool值
/*static bool btn_num = false;
if (btn_num == false)
{
m_btn.Create(_T("杭电"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
CRect(10, 10, 100, 30), this, 123);
btn_num = true;
}
else
{
m_btn.DestroyWindow();
btn_num = false;
}*/
/*if (!m_btn.m_hWnd)
{
m_btn.Create(_T("杭电"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
CRect(10, 10, 100, 30), this, 123);
}
else
{
m_btn.DestroyWindow();
}*/


///第一种
/*int num1, num2, num3;
TCHAR ch1[10], ch2[10], ch3[10];


GetDlgItem(IDC_EDIT1)->GetWindowText(ch1, 10);
GetDlgItem(IDC_EDIT2)->GetWindowText(ch2,10);
num1 = _ttoi(ch1);
num2 = _ttoi(ch2);
num3 = num2 + num1;
_itoa_s(num3, ch3, 10);
GetDlgItem(IDC_EDIT3)->SetWindowText(ch3);*/
///第二种
// int num1, num2, num3;
// TCHAR ch1[10], ch2[10], ch3[10];
// GetDlgItemText(IDC_EDIT1,ch1,10);
// GetDlgItemText(IDC_EDIT2, ch2, 10);
//// GetDlgItemText(IDC_EDIT3, ch3, 10);
// num1 = _ttoi(ch1);
// num2 = _ttoi(ch2);
// num3 = num1 + num2;
// _itoa_s(num3, ch3, 10);
// SetDlgItemText(IDC_EDIT3, ch3);
//第三种
/*int num1, num2, num3;
num1 = GetDlgItemInt(IDC_EDIT1);
num2 = GetDlgItemInt(IDC_EDIT2);
num3 = num1 + num2;
SetDlgItemInt(IDC_EDIT3,num3);*/
////第四种


//UpdateData(true);
//m_num3 = m_num1 + m_num2;
//UpdateData(false);
////第5种
/*int num1, num2, num3;
TCHAR ch1[10], ch2[10], ch3[10];
m_edit1.GetWindowTextA(ch1, 10);
m_edit2.GetWindowTextA(ch2, 10);
num1 = _ttoi(ch1);
num2 = _ttoi(ch2);
num3 = num1 + num2;
_itoa_s(num3, ch3, 10);
m_edit3.SetWindowTextA(ch3);*/
///第六种方式
int num1, num2, num3;
TCHAR ch1[10], ch2[10], ch3[10];


// ::SendMessage(GetDlgItem(IDC_EDIT1)->m_hWnd, WM_GETTEXT, 10, (LPARAM)ch1);
////或者是下面这句替换
// ::SendMessage(m_edit2.m_hWnd, WM_GETTEXT, 10, (LPARAM)ch2);


/*m_edit1.SendMessage(WM_GETTEXT, 10, (LPARAM)ch1);
m_edit2.SendMessage(WM_GETTEXT, 10, (LPARAM)ch2);
num1 = _ttoi(ch1);
num2 = _ttoi(ch2);
num3 = num1 + num2;
_itoa_s(num3, ch3, 10);
m_edit3.SendMessage(WM_SETTEXT, 10, (LPARAM)ch3);*/
///第7种方式
SendDlgItemMessage(IDC_EDIT1, WM_GETTEXT, 10, (LPARAM)ch1);
SendDlgItemMessage(IDC_EDIT2, WM_GETTEXT, 10, (LPARAM)ch2);
num1 = _ttoi(ch1);
num2 = _ttoi(ch2);
num3 = num1 + num2;
_itoa_s(num3, ch3, 10);
SendDlgItemMessage(IDC_EDIT3, WM_SETTEXT, 0, (LPARAM)ch3);
SendDlgItemMessage(IDC_EDIT3, EM_SETSEL, 0,-1);
m_edit3.SetFocus();
}






void CTestdlg::OnStatic()
{
// TODO:  在此添加命令处理程序代码
CString str;
if (GetDlgItem(IDC_STATIC)->GetWindowText(str), str == "Number1:")
{
GetDlgItem(IDC_STATIC)->SetWindowText(_T("数值1:"));
}
else
{
GetDlgItem(IDC_STATIC)->SetWindowText(_T("Number1:"));
}
}




void CTestdlg::OnBnClickedButton2()
{
// TODO:  在此添加控件通知处理程序代码
CString str;
if (GetDlgItemText(IDC_BUTTON2, str),str == "收缩<<")
{
SetDlgItemText(IDC_BUTTON2, "扩展>>");
}
else
{
SetDlgItemText(IDC_BUTTON2, "收缩<<");
}
static CRect rect;
static CRect rectNew;
if (rect.IsRectNull())
{
CRect rectSeparator;
GetWindowRect(&rect);
GetDlgItem(IDC_SEPARATOR)->GetWindowRect(&rectSeparator);

rectNew.left = rect.left;
rectNew.top = rect.top;
rectNew.right = rect.right;
rectNew.bottom = rectSeparator.bottom;

}
if (str == "收缩<<")
{
SetWindowPos(NULL, rectNew.right, rectNew.top, rectNew.Width(),
rectNew.Height(), SWP_NOMOVE | SWP_NOZORDER);
}
else
{
SetWindowPos(NULL, rectNew.right, rectNew.top, rect.Width(),
rect.Height(), SWP_NOMOVE | SWP_NOZORDER);
}


}




void CTestdlg::OnBnClickedOk()
{
// TODO:  在此添加控件通知处理程序代码
//GetDlgItem(IDC_EDIT1)->GetNextWindow()->SetFocus();
//GetFocus()->GetNextWindow()->SetFocus();
//GetFocus()->GetWindow(GW_HWNDNEXT)->SetFocus();
GetNextDlgTabItem(GetFocus())->SetFocus();
// CDialog::OnOK();///
}


WNDPROC prevProc;


LRESULT CALLBACK WinSunProc(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
if (uMsg == WM_CHAR && wParam == 0x0d)
{
///获取窗口句柄函数
///::SetFocus(::GetNextWindow(hwnd,GW_HWNDNEXT));
SetFocus(::GetWindow(hwnd,GW_HWNDNEXT));
SetFocus(::GetNextDlgTabItem(::GetParent(hwnd),hwnd,FALSE));
return 1;
}
else
{
return prevProc(hwnd, uMsg, wParam, lParam);
}
}




BOOL CTestdlg::OnInitDialog()
{
CDialog::OnInitDialog();


// TODO:  在此添加额外的初始化
prevProc = (WNDPROC)SetWindowLong(GetDlgItem(IDC_EDIT1)->m_hWnd,GWL_WNDPROC,
(long)WinSunProc);
return TRUE;  // return TRUE unless you set the focus to a control
// 异常:  OCX 属性页应返回 FALSE
}
0 0
原创粉丝点击