1、实现窗口的最大化和最小化
将对话框的Border选为None,添加两个按钮,min和close,将按钮的bitmap设置为TRUE;用于添加最小和最大的背景图片
双击min按钮事件中添加:
CWnd::ShowWindow(SW_SHOWMINIMIZED);
双击close按钮事件中添加:
exit(0);
调整位置:
2、添加一个模态对话框,非模态对话框可以拖动,模态对话框不能拖动。
打开类视图,单击选中要添加初始函数的类。在看对应的属性框,添加Onitdialog()
非模态:右键diag,插入diaglog;点击对话框,添加类
#include "DiagQuit.h"
Public:
DiagQuit *quitDiag;
DiagConnect::~DiagConnect()
{
//添加一个释放模态对话框
if (NULL!=quitDiag)
{
delete quitDiag;
}
}
OnClose(){
if (NULL==quitDiag)
{
quitDiag = new DiagQuit();
quitDiag->Create(IDD_DIALOG_quit,this);
}
quitDiag->ShowWindow(SW_SHOW);
}
调用:
//INT_PTR nRes;//typedef _W64 int INT_PTR 又把__W64 定义成 _W64...笑哭。。。
//CDiaglogQuit tipDlg;//声明一个CTipDlg的对象 tipDlg
//nRes = tipDlg.DoModal();//对象创建模型赋给那个整形指针。
if (nRes == IDCANCEL) {//整形指针的结果如果是退出
return;//就返回,对于当前这个按钮按下事件的处理结束。
}
//if (nRes== IDOK)
//{
// exit(0);
//}
//else
//{
// return;
//}
4、全局变量的使用,这样就可以在对话框中调用另一个对话框,显示不同的值;同一个对话框根据不同情况显示不同的信息。
2。在stdafx.cpp中加入:
int myInt;
然后在stdafx.h中加入:
extern int myInt
这样定义以后无论在什么文件中都是可见的.
5、
选择这个控件-->属性
Align Text --> Center 左右居中
Center Image --> True 上下居中
6、将静态文本框的背景颜色设置为透明
在对话框中添加响应OnCtlColor
在响应函数中添加如下代码,注意静态文本框的id需要改变:
HBRUSH CDiaglogDeviceNoCon::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: 在此更改 DC 的任何特性
//在这里改变文本框的背景颜色,设置为透明
//if (nCtlColor == IDC_STATIC_device)
if(pWnd->GetDlgCtrlID()== IDC_STATIC_device)
{
//pDC->SetBkColor(RGB(255,0,0));//指定背景颜色
pDC->SetTextColor(RGB(0,0,0));//文字的颜色
pDC->SetBkMode(TRANSPARENT);//设置为透明,和下一句一起使用
hbr = (HBRUSH)GetStockObject(NULL_BRUSH);//获取画笔颜色混合后的画笔,完成透明
}
// TODO: 如果默认的不是所需画笔,则返回另一个画笔
return hbr;
}
设置文件框的背景色后,如果要动态的刷新文件框的内容,则会出现重叠现象;因为背景色已确定,每次都要已文本的自带的颜色画,背景色不能更新。但是可以采用单独刷新文本框的方法来修改,代码如下:
//初始值
CStatic * p = (CStatic *)GetDlgItem(IDC_STATIC_percent);
p->SetWindowText((L" "));
CRect rtlbl;
GetDlgItem(IDC_STATIC_percent)->GetWindowRect(&rtlbl);
GetDlgItem(IDC_STATIC_version)->GetWindowRect(&rtlbl);
ScreenToClient(&rtlbl); //转到客户端界面
InvalidateRect(&rtlbl);//最后刷新对话框背景
UpdateWindow();
7、根据屏幕自适应调整对话框大小
在消息有个WM_SIZE,添加函数OnSize,这样可以在函数内调整控件的大小,特别说明很多代码中利用当前控件比值与窗口大小比值再乘上当前窗口大小来改变控件大小。
...