`
eueuy
  • 浏览: 70532 次
  • 性别: Icon_minigender_1
  • 来自: 天津
最近访客 更多访客>>
社区版块
存档分类
最新评论

Windows API - MessageBox

阅读更多
if MessageBox(handle,'確定要刪除當前記錄?','確定',MB_IconQuestion+MB_YesNo)=IDNO then
  Abort;
 
 
 
TApplication类中封装的MessageBox是直接调用Windows API的,两者的差别就是Tapplication省去了一个从String转到PChar的过程。这给调用者带来了一定的方便。
以下是WINDOWS API HELP中MessageBox的解释。
如果追求是一些个性化的东西还可以使用
MessageBox在WINDOWS API中的函数原型如下:
int MessageBox(

    HWND hWnd, // handle of owner window
    LPCTSTR lpText, // address of text in message box
    LPCTSTR lpCaption, // address of title of message box  
    UINT uType // style of message box
   );
Handle参数是显示时基于的窗口句柄,如果为0则自己新开一个窗口。一般如果无法确定当前窗口
的句则需要调用GetForegroundWindow函数返回。
其uTupe参数一般有如下几个。
MB_ABORTRETRYIGNORE
MB_OK
MB_OKCANCEL
MB_RETRYCANCEL
MB_YESNO
MB_YESNOCANCEL
另外在MessageBox中还可以显示特定的图标。
MB_ICONEXCLAMATION,
MB_ICONWARNING
MB_ICONINFORMATION
MB_ICONASTERISK
MB_ICONQUESTION
MB_ICONSTOP,
MB_ICONERROR,
MB_ICONHAND
至于返回结果,只不过是把uTupe参数中的“MB”改成了“ID”,以下是一段演示代码。
function TForm1.Demo(Sender:TObject):String;
begin
 case MessageBox(Handle,'您是程序员吗?','提示信息',MB_YESNOCANCEL+MB_ICONQUESTION
) of
  case ID_YES:Result:='是';
  case ID_NO:Result:='不是';
  case ID_CANCEL:Result:='程序员是什么工作?';
 end;
end;
  
 
 
 
function InputQuery(const ACaption, APrompt: string; var Value: string): Boolean;
 
function InputQuery(const ACaption, APrompt: WideString; var Value: WideString): Boolean; overload;
function InputQuery(const ACaption, APrompt: WideString; var Value: string): Boolean; overload;
function InputQuery(const ACaption, APrompt: WideString; var Value: Double, Min: Double = Low(Integer); Max: Double = High(Integer); Decimals: Integer = 1): Boolean; overload;
function InputQuery(const ACaption, APrompt: WideString; var Value: Integer, Min: Integer = Low(Integer); Max: Integer = High(Integer); Increment: Integer = 1): Boolean; overload;
分享到:
评论

相关推荐

    Windows API 一日一练

    -----6 Windows API 一日一练(4)MessageBox函数----------------------9 Windows API 一日一练(5)RegisterClass和RegisterClassEx函数-----------------------------------------------------------------------...

    Windows API一日一练TXT版

    Windows API 一日一练(4)MessageBox函数--------------------------------------------------------9 Windows API 一日一练(5)RegisterClass 和 RegisterClassEx 函数---------------11 Windows API 一日一练(6)...

    C# 中操作Windows API的方法

    作为初学者来说,在C#中使用API确是一件令人头疼的问题。在使用API之间你必须知道如何在C#中使用结构、类型转换、安全/不安全代码,可控/不可控代码等许多知识。  一切从简单开始,复杂的大家一时不能接受。我们...

    Windows API 实现无边框窗口,可以拖动,可以缩放,双击可以最大化

    无边框窗口,可以拖动,可以缩放,双击可以最大化。可加上自定义图标、标题、最小最大化按钮、关闭按钮,实现自定义自绘标题栏,就可以模仿QQ聊天窗口界面或微信聊天窗口...在 Windows7 64位平台上用 DevCPP 编译通过。

    HOOKMESSAGE拦截MESSAGEBOX函数

    WINDOWS核心编程中的API拦截事例,对学习API拦截的朋友有一定帮助。

    hook windows api小测试

    hook windows api 的小测试 用win32汇编写的,是hook messagebox的小测试

    windows_API编程

    Windows API 编程 一 windows 基础, 编写第一个程序: #include<windows.h> int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd) { MessageBox (NULL,TEXT("hello ...

    windows 程序设计

    用于32位版本Windows的API(Windows 95、Windows 98和所有版本的Windows NT)现在称作Win32。许多函数呼叫在从Win16到Win32的转变中保持相同,但有些需要增强。例如,图像坐标点由Win16中的16位值变为Win32中的32位...

    API HOOK拦截系统窗口

    API HOOK拦截系统窗口,采用APIHOOK技术对系统API函数MessageBox进行拦截,让系统执行自定义的函数内容!

    HOOKAPI(二)——HOOK自己程序的MessageBox

    这里是HOOK自己程序的MessageBox,即将自己程序对MessageBoxAPI的调用重定向到自己实现的API中,在自己定义的API中实现内容的替换。需要注意的是,本例子的HOOK仅仅对自己实现的MFC窗口程序,当开始HOOK后,自己的...

    利用钩子函数,截获任何弹出的消息框MessageBox

    利用钩子函数,截获任何弹出的消息框MessageBox 截获所有弹出的消息框

    windows用户称拦截api

    Windows用户层下拦截api的原理与实现(附源码) (2008-03-29 16:15:07)转载▼ 标签: computer 杂谈 声明:本页所发布的技术文章及其附件,供自由技术传播,拒绝商业使用。本页文章及其附件的所有权归属本文作者...

    HOOKAPI(三)——HOOK所有程序的MessageBox

    包括MessageBoxA和MessageBoxW,其实现细节与HOOKAPI(二)中介绍的基本类似,唯一不同的是,本实例要实现对所有程序的HOOKMessageBox,即无论系统中哪一个程序调用MessageBox都会被重定向到我们实现的新的API中。...

    用纯Node.JS弹出Windows系统消息提示框实例(MessageBox)

    Node.JS是一个控制台程序,如果想要从Node.JS弹出Windows系统提示框的话,有很多方法可以实现。比如借助 electron 或 node-webkit: 在Electron中弹出消息框 Electron与Windows的接口非常完善,可以调用各种Window...

    使用API写windows程序

    使用API写Windows程序 一 先来看个简单实例: #include "windows.h"  int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)  {   MessageBox (NULL...

    API HOOK测试实例

    API HOOK测试实例,vc++6.0实现,开始HOOK后 可以打开记事本查找弹出对话框作测试,本实例使用HOOk拦截 MessageBox()函数,windows 核心api编程

    VB HOOK API[拦截MessageBox]的实例

    摘要:VB源码,系统相关,HOOK 运行环境:Windows/VB6

Global site tag (gtag.js) - Google Analytics