窗口操作

一、建立名为dialogOp 的mfc 工程 ,添加9个button 和1个check box组件,并按如图修改caption属性。

最大化窗口

双击最大化button,进入dialogOpDlg.cpp添加

void CdialogOpDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
SendMessage(WM_SYSCOMMAND,SC_MAXIMIZE);
}

最小化窗口

双击最小化button,进入dialogOpDlg.cpp添加

void CdialogOpDlg::OnBnClickedButton2()
{
// TODO: 在此添加控件通知处理程序代码
SendMessage(WM_SYSCOMMAND,SC_MINIMIZE);
}

关闭窗口

方法一:

双击还原button,进入dialogOpDlg.cpp添加

void CdialogOpDlg::OnBnClickedButton3()
{
// TODO: 在此添加控件通知处理程序代码
SendMessage(WM_SYSCOMMAND,SC_RESTORE);
}

方法二(弹框确认):参照如图步骤操作进入dialogOpDlg.cpp添加

void CdialogOpDlg::OnClose()
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
if(IDYES == MessageBox(_T("确定关闭窗口?"),NULL,MB_YESNO))
{
CDialogEx::OnClose();
}
}

设置窗口大小和位置

方法一:双击大小位置1button,进入dialogOpDlg.cpp添加

void CdialogOpDlg::OnBnClickedButton5()
{
// TODO: 在此添加控件通知处理程序代码
//其实坐标x ,y,长,宽,前后顺序
SetWindowPos(NULL,100,100,400,300,SWP_NOZORDER);
}

方法二:双击大小位置2button,进入dialogOpDlg.cpp添加

void CdialogOpDlg::OnBnClickedButton6()
{
// TODO: 在此添加控件通知处理程序代码
//其实坐标x ,y,长,宽
MoveWindow(0,0,600,400);
}

居中显示窗口

双击居中button,进入dialogOpDlg.cpp添加

void CdialogOpDlg::OnBnClickedButton7()
{
// TODO: 在此添加控件通知处理程序代码
CenterWindow();
}

顶层显示窗口

参照如图步骤进入dialogOpDlg.cpp添加

void CdialogOpDlg::OnBnClickedCheck1()
{
// TODO: 在此添加控件通知处理程序代码
BOOL bTop = static_cast<CButton *>(GetDlgItem(IDC_CHECK1))->GetCheck();
if(bTop)
::SetWindowPos(m_hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);//当前窗口句柄,顶层,x,y,长,宽,不改变位置和大小
else
::SetWindowPos(m_hWnd,HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);//当前窗口句柄,顶层,x,y,长,宽,不改变位置和大小
}

设置窗口图标

一、按照如下步骤将icon添加到res目录

ico下载

2、参照如下步骤将ico文件添加到资源视图Icon中

3、进入dialogOpDlg.cpp添加

BOOL CdialogOpDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();

// 将“关于...”菜单项添加到系统菜单中。

// IDM_ABOUTBOX 必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
BOOL bNameValid;
CString strAboutMenu;
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
ASSERT(bNameValid);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}

// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
//SetIcon(m_hIcon, FALSE); // 设置小图标
HICON hIcon = AfxGetApp()->LoadIcon(IDI_ICON);
SetIcon(hIcon,FALSE);
// TODO: 在此添加额外的初始化代码

SetWindowText(_T("my title")); //设置初始标题

return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}

获取和设置窗口标题

双击修改标题button,进入dialogOpDlg.cpp添加

void CdialogOpDlg::OnBnClickedButton8()
{
// TODO: 在此添加控件通知处理程序代码
SetWindowText(_T("QQQQ"));
}

双击读取标题button,进入dialogOpDlg.cpp添加
void CdialogOpDlg::OnBnClickedButton9()
{
// TODO: 在此添加控件通知处理程序代码
CString s;
GetWindowText(s);
AfxMessageBox(s);
}

