DialogBoxParam()在动态库调用中创建模式对话框
来源:互联网 发布:c语言输出double类型 编辑:程序博客网 时间:2024/06/01 21:40
1. DialogBoxParam()函数介绍
- 模式对话框与非模式对话框:
<1>.模式对话框: 窗口打开后, 关闭前父窗口是不能使用的, 必须要对话框关闭以后,函数才会返回调用生成对话框语句的下一句.
<2>.非模式对话框: 作为一个独立窗口打开的, 不会影响父窗口的状态, 在不关闭的情况下也能返回下一句程序位置. - ::DialogBoxParam()功能(::表示函数为全局作用域):
创建模式对话框. - 参数介绍:
int DialogBoxParam(HINSTANCE hInstance,LPCTSTR IpTemplateName,HWND hWndParent, DLGPROC IPDialogFunc,LPARAM dwlnitParam)
<1>.hlnstance:标识一个模块的实例,该模块的可执行文件含有对话框模板.
<2>.IpTemplateName:标识对话框模板.此参数可以指向一个以NULL结尾的字符串的指针,该字符串指定对话框模扳名,或是指定对话框模板的资源标识符的一个整型值。如果此参数指定了一个资源标识符,则它的高位字一定为零,且低位字一定含有标识符.一定用MAKEINTRESOURCE宏指令创建此值.
<3>.hWndParent:指定拥有对话框的窗口.
<4>.IpDialogFunc:指向对话框过程的指针.有关更详细的关于对话框过程的信息,请参见DialogProc.
<5>.dwInitParam:指定传递到对话框过程中的 WM_INITDIALOG 消息 IParam 参数的值.
返回值:如果函数调用成功则返回值为在对函数EndDialog的调用中的nResult参数,该EndDialog函数用于中止对话框。如果函数调用失败,则返回值为-1。若想获得错误信息,请调用GetLastError函数.
2.调用流程
在DLLMain中主窗口建立后,对话框句柄hModule保存备用:
BOOL APIENTRY DllMain( HANDLE hModule,//系统加载动态库实例句柄 DWORD ul_reason_for_call,//系统调用动态库原因 LPVOID lpReserved//保留字,该参数无作用 ){g_hModule = hModule;return TRUE;}
获取父窗口并创建对话框:
HWND hParentWnd = GetForegroundWindow();int iResult = ::DialogBoxParam((HINSTANCE)g_hModule, (char*)IDD_TZDLG, hParentWnd, GetFeatureDlg, (LPARAM)¶m)
对话框关闭前结果保留在返回值iResult中, 如果创建失败返回-1.
GetForegroundWindow():得到用户正在激活的窗口.
GetActiveWindow():返回线程的活动窗口,而不是系统的活动窗口, 注意区分.
GetForegroundWindow()详细介绍
DLLMAIN()详细介绍
阅读全文
1 0
- DialogBoxParam()在动态库调用中创建模式对话框
- 非模式对话框CreateDialog() 与 模式对话框 DialogBoxParam()和DialogBox()
- 非模式对话框CreateDialog() 与 模式对话框 DialogBoxParam()和DialogBox()
- 动态库中创建对话框
- MFC在规则动态库中,创建子对话框
- 在Dll中创建对话框并调用
- 在Dll中创建对话框并调用
- 在Dll中创建对话框并调用
- 在Dll中创建对话框并调用
- 在Dll中创建对话框并调用
- 在Dll中创建对话框并调用
- Windows核心编程学习一:使用DialogBoxParam显示模式对话框
- (转载)在Dll中创建对话框并调用
- 在Dll中创建对话框并调用及AFX_MANAGE_STATE(AfxGetStaticModuleState())
- 在DLL中创建对话框
- 动态库调用对话框资源
- vs2008中,创建基于对话框的mfc动态库步骤
- 动态库dll中生成对话框,若包括ActiveX控件,创建对话框失败时,要在InitInstance()中加上: OleInitialize(NULL) & AfxEnableControlContai
- Android Studio2.0中使用离线ArcGIS Runtime Android SDK 100.1.0开发原生地图应用.docx
- 作业
- Linux-4.9.2内核在mini2440上的移植(二)——Ubuntu编译环境搭建(下)
- itk中的Cos变换
- 面向对象 多态
- DialogBoxParam()在动态库调用中创建模式对话框
- Socket 字节缓冲区第二种方式
- 识别坑图
- java项目转web项目的时候没有Dynamic Web Module
- linux安装最新版lua
- 视频协议学习--推流拉流都擅长的RTMP
- Makefile七之字符串处理函数
- ansible
- [LeetCode] Longest Palindromic Substring