控制台主程序通过调用DLL显示对话框
来源:互联网 发布:机房搬迁网络割接方案 编辑:程序博客网 时间:2024/05/16 12:04
为了实现【控制台主程序通过调用DLL显示对话框】这个效果,已经折腾两天了,今天终于有了一点眉目,特此记录。
2、定义DLL导出函数
程序实现的过程:
首先描述一下,我为什么这么做。我在写一个基于C语言运用DLL来实现的程序,其他的部分都封装在了不同的DLL里,主程序就是一个win32控制台程序。现在希望做一个界面来显示,因此就希望在写一个DLL,调用win32的接口,来做一个显示窗体。
一、主程序:
#include <stdio.h>#include <Windows.h>int main(int argc,char* argv[]){ printf("hello world!\n"); typedef void (WINAPI* PROCFUN)(); HINSTANCE hInst1; HWND hWnd; hWnd=GetForegroundWindow(); hInst1 =LoadLibrary("DllDisplayDialog.dll"); PROCFUN _PROCFUN1=(PROCFUN)GetProcAddress (hInst1,"ShowDlg"); _PROCFUN1(); FreeLibrary(hInst1); getchar(); return 0;}
注释:主程序做两件事:1、测试控制台能否显示(用了printf语句);2、调用DLL的语句(定义函数类型、得到模块句柄、得到导出函数地址、运行函数)
二、DLL程序
DLL程序为一个win32 DLL程序【一定要是win32,不可以是MFC DLL】,主要实现的功能是生成一个对话框(供主程序调用),对话框上有控件,并且有自己的消息循环。DLL程序中主要包含有:
1、在DLL程序中加个两个对话框资源,IDD_DLG_MAIN和IDD_DLG_ABOUT,定义实例句柄和对话框窗体句柄,以及声明函数。
HINSTANCE hinst = NULL;HWND hMainDlg = NULL;HWND hAboutDlg=NULL;BOOL CALLBACK DlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);BOOL CALLBACK AboutProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);extern "C" __declspec(dllexport) void ShowDlg();
2、定义DLL导出函数
extern "C" __declspec(dllexport) void ShowDlg(){ hMainDlg = (HWND)DialogBox(hinst,MAKEINTRESOURCE(IDD_DLG_MAIN), NULL,(DLGPROC)DlgProc); SetWindowTextA(hMainDlg,"my"); ShowWindow(hMainDlg, SW_SHOWNORMAL); UpdateWindow(hMainDlg);}
3、定义两个对话框的消息响应函数
/*IDD_DLG_MAIN*/BOOL CALLBACK DlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam){ switch(message) { case WM_COMMAND: if(LOWORD(wParam)==IDOK) hAboutDlg = (HWND)DialogBox(hinst,MAKEINTRESOURCE(IDD_DLG_ABOUT), hDlg,(DLGPROC)AboutProc); return TRUE; case WM_CLOSE: DestroyWindow(hDlg); hMainDlg = NULL; return TRUE; } return FALSE;}/*IDD_DLG_ABOUT*/BOOL CALLBACK AboutProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case WM_INITDIALOG: return TRUE; case WM_CLOSE: EndDialog(hDlg,NULL); hMainDlg = NULL; return TRUE; case WM_COMMAND: if(LOWORD(wParam)==IDOK) SendMessage(hDlg,WM_CLOSE,0,0); return TRUE; } return FALSE;}
程序实现的过程:
先产生一个控制台(黑洞洞的cmd),然后弹出一个对话框(IDD_DLG_MAIN),点击上面的确认按钮,弹出第二个对话框(IDD_DLG_ABOUT),包含了一个Picture control和一个静态文本标签。
原文地址:控制台主程序通过调用DLL显示对话框
0 0
- 控制台主程序通过调用DLL显示对话框
- 控制台主程序通过调用DLL显示对话框
- 调用dll显示对话框
- 控制台应用程序调用MFC DLL产生的对话框,解决对话框dlg.DoModal报错问题
- 如何调用MFC dll 来显示其中的对话框
- 对话框程序中调用控制台
- 在主程序之前显示一对话框(登录框)
- qt dll的调用及与主程序的交互
- MFC的DLL中调用函数指针与主程序交互
- Win32控制台程序调用dll
- 通过easyloader显示对话框
- DLL导出对话框,主对话框程序调用DLL对话框
- MFC调用对话框dll弹出非模态对话框
- 显示DLL中的非模态对话框
- 创建显示对话框的DLL
- 创建显示对话框的DLL
- 创建显示对话框的DLL
- 创建MFC常规dll,通过导出函数显示颜色信息对话框
- 查看oracle用户执行的sql语句历史记录
- s参数的 understand
- 数字键盘添加自定义按钮
- HTTP状态码列表
- 字符排序
- 控制台主程序通过调用DLL显示对话框
- 总结分析LED照明灯具行业存在的几点普遍问题
- poj 3259 uva 558 Wormholes(bellman最短路负权回路判断)
- liunux上ffmpeg编译
- 习近平勉励北大学生:人生就像扣扣子
- linux杂谈(十八):DNS服务器的配置(一)
- Hibernate的Criteria查询
- Github for Windows使用图文教程
- 淘宝销售技巧