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;
分享到:
相关推荐
-----6 Windows API 一日一练(4)MessageBox函数----------------------9 Windows API 一日一练(5)RegisterClass和RegisterClassEx函数-----------------------------------------------------------------------...
Windows API 一日一练(4)MessageBox函数--------------------------------------------------------9 Windows API 一日一练(5)RegisterClass 和 RegisterClassEx 函数---------------11 Windows API 一日一练(6)...
作为初学者来说,在C#中使用API确是一件令人头疼的问题。在使用API之间你必须知道如何在C#中使用结构、类型转换、安全/不安全代码,可控/不可控代码等许多知识。 一切从简单开始,复杂的大家一时不能接受。我们...
无边框窗口,可以拖动,可以缩放,双击可以最大化。可加上自定义图标、标题、最小最大化按钮、关闭按钮,实现自定义自绘标题栏,就可以模仿QQ聊天窗口界面或微信聊天窗口...在 Windows7 64位平台上用 DevCPP 编译通过。
WINDOWS核心编程中的API拦截事例,对学习API拦截的朋友有一定帮助。
hook windows api 的小测试 用win32汇编写的,是hook messagebox的小测试
Windows API 编程 一 windows 基础, 编写第一个程序: #include<windows.h> int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd) { MessageBox (NULL,TEXT("hello ...
用于32位版本Windows的API(Windows 95、Windows 98和所有版本的Windows NT)现在称作Win32。许多函数呼叫在从Win16到Win32的转变中保持相同,但有些需要增强。例如,图像坐标点由Win16中的16位值变为Win32中的32位...
API HOOK拦截系统窗口,采用APIHOOK技术对系统API函数MessageBox进行拦截,让系统执行自定义的函数内容!
这里是HOOK自己程序的MessageBox,即将自己程序对MessageBoxAPI的调用重定向到自己实现的API中,在自己定义的API中实现内容的替换。需要注意的是,本例子的HOOK仅仅对自己实现的MFC窗口程序,当开始HOOK后,自己的...
利用钩子函数,截获任何弹出的消息框MessageBox 截获所有弹出的消息框
Windows用户层下拦截api的原理与实现(附源码) (2008-03-29 16:15:07)转载▼ 标签: computer 杂谈 声明:本页所发布的技术文章及其附件,供自由技术传播,拒绝商业使用。本页文章及其附件的所有权归属本文作者...
包括MessageBoxA和MessageBoxW,其实现细节与HOOKAPI(二)中介绍的基本类似,唯一不同的是,本实例要实现对所有程序的HOOKMessageBox,即无论系统中哪一个程序调用MessageBox都会被重定向到我们实现的新的API中。...
Node.JS是一个控制台程序,如果想要从Node.JS弹出Windows系统提示框的话,有很多方法可以实现。比如借助 electron 或 node-webkit: 在Electron中弹出消息框 Electron与Windows的接口非常完善,可以调用各种Window...
使用API写Windows程序 一 先来看个简单实例: #include "windows.h" int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { MessageBox (NULL...
API HOOK测试实例,vc++6.0实现,开始HOOK后 可以打开记事本查找弹出对话框作测试,本实例使用HOOk拦截 MessageBox()函数,windows 核心api编程
摘要:VB源码,系统相关,HOOK 运行环境:Windows/VB6