【MFC系列-第10天】非模式对话框开发
10.1 程序左上角图标设置
通过SendMessage发送WM_SETICON消息来设置
10.2 纯Win32程序开发和技巧(借助MFC源码)
10.3 非模式对话框的调用
a)调用CDialog::Create
函数来创建,并且调用ShowWindow
来显示;
b)单例模式每次判断句柄存在就不重新创建,只要前端显示出来;
c)多例模式每次在堆空间中申请一个新的对象,再执行Create
函数;
d)对话框属性设置中,如果打开Visible属性缺省就是可见(不用调用ShowWindow
);
e)在Create
函数第二个参数中带入GetDesktopWindow
函数,可以让非模式对话框成为独立窗口,在任务栏中有窗口显示;
10.4 MFC全局函数
MessageBox(API), CWnd::MessageBox(method)
AfxMessageBox
:如果本进程没有主窗口不跟任何窗口关联,但是也会找到主窗口进行附着;如果有主窗口就回附着在主窗口上;
AfxGetApp()
:获取全局变量theApp(CWindApp)
类对象的地址
AfxGetInstanceHandle
:获取theApp
中的m_hInstance
句柄(来自于WinMain
参数)
AfxGetAppName()
:获取程序名称(跟三样东西有关系?)
AfxGetMainWnd()
:优先获取theApp.m_pMainWnd
指向的窗口类对象,如果该指针为空则以激活状态的窗口为主窗口;
AfxInitRichEdit()
:对RichEdit控件初始化(否则不能使用该控件)
AfxSocketInit()
:内部调用WSAStartup
函数(API)
CModalDlg::CModalDlg(CWnd* pParent /*=NULL*/): CDialogEx(IDD_MODAL_DIALOG, pParent)
{// 获取全局对象地址CWinApp* pApp = AfxGetApp();//加载图标m_hIcon = pApp->LoadIcon(IDR_MAINFRAME);// 获取实例句柄HINSTANCE hInst = theApp.m_hInstance;HINSTANCE hInst1 = AfxGetInstanceHandle();//获取程序名称LPCTSTR sAppName = AfxGetAppName();LPCTSTR sApp = theApp.m_pszAppName;
}
BOOL CModalApp::InitInstance()
{//if (AfxMessageBox(_T("确定要启动吗?"), MB_YESNO | MB_ICONQUESTION) == IDNO)// return FALSE;
// AfxMessageBox(m_lpCmdLine); //指向命令行参数字符串的指针CString str;str.Format(_T("%d"), this->m_nCmdShow);AfxMessageBox(str);//AfxSocketInit();AfxInitRichEdit();CModalDlg dlg;//m_pMainWnd = &dlg;INT_PTR nResponse = dlg.DoModal();return FALSE;
}
this指针等价于theApp.m_pMainWnd
【MFC系列-第10天】非模式对话框开发相关推荐
- MFC模式对话框与非模式对话框 消息处理顺序 与非模式对话框的焦点问题、显示、关闭以及交互问题
对话框有两种创建方式:DoModal和Creat. 其中DoModal创建的是模态的对话框,而Creat创建的是非模态的对话框下面总结下他们的不同. 对于模态的对话框,在该对话框被关闭前,用户将不能在 ...
- 如何创建MFC模式对话框与非模式对话框
一.什么是模式对话框与非模式对话框: 简单的来说,模式对话框就是一种当子窗口未关闭时父窗口就无法被激活(也就是处于无法操作状态)的一种窗口.非模式对话框就是当子窗口未关闭时,父窗口依然能被操作的一种窗 ...
- MFC—对话框程序—模式对话框与非模式对话框
一.根据主窗口类型,MFC软件工程可以分为以下几种架构模型: 1.SDI(Single Document Interface):单文档界面,一个主框架窗口下只能编辑一份文档. 例如:记事本和画笔等. ...
- 模式对话框和非模式对话框的区别(出自MFC windows程序设计第二版p370)
模式对话框和非模式对话框的区别:(出自<MFC windows程序设计>第二版p370) 1.显示模式对话框需要调用CDialog::DoModal,而显示无模式对话框则要调用CDialo ...
- MFC创建模式对话框与非模式对话框
一.创建模式对话框 1.分别添加如下三个对话框,其ID分别为IDD_ABOUT.IDD_CHAT.IDD_MFCTEST_DIALOG 双击"关于"按钮,添加相应的消息函数如下: ...
- 模式对话框与非模式对话框的区别
模式对话框与非模式对话框的区别 模式对话框就是不处理它就没法处理父窗口,而非模式对话框就是不用先处理此对话框也可以处理父窗口.例子:在桌面上右击我的电脑,选择属性,弹出系统属性窗口,点击下面的技术支持 ...
- 模式对话框与非模式对话框的区别2
模式对话框就是不处理它就没法处理父窗口,而非模式对话框就是不用先处理此对话框也可以处理父窗口.例子:在桌面上右击我的电脑,选择属性,弹出系统属性窗口,点击下面的技术支持,弹出技术支持信息,现在再对系统 ...
- windows对话框窗口DialogBox模式对话框、EndDialog、CreateDialog非模式对话框、DestroyWindow、WM_INITDIALOG
普通窗口:自定义函数调用缺省函数 wndProc(-) { - DefWindowProc(-); } 对话框窗口:缺省函数 调用自定义函数 缺省函数(-){ - 自定义函数(-) - } 对话框原理 ...
- 极速理解设计模式系列:10.抽象工厂模式(Abstract Factory Pattern)
五个角色:抽象产品角色(AbstractProduct).具体产品角色(Product).抽象工厂角色(AbstractFactory).具体工厂角色(ConcreteFactory).客户端(Cli ...
最新文章
- 影像组学视频学习笔记(30)-SMOTE解决数据不平衡的问题、Li‘s have a solution and plan.
- (译)如何使用cocos2d来制作一个打地鼠的游戏:第一部分
- 《Flex 第一步》
- 如何将本地python项目部署到服务器上_如何将本地的Django项目部署到云服务器
- 【转】ABP源码分析三十一:ABP.AutoMapper
- SpringCloud Hoxton版微服务-RestTempalte + @LoadBlanced 实现负载均衡
- mysql 的标识符_MySQL查询或标识符在Jupyter中太长?
- Hive压缩存储性能测试
- vue中 点击二维码刷新图片(src不变)
- 位运算 取某一位 java_Java 位运算妙用
- SVN 删除文件及其恢复大全
- mysql 磁盘读取原理_mysql 底层原理
- latex 表格及标题居中
- 用Java SE 6.0实现高质量桌面集成开发 (转)
- mysql备份导出数据库结构_MySql数据库导出完整版(导出数据库,导出表,导出数据库结构)详解...
- python画平行坐标图_Python实现平行坐标图的两种方法小结
- 面试题总结:volatile的功能
- P2P通信中的NAT/FW穿越
- python爬取整个网站的广告敏感词_Python实现敏感词过滤的4种方法
- 区域颜色填充-四连通种子填充算法
热门文章
- 将状态机模式实现为流处理器
- 安装telnet_Flask干货:Memcached缓存系统——Memcached的安装
- IntelliJ IDEA for Mac 如何自定义快捷键_设置快捷键
- Linux命令行中的特殊符号_特殊字符
- 深度学习pytorch--线性回归(二)
- c# char unsigned_c – unsigned char和char指针之间的区别
- linux离线安装python3.7教程_Linux傻瓜式七步完美安装Python3.7
- C 常见的面试知识点(下)
- C语言指针变量的运算
- 东芝硬盘插入台式机后滴滴响