模拟windows消息框

来源:互联网 发布:钢结构制图软件 编辑:程序博客网 时间:2024/06/10 01:43
模拟windows消息框,实现如下功能需求:
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