MFC/QT 学习笔记(四)——MFC基于对话框学习控件(上)
新建项目->MFC模板->MFC应用程序->应用程序类型:基于对话框->...OK
解决方案资源管理器->资源文件->xxx.rc->进入:资源视图->Dialog->IDD_DEMO_DIALOG->打开工具箱(在侧面找)
//0.准备
删除默认控件:ctrl+A,fn+delete;
修改名称 属性 属性 captain
点击触发事件 属性 控件事件 BN_CLICKED ;右键 添加事件处理程序;双击进入编辑
插入窗口 右键 添加类
插入工具 右键 添加变量:控件/值 private
//1.模态/非模态对话窗口 插入Dialog
模态:只可对当前窗口操作
非模态:可对所有窗口操作
插入窗口 右键 添加类
//文件名:CAboutDlg.h
按钮1:模态对话框
void CdemoDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
//弹出模态对话框,阻塞功能
CDlgExec dlg;
dlg.DoModal();
}
按钮2:非模态对话框
void CdemoDlg::OnBnClickedButton2()
{
// TODO: 在此添加控件通知处理程序代码
//弹出非模态对话框,
//CDlgShow dlg; 会一闪而过,写到 .h 做成员
//dlg.Create(IDD_SHOW); 创建一次,多次会崩,写到初始化 OnInitDialog
dlg.ShowWindow(SW_SHOWNORMAL);
}
//文件名:CdemoDlg.h
//给全局
private:
CDlgShow dlg;
//文件名:CdemoDlg.cpp
//给初始化
// TODO: 在此添加额外的初始化代码
dlg.Create(IDD_SHOW);
//2.静态文本 StaticText
添加变量 以STATIC结尾的ID是不可以添加变量的,需要修改变量,eg:IDC_TEXT; IDC_PIC;
// CAboutDlg.cpp
//在静态文本内添加 BITMAP(可能是我的bmp图片有问题,没显示成功)
// TODO: 在此添加额外的初始化代码
//设置静态控件风格为居中
m_pic.ModifyStyle(0xf, SS_BITMAP | SS_CENTERIMAGE); //通过路径获取BITMAP句柄
#define HBMP(filepath,width,height)(HBITMAP)LoadImage(AfxGetInstanceHandle(),filepath,IMAGE_BITMAP,width,height,LR_LOADFROMFILE|LR_CREATEDIBSECTION) //获取窗口大小
CRect rect;
m_pic.GetWindowRect(rect); //静态控件设置bitmap
m_pic.SetBitmap(HBMP(TEXT("./1.bmp"), /*300,250*/rect.Width(), rect.Height()));
//三个按钮的设置
void Cdemo2Dlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
//让哈哈变成呵呵
//设置文本内容
m_text.SetWindowTextW(TEXT("呵呵"));
} void Cdemo2Dlg::OnBnClickedButton2()
{
// TODO: 在此添加控件通知处理程序代码
//获取内容
CString str;
m_text.GetWindowTextW(str);
MessageBox(str);
} void Cdemo2Dlg::OnBnClickedButton3()
{
// TODO: 在此添加控件通知处理程序代码
//修改按钮上的内容
m_btn.SetWindowTextW(TEXT("Cowry"));
//获取内容
CString str;
m_btn.GetWindowTextW(str);
MessageBox(str);
//设置点击状态,点后灰掉
m_btn.EnableWindow(FALSE); }
//3.编辑框使用 EditControl
属性:multLine 多行;Want return :true 可多行书写;Scroll 滚动条 纵横
// CAboutDlg.cpp
// TODO: 在此添加额外的初始化代码
//设置第一个编辑框内有文本内容
m_edit1.SetWindowTextW(TEXT("hello Cowry"));
//四个按钮的设置
void Cdemo3Dlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
//复制编辑框1的内容到编辑框2
CString str;
m_edit1.GetWindowTextW(str);
m_edit2.SetWindowTextW(str);
} void Cdemo3Dlg::OnBnClickedButton2()
{
// TODO: 在此添加控件通知处理程序代码 //退出程序
//exit(0); //推出当前对话框
//CDialog::OnOK();
CDialog::OnCancel(); }void Cdemo3Dlg::OnBnClickedButton3()
{
// TODO: 在此添加控件通知处理程序代码
//利用关联value方式设置和获取内容
m_text = TEXT("hello");
//将变量中的内容 同步到控件中
UpdateData(FALSE);
} void Cdemo3Dlg::OnBnClickedButton4()
{
// TODO: 在此添加控件通知处理程序代码
//将控件中的内容 同步到变量中
UpdateData(TRUE);
MessageBox(m_text);
}
//属性 重写OnOK 注释掉里面代码;为了不输入return后直接退出;
void Cdemo3Dlg::OnOK()
{
// TODO: 在此添加专用代码和/或调用基类 //CDialogEx::OnOK();
}
//4.下拉框 ComboBox
属性:加入数据data :aa;bb;cc;设置不默认排序 sort:false;设置不可编辑 type:下拉列表
// CAboutDlg.cpp
// TODO: 在此添加额外的初始化代码 //下拉框添加
m_cbx.AddString(TEXT("唐僧"));
m_cbx.AddString(TEXT("孙悟空"));
m_cbx.AddString(TEXT("猪八戒"));
m_cbx.AddString(TEXT("沙僧"));
//设置默认值
m_cbx.SetCurSel();
//插入
m_cbx.InsertString(, TEXT("白龙马"));
//删除
m_cbx.DeleteString();
//获取1号索引内容
//CString str;
//m_cbx.GetLBText(1,str);
//MessageBox(str);
//下拉框改变值时,弹出Box
void Cdemo4Dlg::OnCbnSelchangeCombo1()
{
// TODO: 在此添加控件通知处理程序代码
//拿到索引位置
int index=m_cbx.GetCurSel();
CString str;
m_cbx.GetLBText(index, str);
MessageBox(str); }
MFC/QT 学习笔记(四)——MFC基于对话框学习控件(上)的更多相关文章
- IOS学习笔记(四)之UITextField和UITextView控件学习
IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...
- .NET MVC 学习笔记(七)— 控制input控件
.NET MVC 学习笔记(七)— 控制input控件 画面中有时候需要输入数字,这时就需要控制input的输入.以下为保留两位有效数字. /* * 初始化数字输入 */ function initD ...
- Winform控件学习笔记【第二天】——常用控件
背景:期末考试刚过就感冒了,嗓子火辣辣的,好难受.但是一想起要学习总结就打起精神来了,Winform控件网上也没有多少使用教程,大部分都是自己在网上零零散散的学的,大部分用的熟了,不总结会很容易忘得. ...
- Dynamic CRM 2013学习笔记(八)过滤查找控件 (类似省市联动)
我们经常要实现类似省市联动一样的功能,常见的就是二个查找控件,一个选择了省后,另一个市的查找控件就自动过滤了,只显示当前省下的市,而不是所有的市.当然这是最简单的,实际工作中还有更复杂的功能要通过过滤 ...
- Android学习笔记(九)——布局和控件的自定义
//此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! View是 Android中一种最基本的 UI组件,它可以在屏幕上绘制一块矩形区域,并能响应这块区域的各种事件 ...
- Win32+API学习笔记:创建基本的窗口控件
创建一个标签 CreateWindowEx(0, "static", "姓名:", ...
- 【AngularJS学习笔记】封装一些简单的控件(封装成Html标签)
bootstrap有强大的指令系统,可以自定义一些属性,基本知识请移步:http://angularjs.cn/A00r http://www.cnblogs.com/lvdabao/p/33916 ...
- 《深入理解java虚拟机》学习笔记四/垃圾收集器GC学习/一
Grabage Collection GC GC要完毕的三件事情: 哪些内存须要回收? 什么时候回收? 怎样回收? 内存运行时区域的各个部分中: 程序计数器.虚拟机栈.本地方法栈这3个区域随 ...
- STM32学习笔记(四) RCC外设的学习和理解
RCC时钟模块并不好理解,初次接触我也是一头雾水,而且我真正掌握它的时候也比较晚,是我在学习uC/os-II,需要分析时钟时才有了深刻认识.但在学习中我却一定要把放在了前列,因为这是整个嵌入式最重要的 ...
- NodeJS学习笔记 进阶 (4)基于express+muter的文件上传(ok)
个人总结:这篇文章主要讲了multer插件的使用,类似于formidable,可以用来处理post表单中的文件上传,读完这篇文章需要10分钟. 摘选自网络 概览 图片上传是web开发中经常用到的功能, ...
随机推荐
- js原型链和原型链的继承
每一个对象都有一个“_proto_”指针,指向实例化该对象的构造函数的原型对象,当该对象没有你想拿到的属性时,解释器会顺着指针不断向上找. 每一个构造你函数都有一个“prototype”属性,指向该构 ...
- 01-前言&WEB标准
人生苦短,要学就只学有用的 [前端教学-前言] 初识web开发 我们先来认识一下web前端 其实前端的工作,大体的概括就是:根据美工给的设计稿,变成web网页,使用后天的接口实现数据的渲染,要是高端一 ...
- composer实践总结
composer composer 概述 FIG 最初由几位知名 PHP 框架开发者发起,在吸纳了许多优秀的大脑和强健的体魄后,提出了 PSR-0 到 PSR-4 五套 PHP 非官方规范: PSR- ...
- Python经典算法-快速幂
快速幂 问题描述: 计算a ** n % b 其中a.b和n都是32位的非负整数 即求a的n次方对b的余数 问题示例: 例如:2**31%3=2 --- 代码实现如下 class Solution: ...
- 《ASP.NET Core 高性能系列》关于.NET Core的配置信息的若干事项
1.配置文件的相关闲话 Core自身对于配置文件不是必须品,但由上文分析可知ASP.NET Core默认采用appsettings.json作为配置文件,关于配置信息的优先等级 命令行>环境变量 ...
- 安装node,vue编译环境
1.安装npm:wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bashnvm inst ...
- VS2017/19 在更新之后,.net core项目出一个500的神奇错误
先说症状: VS 更新升级之后,如果用的是 .net core 的项目的时候,当vs升级时,.net core的sdk或者runtime有跟着升级的话,项目发布之后,覆盖dll到服务器时,会出现这个错 ...
- Android 之采用execSQL和rawQuery方法完成数据的添删改查操作
使用 SQLiteDatabase 操作 SQLite 数据库 [java] view plaincopy /* Android提供了一个名为SQLiteDatabase的类,该类封装了一些操作数据库 ...
- 接口自动化CSV文件生成超长随机字符串--java接口方法
public class STR { private static String Builderrud(int a){ StringBuilder builder= new StringBuilder ...
- codeforces 1020 C Elections(枚举+贪心)
题意: 有 n个人,m个党派,第i个人开始想把票投给党派pi,而如果想让他改变他的想法需要花费ci元.你现在是党派1,问你最少花多少钱使得你的党派得票数大于其它任意党派. n,m<3000 思路 ...