025.MFC_窗口操作的更多相关文章

  1. uCGUI窗口操作要点

    uCGUI窗口操作要点 1. 创建一个窗口的时候,会给此窗口发送“创建(WM_CREATE)”消息,从而执行它的回调函数:如果创建窗口的标志带有“可视标志(WM_CF_SHOW)”,那么在后续执行GU ...

  2. Structured-Streaming之窗口操作

    Structured Streaming 之窗口事件时间聚合操作 Spark Streaming 中 Exactly Once 指的是: 每条数据从输入源传递到 Spark 应用程序 Exactly ...

  3. WPF: WpfWindowToolkit 一个窗口操作库的介绍

    在 XAML 应用的开发过程中,使用MVVM 框架能够极大地提高软件的可测试性.可维护性.MVVM的核心思想是关注点分离,使得业务逻辑从 View 中分离出来到 ViewModel 以及 Model ...

  4. 使用cmd命令行窗口操作SqlServer

    本文主要介绍使用windows下的使用cmd命令行窗口操作Sqlserver, 首先我们可以运行 osql  ?/   ,这样就把所有可以通过CMD命令行操作sqlserver的命令显示出来 (有图有 ...

  5. streaming窗口操作

    之前一直对窗口操作不太理解.认为spark streaming本身已经是分片计算,还需要窗口操作干啥. 窗口操作最为简单易懂的场景就是,在M时间间隔计算一次N时间内的热搜.当M=N的时候,就像上述所说 ...

  6. 项目总结03:window.open()方法用于子窗口数据回调至父窗口,即子窗口操作父窗口

    window.open()方法用于子窗口数据回调至父窗口,即子窗口操作父窗口 项目中经常遇到一个业务逻辑:在A窗口中打开B窗口,在B窗口中操作完以后关闭B窗口,同时自动刷新A窗口(或局部更新A窗口)( ...

  7. JS打开新窗口,子窗口操作父窗口

    <!--父窗口弹窗代码开始--> <script type="text/javascript"> function OpenWindow() { windo ...

  8. CKFinder 弹出窗口操作并设置回调函数

    CKFinder 弹出窗口操作并设置回调函数 官方例子参考CKFinderJava-2.4.1/ckfinder/_samples/popup.html 写一个与EXT集成的小例子 Ext.defin ...

  9. js open窗口父子窗口操作

    http://zhidao.baidu.com/question/61358246.html?an=0&si=1 js open窗口父子窗口操作     父窗口js代码:   function ...

随机推荐

  1. postman 百度网盘下载 64位

    最近找了一下postman的下载资源,竟然发现有些用户的资源要用csdn的积分下载,很是不爽.所以才想到在这里贴出我的百度网盘的地址 下载地址: 链接:https://pan.baidu.com/s/ ...

  2. AbstractExecutorService的submit方法概要介绍

    1.概述 ExecutorService是JDK提供的框架,它简化了异步模式下的任务执行.一般来说,ExecutorService会自动提供一个线程池和API,用于为其分配任务. 2.实例化Execu ...

  3. OpenKruise - 云原生应用自动化引擎正式开源

    2019 年 6 月 24 日至 26 日, 由 Cloud Native Computing Foundation (CNCF) 主办的云原生技术大会 KubeCon + CloudNativeCo ...

  4. 洛谷P1049 装箱问题

    //01背包 价值等于体积 求所剩最小体积 #include<bits/stdc++.h> using namespace std; ; ; int c,n,v[maxn],f[maxv] ...

  5. 消息点击率翻倍的背后——闲鱼无侵入可扩展IFTTT系统

    一.面临问题 在闲鱼生态里,用户之间会有很多种关系.其中大部分关系是由买家触发,联系到卖家,比如买家通过搜索.收藏.聊天等动作与卖家产生联系:另外一部分是平台与用户之间的关系.对这些关系分析之后我们发 ...

  6. LRJ-Example-06-17-Uva10562

    main() 函数中的这两行 fgets(buf[0], maxn, stdin); sscanf(buf[0], "%d", &T); 不能简单替换为 scanf(&qu ...

  7. RegExp类型

    一.创建正则表达式的方法 1.字面量形式 var expressiion=/pattern/flags; flags:g全局模式,即将被应用于所有字符串,而非在发现第一个匹配项时立即停止: i不区分大 ...

  8. JavaScript 拖曳和居中问题

    今天遇到了一个问题,是这样的,有一个div盒子,实现盒子居中,居中的样式是这样的见下 #box{ width:300px; height:150px; position:absolute; left: ...

  9. 原生js实现最简单的瀑布流布局

    文章地址 https://www.cnblogs.com/sandraryan/ 瀑布流:瀑布流,又称瀑布流式布局.是比较流行的一种网站页面布局,视觉表现为参差不齐的多栏布局,随着页面滚动条向下滚动, ...

  10. MySQL存储引擎MyISAM与InnoDB区别

    简单的表达.  MyISAM 是非事务的存储引擎.  innodb是支持事务的存储引擎.    innodb的引擎比较适合于插入和更新操作比较多的应用  而MyISAM 则适合用于频繁查询的应用    ...