模拟windows消息框
来源:互联网 发布:钢结构制图软件 编辑:程序博客网 时间:2024/06/10 01:43
模拟windows消息框,实现如下功能需求:
1.以函数的形式调用,封装到dll库中
2.字符串长度自适应
3.目前分为确认窗口和选择窗口
4.字体可选择
5.关闭按钮,确认按钮位置自适应
6.任务栏和任务管理器不显示窗口名称
7.标题栏精确拖动
看上去比较简单,实际上还是有些难点。消息窗口,跟随主窗口隐藏,并始终在主窗口上面。
1.以函数的形式调用,封装到dll库中
2.字符串长度自适应
3.目前分为确认窗口和选择窗口
4.字体可选择
5.关闭按钮,确认按钮位置自适应
6.任务栏和任务管理器不显示窗口名称
7.标题栏精确拖动
看上去比较简单,实际上还是有些难点。消息窗口,跟随主窗口隐藏,并始终在主窗口上面。
//.h处理父窗口过程TWndMethod OldPanelProc;void __fastcall WindowProc(TMessage &message);//.cpp中void __fastcall TForm2::WindowProc(TMessage &message){ OldPanelProc(message); //执行默认动作 if(message.Msg == WM_SETFOCUS) { this->BringToFront(); }}//dll中MsgBoxYesNo函数中: f->OldPanelProc = t->WindowProc; t->WindowProc = f->WindowProc; f->ShowModal(); t->WindowProc = f->OldPanelProc ;调用DLL函数,如下:
extern "C" __declspec(dllimport) void __stdcall MsgBox(TForm * t,char *s1,char *s2,int);extern "C" __declspec(dllimport) int __stdcall MsgBoxYesNo(TForm *t,char *s1,char *s2,int);void __fastcall TForm1::Button1Click(TObject *Sender){ MsgBox(Form1,"您好,这个选项不能为空,请重新填写,\n大家好!","提示",0);}//---------------------------------------------------------------------------void __fastcall TForm1::Button2Click(TObject *Sender){ int re = MsgBoxYesNo(Form1,"这是模拟windows消息框","提示",0); if(re == 1) { MsgBox(Form1,"您点击的是'是'按钮","提示",0); } if(re == 2) { MsgBox(Form1,"您点击的是'否'按钮","提示",0); }}
0 0
- 模拟windows消息框
- 在Linux环境中用模拟Windows中的线程消息队列
- Windows下向指定窗口模拟发送键盘消息
- 详解Windows消息分类以及WM_COMMAND与WM_NOTIFY的区别,以及模拟发送控件通知消息
- 详解Windows消息分类以及WM_COMMAND与WM_NOTIFY的区别,以及模拟发送控件通知消息
- Windows消息
- Windows消息
- Windows消息
- windows消息
- Windows消息
- Windows消息
- Windows消息
- Windows消息
- windows 消息
- Windows消息
- Windows消息
- Windows 消息
- windows消息
- JS正则表达式验证数字非常全
- 黑马程序员——java中数组的定义与应用
- unity3d ppsspp模拟器中的post processing shader在unity中使用
- 除了喜怒哀乐外还有许多的感情我们难以用语言文字表述
- LeetCode234——Palindrome Linked List,O(n) time and O(1) space
- 模拟windows消息框
- 南阳oj 71 独木舟上的旅行
- 打开人生珍贵的诗行,重新来读
- poj3321 Apple Tree
- Java 类反射基础
- SQLServer2008把数据导出成可执行的sql脚本(R2版本)
- ubuntu 安装Broadcom BCM43142 无线网卡驱动
- 微信红包随机生成算法(PHP版)
- 一杯香茗,一点曲,