您的位置:首页 > 编程语言 > C语言/C++

VC++孙鑫视频笔记(七)

2010-08-25 00:18 260 查看
对话框用户界面程序的编写,如何向对话框控件关联数据成员及其实现机理,如何利用对话框类的成员函数向控件发送消息和获取对话框控件的类指针,如何直接利用对话框控件类操纵对话框控件(发送消息和直接调用成员函数)。如何在程序运行时产生和销毁控件。对话框控件的几种操作方式的优劣比较分析。如何实现对话框的部分收缩和展开。如何让对话框上的文本框在程序启动后立即获得焦点SetFous GetFouce,如何利用SetWindowLong改变窗口的回调函数,通过改变文本框的默认回车处理方式进行演示。实现多个输入文本框间通过回车逐一向下传递焦点的另一种巧妙方法(用缺省按钮来处理)。

1>对话框的分类:模态对话框(domodel)与非模态对话框(Create + ShowWindow)

2>对话框控件的七种访问方式:



PS:控件与成员变量相关联在DoDateExchange中,当为正型变量时需要通过UpdateData()来进行数据交换。

几个消息WM_GETTEXT WM_SETTEXT 和 EM_GETTEXT

3>对话框的收缩与扩张

a.控件文本的变换

b.分隔符,使用Picture控件,可以隐藏

c.CRECT 记录原来的对话框与变化后的对话框

d.SetWindowPos

关键代码:

void CTestDlg::OnButton2()
{
// TODO: Add your control notification handler code here
CString str;
if(GetDlgItemText(IDC_BUTTON2,str),str=="收缩<<")
{
SetDlgItemText(IDC_BUTTON2,"扩展>>");
}
else
{
SetDlgItemText(IDC_BUTTON2,"收缩<<");
}

static CRect rectLarge;
static CRect rectSmall;

if(rectLarge.IsRectNull())
{
CRect rectSeparator;
GetWindowRect(&rectLarge);
GetDlgItem(IDC_SEPARATOR)->GetWindowRect(&rectSeparator);

rectSmall.left=rectLarge.left;
rectSmall.top=rectLarge.top;
rectSmall.right=rectLarge.right;
rectSmall.bottom=rectSeparator.bottom;
}
if(str=="收缩<<")
{
SetWindowPos(NULL,0,0,rectSmall.Width(),rectSmall.Height(),
SWP_NOMOVE | SWP_NOZORDER);
}
else
{
SetWindowPos(NULL,0,0,rectLarge.Width(),rectLarge.Height(),
SWP_NOMOVE | SWP_NOZORDER);
}
}


4>在窗口已确定后如何去修改窗口过程,使用SetWindowLong()可以改变指定窗口的属性,这个函数可以放在OnInit函数里。

5>获取窗口句柄,GetNextWindow(),GetWindow(),GetNextDlgTabItem()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: