模拟windows消息框

模拟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);
   }
}



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值