孙鑫第七课
来源:互联网 发布: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
}
//
#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
- 孙鑫第七课
- 孙鑫第七课:对话框,vs2005
- 孙鑫视频教程第七课——对话框(一)
- 第七课
- 第七课:输出字符串
- java第七课
- STL第七课
- 第七课 策略模式
- 第七课作业
- WebGL 第七课 中文翻译
- 第七课学习
- java 第七课 变量
- 吉他第七课
- 异常处理(第七课)
- Android第七课--Dialog
- C++第七课
- Java第七课
- FICO第七次课
- ConnectivityManager
- FPGA研发之道(7)架构设计漫谈(二)
- 红黑树的基本概念
- 用VC进行COM编程所必须掌握的理论知识
- 顺序图画法
- 孙鑫第七课
- PAT循环-08. 二分法求多项式单根(20)
- 计算机安全篇(1)
- 明升综合分析
- 类似于falsh图片切换效果
- @RenderBody()和@RenderSection()
- Eclipse代码补全 及 空格键 "="键自动上屏问题
- 获取每一年二月的天数
- android onTouch 与 onTouchEvent