-
第七章 对话框 windows程序设计王艳平版
2012-08-10 22:15:11///////////////////////////////////////////////// // DirDialog.h文件 #ifndef __DIRDIALOG_H_ #define __DIRDIALOG_H_ #include class CDirDialog { ...// 显示对话框 BOOL/
// DirDialog.h文件
#ifndef __DIRDIALOG_H_
#define __DIRDIALOG_H_
#include <shlobj.h>
class CDirDialog
{
public:
CDirDialog();
// 显示对话框
BOOL DoBrowse(HWND hWndParent, LPCTSTR pszTitle = NULL);
// 取得用户选择的目录名称
LPCTSTR GetPath() { return m_szPath; }
protected:
BROWSEINFOA m_bi;
// 用来接受用户选择目录的缓冲区
char m_szDisplay[MAX_PATH];
char m_szPath[MAX_PATH];
};
CDirDialog::CDirDialog()
{
memset(&m_bi, 0, sizeof(m_bi));
m_bi.hwndOwner = NULL;
m_bi.pidlRoot = NULL;
m_bi.pszDisplayName = m_szDisplay;
m_bi.lpszTitle = NULL;
m_bi.ulFlags = BIF_RETURNONLYFSDIRS;
m_szPath[0] = '\0';
}
BOOL CDirDialog::DoBrowse(HWND hWndParent, LPCTSTR pszTitle)
{
if(pszTitle == NULL)
m_bi.lpszTitle = "选择目标文件夹";
else
m_bi.lpszTitle = pszTitle;
m_bi.hwndOwner = hWndParent;
LPITEMIDLIST pItem = ::SHBrowseForFolder(&m_bi);
if(pItem != 0)
{
::SHGetPathFromIDList(pItem, m_szPath);
return TRUE;
}
return FALSE;
}
#endif //__DIRDIALOG_H_/
// CommDlg.cpp文件
#include <windows.h>
#include "resource.h"
#include "DirDialog.h"
BOOL __stdcall DlgProc(HWND, UINT, WPARAM, LPARAM);
int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int)
{
int nResult = ::DialogBoxParam(
hInstance, // 实例句柄
(LPCTSTR)IDD_MAIN, // 对话框资源ID号
NULL, // 父窗口句柄
DlgProc, // 消息处理函数
NULL); // 对话框初始化的值,在WM_INITDIALOG消息的lParam参数中取出
return 0;
}
BOOL __stdcall DlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message)
{
case WM_INITDIALOG: // 初始化对话框
::SetWindowText(hDlg,"第一个对话框!");
break;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDOK:
::EndDialog(hDlg, IDOK);
break;
case IDCANCEL:
::EndDialog (hDlg, IDCANCEL);
break;
case IDC_FILEBROWSER:
{
char szFileName[MAX_PATH] = "";
OPENFILENAME file = { 0 };
file.lStructSize = sizeof(file);
file.lpstrFile = szFileName;
file.nMaxFile = MAX_PATH;
file.lpstrFilter = "Text Files(*.txt)\0*.txt\0All Files\0*.*\0\0";
file.nFilterIndex = 1;
// 弹出打开文件的对话框
if(::GetOpenFileName(&file))
{
::SetWindowText(::GetDlgItem(hDlg, IDC_FILE), szFileName);
}
}
break;
case IDC_DIRBROWSER:
{
CDirDialog dir;
if(dir.DoBrowse(hDlg))
{
::SetWindowText(::GetDlgItem(hDlg, IDC_DIR), dir.GetPath());
}
}
break;
}
break;
}
return 0;
} -
windows 对话框
2012-06-09 09:40:30windows 对话框视频详介,学习Visual C++的好帮手。 -
对话框和windows标准控件.pptx
2020-12-04 07:51:14创建对话框创建对话框类 在创建了对话框模板后就可以利用ClassWisard来 创建从CDialog派生且连接到对话框模板的对话框类 创建了一个连接到对话框模板CDialog类的派生类 (2) 利用ClassWizard向对话框类加入数据成员来... -
C语言windows对话框
2014-11-29 17:45:33C语言里的windows对话框代码,弹出对话框的程序,简单的实现 -
MFC编程-基于对话框的Windows应用程序.doc
2020-05-06 00:16:50PAGE PAGE 19 第1章 基于对话框的Windows应用程序 1. 简介Windows编程的两种方法即Windows API编程和MFC编程 2. 基于对话框的应用程序的创建过程 ? 建立基于对话框的 MFC 应用程序框架 ? 放置控件 ? 设置控件属性 ? ... -
模态对话框和非模态对话框
2018-08-16 22:08:32Windows对话框分为两类:模态对话框和非模态对话框。 模态对话框 当它弹出后,本应用程序其他窗口将不再接受用户输入,只有该对话框响应用户输入,在对它进行相应操作退出后,其他窗口才能继续与用户交互。...模态对话框和非模态对话框
Windows对话框分为两类:模态对话框和非模态对话框。
模态对话框
当它弹出后,本应用程序其他窗口将不再接受用户输入,只有该对话框响应用户输入,在对它进行相应操作退出后,其他窗口才能继续与用户交互。(比如:word中的“另存为”)
非模态对话框
它弹出后,本程序其他窗口仍能响应用户输入。非模态对话框一般用来显示提示信息等。(比如:word中的“查找与替换)
-
Windows的对话框
2013-04-18 18:08:47Windows的对话框根据其与父窗口的关系,可分为模式对话框与无模式对话框两类。 模式(modal)对话框:当该类对话框运行时,其父窗口无效,直到该对话框结束。 无模式(modeless)对话框:该类对话框可与父窗口共同...Windows的对话框根据其与父窗口的关系,可分为模式对话框与无模式对话框两类。
模式(modal)对话框:当该类对话框运行时,其父窗口无效,直到该对话框结束。
无模式(modeless)对话框:该类对话框可与父窗口共同运行。
一个完整的对话框一般包含对话框面板与函数两部分:
对话框模版:是在RC文件中定义的一个对话框,以各种方式决定对话框的大小、有哪些控件、各在什么位置等。
对话框函数:其函数原型非常类似于窗口函数。但是它通常只处理WM_INITDIALOG和WM_COMMAND两个消息。对话框中的各个控件也都是小窗口,各有对应的窗口函数,它们通过消息传递与其父窗口沟通。而所有的控件传来的消息都是WM_COMMAND,再根据其参数分辨是哪一种控件以及哪一种消息。
原型:int DialogBox ( HINSTANCE hInstance, LPCTSTR IpTemplate, HWND hWndParent, DLGPROC IpDialogFunc)
参数:第一个参数hInstance用于标识应用程序的实例,该程序的可执行文件含有对话框模版。
第二个参数IpTemplate用于标识对话框模版,此参数可以是指向一个以NULL结尾的字符串的指针,该字符串指定对话框模版名,也可以是指定对话框模版的资源标识符中的一个整型值。
第三个参数hWndParent用于指向该对话框的父窗口。
第四个参数lpDialogFunc表示一个指向对话框过程的指针。
如果函数调用成功,则返回非0值,其为函数EndDialog()的调用中的nResult参数。
如果函数调用失败,则返回值为0。
-
从MFC对话框理解Windows消息机制
2014-04-09 17:47:091、对话框基本要点和生命周期 MFC对话框支持“所见即所得”编程模式。其类型分为模式对话框和非模式对话框。 对话框由一个rc资源文件描述外观,通过ID与一个CPP类相连接,对话框内的控件使用基于ID的变量映射通讯...<第一部分:MFC窗口的创建过程>
1、对话框基本要点和生命周期
MFC对话框支持“所见即所得”编程模式。其类型分为模式对话框和非模式对话框。
对话框由一个rc资源文件描述外观,通过ID与一个CPP类相连接,对话框内的控件使用基于ID的变量映射通讯。
模式对话框对象被定义后,通过调用DoModal()函数来显示对话框并进行相关操作,此函数当对话框被关闭时返回。其返回值标明了对话框是点“确定”退 出,还是“取消”。非模式对话框需要与某个View相关联,以便对话框退出时发送消息给对应的Vew进行必要的处理。
在对话框显示前,系统会调用OnInitDialog() 函数,在这个函数中你可以设置一些控件属性,进行一些初始化工作。比如,设置滚动条的最大最小值,设置List列表的初始值等。其方法是将控件ID作为参 数,调用GetDlgItem函数获得控件的对象的指针(指针类型是CWnd*),然
后使用对象提供的函数进行操作。
ID对于一个组件来说非常重要,通过向导,我们可以将一个变量和一个组件进行关联(映射)来实现数据交换,而这种绑定的关键就是将一个组件的ID与成员变量关联。
2、数据交换机制
控件是对话框的重要组成部分,控件的访问可以通过关联变量实现,包括关联数据变量和控制变量。MFC编程中,通过建立类向导中 的操作可以将窗口控件和对应变量绑定,但是代码操作的是变量,用户操作窗口控件如何让他们同步?UpdateData(Bool true|false)函数正是实现
这个功能。
DoDataExchange由框架类调用,用于交换和检验对话框的数据,该函数不直接调用,而是被UpdateData调用。通过update(TRUE)取得控件上
的值,处理修改后通过update(FALSE)传回控件。
UpdateData(TRUE) -- 刷新控件的值到对应的变量
UpdateData(FALSE) -- 拷贝变量值到控件显示UpdataData()---用来刷新对话框
3、特殊的Radio Button
Radio Button控件是分组的,同一组的Radio Button只能有一个被选中。这个机制的实现依赖于TAB顺序,在资源视图下按Ctrl-D键将显示对话框的TAB焦点顺序。举一个例子来说明:
Radio1、Radio2、Radio3是三个不同的Radio Button控件,其焦点顺序为1、2、3。为了实现分组Radio1的Group属性应该为TRUE,其余两个为FALSE。如果又有两个 Radio4、Radio5焦点顺序为6、7。则Radio4的Group属性应为TRUE,Radio4,Radio5被分为一组。
需要注意的是,Radio以Group属性来分组,为了结束前一个组,你应该将焦点顺序为4、8的控件的Group属性设为TRUE,否则编译器会产生一个警告。
4、一些技巧
通过向导,我们可以将一个类成员变量和控件关联以进行数据交换,例如将一个CString类型的变量和Edit控件关联。将一个int变量和一组Radio Button关联。但是,人总有错的时候,当我们修改或需要删除这种关联时,麻烦就来了。
在我的使用VS2005过程中没有发现提供了删除“已被关联的控件成员变量”的向导,所以我使用的是比较麻烦的手动删除。
1)在对话框头文件中删除成员变量的定义
2)在对话框cpp文件中删除构造函数初始化列表中的对应变量的初始化
3)在对话框cpp文件中,根据变量名删除DoDataExchange函数中的对应语句
此时,以class view中的向导中,已经可以重新设定控件所关联的成员变量了。登录框的制作:
在显示主窗口之前显示一个模式对话框来提示用户登录一个常用的功能。只需要在PreCreateWindow函数中加入显示对话框的代码就可以完成这个功能。
有些时候,我们可能需要从一个控件对象来得到它的ID。比如,你的对话框中好几个滚动条,那么这些滚动条的事件都在
OnHScroll,OnVScroll中被响应。如何区分是哪个滚动条就需要确定ID。
在这两个函数中有一个CScrollBar *pScrollBar指针,我们可以通过调用pScrollBar->GetDlgCtrllD()来获得ID,ID是一个整数。在对话框编程中往往需要改变某个控件的文字,比如EDIT控件和Static text控件。此时使用SetDlgItemText(int nID,LPCTSTR lpzString)
函数比较方便。
<第二部分:MFC窗口的销毁过程>
考虑单窗口情况:
假设自己通过new创建了一个窗口对象pWnd,然后pWnd->Create。则销毁窗口的调用次序:1. 手工调用pWnd->DestroyWindow();
2. DestroyWindow会发送WM_DESTROY;
3. WM_DESTROY对应的消息处理函数是OnDestroy();
4. DestroyWindow会发送WM_NCDESTROY;
5. WM_NCDESTROY对应的消息处理函数是OnNcDestroy;
6. OnNcDestroy最后会调用PostNcDestroy;
7. PostNcDestroy经常被用户重载以提供释放内存操作。例如可以使用delete this;
通过这种方式,窗口对象对应的窗口和窗口对象本身都被释放了。
如果含有子窗口:
如果含有子窗口,则调用父窗口的DestroyWindow时,它会向子窗口发送WM_DESTROY和WM_NCDESTROY消息。具体调用顺序参考下文的例子。
DestroyWindow对delete的影响:
应该说前者对后者并没有什么影响。但经常在DestroyWindow间接导致执行的PostNcDestroy中delete窗口对象指针,即delete this。CView::PostNcDestroy中唯一的操作就是delete this;CframeWnd::PostNcDestory也是如此。而默认的CWnd::PostNcDestroy是空操
作,CDialog中也没有对其进行重载,即也是空。
delete对Destroy的影响:
delete会导致析构函数。CWnd的析构函数中有对DestroyWindow的调用,但必须保证:m_hWnd != NULL &&
this != (CWnd*) & wndTop && this != (CWnd*)&wndBottom &&
this != (CWnd*)&wndTopMost && this != (CWnd*)&wndNoTopMost。Cdialog的析构函数中也有对DestroyWindow的调用,但条件比较松,只需要m_hWnd != NULL。另外Cdialog::DoModal也会调用
DestroyWindow。
CFrameWnd的OnClose中会调用DestroyWindow,但其析构中不会调用DestroyWindow。
CView的析构也不会调用DestroyWindow。
一个SDI程序的销毁过程
有CMainFrame类、CMyView类。并且CMyView有两个子窗口CMyDlg和CmyWnd的实例。点击退出按钮,CMainFrame会收到WM_CLOSE消息。CframeWnd(CMainFrame的父类)间接会调用CWnd::DestroyWindow;它首先向
CMyView发送WM_DESTORY和WM_NCDESTROY消息,并引发相应的处理函数;然后向CMyDlg发送WM_DESTORY和WM_NCDESTROY消息,并引发相应的处
理函数;然后向CMyWnd发送WM_DESTORY和WM_NCDESTROY消息,并引发相应的处理函数。
具体的执行顺序是:
1. 调用CMainFrame::DestroyWindow
2. CFrameWnd::OnDestroy
3. CMyView::OnDestroy
4. CmyWnd::OnDestroy
5. CmyDlg::OnDestroy
6. CmyWnd::PostNcDestroy
7. CmyWnd的析构
8. CmyDlg::OnDestroy
9. CmyDlg的析构
10. CMyView::PostNcDestroy
11. CmyView的析构
12. CMainFrame的析构
13. CMainFrame::DestroyWindow退出
上面情况是假设我们在CmyWnd和CmyDlg的PostNcDestroy中添加了delete this。如果没有添加,则7,10不会执行。
因为CView::PostNcDestroy中调用了delete this,所以然后会执行CMyView的析构操作。因为CframeWnd::PostNcDestroy中调用了
delete this,所以最后执行CMainFrame的析构操作。
如果自己的CmyDlg和CmyWnd在PostNcDestroy中有delete this;则二者会被析构。否则内存泄漏。当然delete也可以放在CMyView的析
构中做,只是不够OO。
总结
可以有两种方法销毁窗口对象对应的窗口和释放窗口对象指针。一种是通过DestroyWindow。这是比较好的方法,因为最后MFC会自动相应WM_CLOSE导致CframWnd::DestroyWindow被调用,然后会一次释放所有子窗口的句柄。用户需要做的是在PostNcDestroy中释放堆窗口对
象指针。但因为某些对象是在栈中申请的,所以delete this可能出错。这就要保证写程序时自己创建的窗口尽量使用堆申请。
另一种是delete。Delete一个窗口对象指针有的窗口类(如CWnd,Cdialog)会间接调用DestroyWindow,有的窗口类(如CView,
CframeWn)不会调用DestroyWindow。所以要小心应对。
二者是相互调用的,很繁琐。
----------------------------------------------------------------
一个MFC窗口对象包括两方面的内容:一是窗口对象封装的窗口,即存放在m_hWnd成员中的HWND(窗口句柄),二是窗口对象本身是一个C++对象。要删除一个MFC窗口对象,应该先删除窗口对象封装的窗口,然后删除窗口对象本身。
删除窗口最直接方法是调用CWnd::DestroyWindow或::DestroyWindow,前者封装了后者的功能。前者不仅会调用后者,而且会使成员m_hWnd
保存的HWND无效(NULL)。如果DestroyWindow删除的是一个父窗口或拥有者窗口,则该函数会先自动删除所有的子窗口或被拥有者,然后再删
除父窗口或拥有者。在一般情况下,在程序中不必直接调用DestroyWindow来删除窗口,因为MFC会自动调用DestroyWindow来删除窗口。例如
,当用户退出应用程序时,会产生WM_CLOSE消息,该消息会导致MFC自动调用CWnd::DestroyWindow来删除主框架窗口,当用户在对话框内按
了OK或Cancel按钮时,MFC会自动调用CWnd::DestroyWindow来删除对话框及其控件。
窗口对象本身的删除则根据对象创建方式的不同,分为两种情况。在MFC编程中,会使用大量的窗口对象,有些窗口对象以变量的形式嵌入在
别的对象内或以局部变量的形式创建在堆栈上,有些则用new操作符创建在堆中。对于一个以变量形式创建的窗口对象,程序员不必关心它的
删除问题,因为该对象的生命期总是有限的,若该对象是某个对象的成员变量,它会随着父对象的消失而消失,若该对象是一个局部变量,
那么它会在函数返回时被清除。
对于一个在堆中动态创建的窗口对象,其生命期却是任意长的。初学者在学习C++编程时,对new操作符的使用往往不太踏实,因为用new在堆
中创建对象,就不能忘记用delete删除对象。读者在学习MFC的例程时,可能会产生这样的疑问,为什么有些程序用new创建了一个窗口对象
,却未显式的用delete来删除它呢?问题的答案就是有些MFC窗口对象具有自动清除的功能。
如前面讲述非模态对话框时所提到的,当调用CWnd::DestroyWindow或::DestroyWindow删除一个窗口时,被删除窗口的PostNcDestroy成员函
数会被调用。缺省的PostNcDestroy什么也不干,但有些MFC窗口类会覆盖该函数并在新版本的PostNcDestroy中调用delete this来删除对象
,从而具有了自动清除的功能。此类窗口对象通常是用new操作符创建在堆中的,但程序员不必操心用delete操作符去删除它们,因为一旦调
用DestroyWindow删除窗口,对应的窗口对象也会紧接着被删除。
不具有自动清除功能的窗口类如下所示。这些窗口对象通常是以变量的形式创建的,无需自动清除功能。
所有标准的Windows控件类。
1. 从CWnd类直接派生出来的子窗口对象(如用户定制的控件)。
2. 切分窗口类CSplitterWnd。
3. 缺省的控制条类(包括工具条、状态条和对话条)。
4. 模态对话框类。
具有自动清除功能的窗口类如下所示,这些窗口对象通常是在堆中创建的。
1. 主框架窗口类(直接或间接从CFrameWnd类派生)。
2. 视图类(直接或间接从CView类派生)。
读者在设计自己的派生窗口类时,可根据窗口对象的创建方法来决定是否将窗口类设计成可以自动清除的。例如,对于一个非模态对话框来
说,其对象是创建在堆中的,因此应该具有自动清除功能。
综上所述,对于MFC窗口类及其派生类来说,在程序中一般不必显式删除窗口对象。也就是说,既不必调用DestroyWindow来删除窗口对象封
装的窗口,也不必显式地用delete操作符来删除窗口对象本身。只要保证非自动清除的窗口对象是以变量的形式创建的,自动清除的窗口对
象是在堆中创建的,MFC的运行机制就可以保证窗口对象的彻底删除。
如果需要手工删除窗口对象,则应该先调用相应的函数(如CWnd::DestroyWindow)删除窗口,然后再删除窗口对象.对于以变量形式创建的
窗口对象,窗口对象的删除是框架自动完成的.对于在堆中动态创建了的非自动清除的窗口对象,必须在窗口被删除后,显式地调用delete
来删除对象(一般在拥有者或父窗口的析构函数中进行).对于具有自动清除功能的窗口对象,只需调用CWnd::DestroyWindow即可删除窗口
和窗口对象。注意,对于在堆中创建的窗口对象,不要在窗口还未关闭的情况下就用delete操作符来删除窗口对象
-
如何在对话框中嵌入对话框_在Windows 7中管理“删除确认对话框”
2020-10-08 17:21:32如何在对话框中嵌入对话框The confirmation dialog box that pops up when you want to delete a file or folder is meant to prevent accidental deletion of data. It can be a great thing in some situations, ... -
打开windows运行对话框的js
2020-10-31 02:17:02打开windows运行对话框的js -
MFC对话框:模态对话框及其弹出过程
2018-03-24 18:32:00加法计算器对话框程序大家照着做一遍后,相信对基于对话框的程序有些了解了,有个好的开始对于以后的学习大有裨益。趁热打铁,鸡啄米这一节讲讲什么是模态对话框和非... Windows对话框分为两类:模态对话框和非模态... -
Windows程序设计-模态对话框和非模态对话框
2017-09-14 10:12:12对话框分为两类:「模态的」和「非模态的」,其中模态对话框最为普遍。当您的程序显示一个模态对话框时,使用者不能在对话框与同一个程序中的另一个窗口之间进行切换,使用者必须...在Windows中,显示了系统模态对话 -
对话框
2020-01-07 20:48:01当程序呼叫一句模板建立的对话框时,Windows负责建立弹出式对话框窗口和子窗口控件,并提供处理对话框消息(包括所有的键盘和鼠标输入)的窗口消息处理程序。有时候称呼完成这些功能的Windows内部程序代码为“对话框... -
C++ WINDOWS 消息对话框
2019-04-14 16:56:04C++ WINDOWS 消息对话框 /*加载WINDOWS API头文件*/ #include<Windows.h> /* TEXT() 宽字符宏 int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow) 返回类型 int... -
关于windows对话框
2017-08-07 10:02:12函数有3个,取长补短可以游刃有余: 1.获取窗口在屏幕中的坐标:GetWindowRect(); 2.获得客户区坐标:GetClientRect();(其中的x=0,y=0) 3....因此,如果想获得客户区在屏幕中的坐标,分两步: -
MFC学习(一)——对话框和Windows标准控件
2014-02-18 10:59:46对话框是Windows应用程序和用户打交道的界面元素,包含各种按钮和各种选项,通过它们可以完成特定命令或任务。学习MFC从对话框的使用开始学习,会让整个学习更加精彩。 1 预备知识 1.1对话框的组成 (1)对话框资源... -
mfc另一个类调用对话框编辑框控件_MFC对话框:模态对话框及其弹出过程 - 今夜太冷...
2021-01-22 23:26:35From: 加法计算器对话框程序大家照着做一遍后,相信对...模态对话框和非模态对话框 Windows对话框分为两类:模态对话框和非模态对话框。 模态对话框是这样的对话框,当它弹出后,本应用程序其他窗口将不再接受用户输... -
基于MFC对话框的Windows服务程序
2012-04-26 11:22:21最近需求要写个服务程序...首先写好mfc的对话框程序,调试什么的,功能也都完成好。这一部分和平常的mfc对话框程序没有差别,之后的服务启动后打开的就是现在所完成的。 重点是服务部分。这里我找了很多文章,后来在 ... -
c语言--windows文件夹选择对话框--windows api--SHBrowseForFolder
2018-04-18 19:29:33c语言--windows文件夹选择对话框--windows api--SHBrowseForFolder -
纯c语言实现调用windows对话框
2018-07-12 10:13:26使用纯C语言实现对Windows对话框的交互,适合初学者学习,摆脱Window DOS控制台的约束。 -
VS2010-MFC(对话框:模态对话框及其弹出过程)
2019-09-27 13:00:52Windows对话框分为两类:模态对话框和非模态对话框。 模态对话框是这样的对话框,当它弹出后,本应用程序其他窗口将不再接受用户输入,只有该对话框响应用户输入,在对它进行相应操作退出后,其他窗口才能继续与... -
Windows打开文件对话框
2020-06-26 16:20:42C++使用Win32接口,打开文件对话框选文件。 ...*Project:Windows打开文件对话框 *Author:Raise *DateTime:2020/6/26 15:53 *Note:代码是以前得应该是17年18年的。 ******************************** -
第七章:无模式对话框 和 Windows通用对话框类
2010-05-15 09:59:00第七章:无模式对话框 和 Windows通用对话框类 1,[无模式对话框]在它处于激活状态下还允许用户在(同一个应用程序中)其它地方工作。 [通用对话框]则是C++和一组Windows的实用对话框之间的程序设计借口,包括File ... -
第七章:无模式对话框 和 Windows通用对话框类
2010-05-15 09:59:00第七章:无模式对话框 和 Windows通用对话框类 1,[无模式对话框]在它处于激活状态下还允许用户在(同一个应用程序中)其它地方工作。 [通用对话框]则是C++和一组Windows的实用对话框之间的程序设计借口,包括... -
VS2010/MFC编程(对话框:模态对话框及其弹出过程)
2016-07-04 20:22:00Windows对话框分为两类:模态对话框和非模态对话框。 模态对话框是这样的对话框,当它弹出后,本应用程序其他窗口将不再接受用户输入,只有该对话框响应用户输入,在对它进行相应操作退出后,其他窗口才能继续与... -
MFC编程入门之十一(对话框:模态对话框及其弹出过程)
2016-12-20 18:20:00加法计算器对话框程序大家照着做... Windows对话框分为两类:模态对话框和非模态对话框。 模态对话框是这样的对话框,当它弹出后,本应用程序其他窗口将不再接受用户输入,只有该对话框响应用户输入,在对它进行... -
Windows 编程之 对话框总结
2014-08-31 17:14:00对话框也是一种资源,Windows中对话框分为模态的和非模态的,以及Windows系统中已经定义好的那些通用对话框,比方打开文件,目录,调色板,字符串查找等。 2 模态对话框和非模态对话框的差别 模态对话框就是那种... -
directx中使用windows 对话框
2012-06-25 20:50:44我们将在dxut中建立windows对话框 第一步 创建windows对话框 右击解决方案中的Resource Files文件夹-> 添加->资源 新建资源类型为Dialog IDD_PROPPAGE_LARGE 然后能看到正在编辑对话框 , 右键对话框选择属性 ...
-
龙芯生态应用开发基础:C语言精要
-
小爱同学windows10版.Appx
-
Ubuntu xshell 无法连接 VMware 虚拟机 解决方案
-
Unity自学01/脚本执行后console中无法显示Debug.Log的内容
-
西门子 电气设备选型资料大全 (适合刚刚入行的电气工程师对设备进行选型规划)详解 报价
-
MySQL 触发器
-
索引类型
-
用微服务spring cloud架构打造物联网云平台
-
1997~2018县市社会经济主要指标.rar
-
vue3从0到1-超详细
-
远程连接数据库失败解决方法
-
LQ 方案 .pdf
-
java注解和反射的个人学习笔记
-
【已解决】IDEA 配置tomcat后,javaweb项目报404
-
Axure一些常用模板下载(免费模板)
-
js浅拷贝、深拷贝的实现
-
自制的mnist数据集
-
MySQL 数据库权限管理(用户高级管理和精确访问控制)
-
linux c can总线通信 源代码
-
将Anaconda3创建的虚拟环境打包成Docker环境