API入门系列之七 -完善MessageBox

MessageBox使用 MessageBox()函数,功能是弹出一个标准的Windows对话框(模态对话框)。包含一个系统图标、 一组按钮和一个简短的特定于应用程序消息,如状态或错误的信息。返回值是一个int型的整数,用于判断用户点击了对话框中的哪一个按钮。它不是C函数库的标准函数,而是API函数,但是可以用C语言调用API函数。包含在头文件 windows.h中。 阅读详情

原创文章,转载请注明作者和出处

 

http://www.cnblogs.com/beyond-code

SDK编程群号:81543028 欢迎加入

各位不好意思,前几天有些事很忙,昨天才稍稍有时间空闲下来,所以我将我的API入门系列文章继续下去,上一篇《自己实现MessageBox》中我们基本已经实现了一个对话框了,可以在中央显示自己的文字,并且显示一个确定按钮,可是,上一篇完的时候我留下了一个问题,那就是那个确定按钮并不会根据窗口的大小的改变而改变。那么我们怎么来解决这个问题呢?

我给出了提示可以通过处理WM_SIZE来完成这个目的。那么今天我们就来完成这一遗留的问题。所要使用到的新的API函数也不多,就两个,要处理的消息也就两个WM_SIZE和WM_COMMAND

GetDlgItem

MoveWindow

这么两个,至于其他的API函数,都是我们以前接触过的,如果你忘记了,可以自己复习一下使用方法。

首先,我们先看WM_SIZE消息处理函数是怎么写的

case WM_SIZE:

{

const int buttonWidth = 80;

const int buttonHeight = 25;

int buttonx, buttony;

RECT rctClient;

GetClientRect( hwnd, &rctClient );

buttonx = rctClient.right/2 - buttonWidth/2;

buttony = rctClient.bottom/2 - buttonHeight/2;

HWND hButton = GetDlgItem( hwnd, 2 );

MoveWindow( hButton, buttonx, buttony, buttonWidth, buttonHeight, TRUE );

}

break;

由于这篇文章内容比较少,那么我就可以详细的介绍一下WM_SIZE这个消息处理函数中实现按钮始终保持居中的代码。WM_SIZE这个消息是当一个窗口的size也就是大小被改变后而被发送到该窗口的消息处理函数的。我们在这里通过截获WM_SIZE就可以在每次窗口大小被改变的时候进行一些处理,我们这里的处理就是将该窗口上的一个子窗口,也就是那个确定按钮移动到中央。

首先,我们还是老规矩,定义buttonWidth,和buttonHeight两个常整形来存放确定按钮的长和高。然后定义了两个整形变量buttonx,和buttony用来存放后面通过计算得到的确定按钮的左上角的坐标位置。

然后定义了一个RECT结构体用来保存后面通过GetClientRect API函数获取的窗口的长宽,其中rctClient中right就保存了窗口的长,bottom就保存了窗口的高。我们为了让按钮保持在主窗口的中央,那么我们就需要让按钮的左上角的x坐标位置在主窗口的长的一半再减去按钮的长的一半的位置。高也是一样的原理。所以 buttonx = rctClient.right/2 - buttonWidth/2; buttony = rctClient.bottom/2 - buttonHeight/2; 这两句就是根据当前主窗口的长和高计算按钮应该在的位置。

计算完成后,我们就只需要移动按钮就可以了。可是移动按钮之前,我们需要获得按钮的句柄,这个句柄怎么获得呢,有很多中方法,这里我就用GeDlgItem这个API函数来获取,它需要两个参数,第一个参数是一个主窗口的句柄,这里我们就传递按钮的主窗口的句柄hwnd,第二个参数是按钮的一个标识符,因为我们在前一篇文章中用CreateWindowEx创建子窗口的时候给按钮指定的标识符是2,所以这里我们就传递2,那么这样GetDlgItem返回的就是这个按钮的句柄了。

得到了句柄后,我们就需要用MoveWindow来移动这个子窗口按钮,到我们需要的位置了。第一个参数是这个字窗口的句柄,也就是我们上面获得的句柄,第二个参数和第三个参数是移动到的x,y坐标。这里我们传递buttonx和buttony,第四个和第五个是移动的窗口的长和高,如果同时还需要改变窗口的长和高,那么这里也可以传递改变后的长和高的值,我们这里只移动位置,不改变大小,所以就传递buttonWidth和buttonHeight。最后一个参数是一个BOOL型的,指示是否需要重绘,这里传递TRUE,也就是让它在移动后进行重绘。

好了,现在,当你改变主窗口的大小的时候,里面的确定按钮也会跟着改变位置而达到始终保持在主窗体的中央。

可是还有一个问题就是,当我们点击按钮的时候,程序没有任何的反映,MessageBox的确定按钮被点击的时候一般都会关闭当前对话框,所以我们这里也需要实现当用户点击确定按钮的时候,将我们的主窗体关闭。那么怎么来实现呢。

在实现之前,我首先要讲一讲,子窗体是怎么通知他们的父窗体的,比如说按钮被点击的时候是怎么通知他们的父窗体的。其实一般就是通过WM_COMMAND来通知的,例如我点击这个确定按钮,那么在这个确定按钮的窗口消息处理函数中就会向它的父窗体的窗口消息处理函数发送一条WM_COMMAND消息,并且WM_COMMAND消息的wParam参数的低16包含的就是一个标识符,指示是哪个子窗体发送的这条消息。至于wParam的高16和lParam包含的是些什么信息,就请各位自己查阅MSDN了,这里我们不会用到,也就不做讲解了。

所以我们要处理在子窗体上发生的事情,就需要在父窗体的消息处理函数中截获WM_COMMAND消息,并进行处理。那么这里的WM_COMMAND消息处理也很简单,如下

case WM_COMMAND:

{

if( LOWORD(wParam)==2 )

{

DestroyWindow( hwnd );

}

}

break;

就是用LOWORD这个宏来取出wParam的低16位,并且判断是不是2,也就是判断是不是确定按钮的标识符,如果是,就表示确定按钮上发生了事件,具体的事件我们就没做过细的判断了,一般来说都是指被点击。所以我们就进行处理,调用DestroyWindow这个API来销毁主窗体。就达到了我们的目的了。

怎么样,比较简单吧~

经过7篇API入门系列文章的介绍,我想你对WIN32 API编程的一般流程还是有了一个大概的了解了吧。以及对于windows的数据类型,字符编码方面。API的使用方面,消息的处理方面,因为都不会陌生了吧·

所以我后面的文章,对于细节就不会这么细了,对于一个API函数,如果参数不是很复杂,我也不会做过多的解释了。而只是说明一下它的作用。至于细节,各位就应该养成MSDN的习惯了。

好了,今天的文章就到这里了。如果有兴趣,请加入WIN32 SDK编程群进行讨论与交流和访问我的csdn博客http://blog.youkuaiyun.com/beyondcode

我的一些其他文章也会发布到csdn的博客上面~

C++实现API Hook拦截MessageBox窗口系统项目 MFC的消息机制是Windows事件驱动模型的抽象体现,通过消息队列、消息循环以及消息映射三大核心组件构建起整个框架的响应体系。理解这一机制是实现MFC消息拦截与处理的前提。消息过滤是指根据预设规则判断是否允许某条消息继续传递。可以通过在钩子回调或窗口过程中添加判断逻辑实现。// 自定义过滤规则// 屏蔽鼠标移动消息return 1;// 返回非零值表示已处理,消息不再传递过滤规则逻辑说明:若返回值为非零,则系统认为消息已被处理,不再传递给窗口过程。 阅读详情

相关推荐

BitLocker加密盘解密实战:从隐藏分区到密钥恢复的全过程

本文深入探讨了BitLocker加密盘在密钥丢失或遗忘情况下的解密实战方法。文章系统性地介绍了从理解加密机制、制作取证镜像,到深度扫描隐藏分区、分析内存转储寻找密钥残留,最终利用恢复密钥解锁加密卷的全过程。重点剖析了非标准恢复路径,为数据恢复和数字取证工作提供了专业的技术框架和实战思路。

weixin_29268385的博客 336

MessageBox

HWND 参数表示MessageBox隶属的窗口,设置NULL,表示顶层窗口。表示非模态,如果设置为parent的那么paranet显示模态,可以配合MessageBeep

fysy0000的专栏 663

星空组网 vs 蒲公英 vs Tailscale:2024年国内免费异地组网工具横评(含实测数据)

本文对2024年国内主流免费异地组网工具星空组网、蒲公英和Tailscale进行了深度横向评测。基于实测数据,重点分析了三者在P2P成功率、中继延迟、传输速度及稳定性方面的表现,为中小企业、远程办公及个人开发者提供了清晰的选择指南。星空组网在国内网络环境下展现出优秀的平衡性。

weixin_29217235的博客 1440

python 一个简单的弹窗前置(窗口置顶)

使用Python写了一个工具,程序运行完成后,需要一个弹窗提示程序运行结束,但是这个窗口一直被桌面其他窗口挡着,没有起到提醒的作用,现在想要窗口前置,以下为代码: import win32api,win32con win32api.MessageBox(None, “上传材料完成,程序运行结束!”, “提醒:”, win32con.MB_TOPMOST) ...

qq_38079051的博客 6033

信号削峰CFR基础知识介绍(一)

接下来,将得到的峰值分成若干段,在每一段中,仅保留该段内所有峰值中幅度最大的峰值。为了减少不必要的带外泄露,削峰后的信号将通过一个低通滤波器,以减少对应于削峰后信号中尖锐拐角的高频信号。首先,它识别出高于由目标PAPR确定的阈值的峰值。在峰值加窗算法中,削峰是通过在峰值区域将原始信号与一个加窗函数相乘来实现的,如下图所示。其中,w(n) 是一种常见的加窗函数,如凯撒窗、高斯窗和汉明窗等,而 p(n) 是一个加权系数。如上图所示,削峰会导致削峰后的信号出现尖锐的拐角,从而引发不必要的带外辐射(ACP增加)。

weixin_49761275的博客 1551

用例设计:滴滴打车从轿车到完成支付如何测?

滴滴打车全流程测试用例设计从业务场景覆盖、功能逻辑分解、异常流验证三个维度展开,系统化地构建了测试方案。首先,业务流主干场景被分解为叫车、行程中、支付结算三个阶段,每个阶段都设计了核心测试用例,包括正向和异常用例,如定位准确性、车型选择逻辑、路径偏移监控、费用实时计算、多支付方式兼容等。专项测试补充了状态机验证、资损防控测试和性能测试,确保系统在不同情况下的稳定性和安全性。测试数据策略采用等价类划分设计,实战技巧包括流量回放技术、混沌工程注入和计费沙盒验证,以提高测试的覆盖率和准确性。最终输出交付物包括流程

海姐软件测试的博客 1524

win32api 弹窗

ChatGPT写的

qq_39774096的博客 917

2026深度破解:OpenClaw开源AI框架架构与实战全景解析

2026年初,一款名为OpenClaw的开源AI Agent框架以惊人的速度席卷全球开发者社区,短短数周GitHub星标突破20万,成为史上增长最快的开源项目。本文从架构设计、核心原理、代码实现和工程实战四个维度,深度剖析OpenClaw的技术内核,帮助开发者从理解到实践,快速掌握这一革命性的AI开发框架。

fox0329的博客 2373

python messagebox显示到最前面_MessageBox.Show方法能够强制显示在最前么?

你好:欢迎来到MSDN中文论坛。在Windows Forms应用程序中MessageBox.Show默认就是现实在应用程序最前端的,是以模态窗口的形式弹出来的。1. 不知道你所指的“在最前”是不是指在系统桌面的最前呢?如果这样的话你可以在弹出窗口之前将当前的Form置于系统桌面的最前,也就是设置TopMost属性为true。2. 或者使用WinAPI中的函数MessageBox:[DllImpor...

weixin_40009063的博客 843

TC8:SOMEIPSRV_SD_MESSAGE_07-09

TTL为服务实例的生命周期。在此生命周期之后,不提供服务实例。

jasonj333 908

Spatial-ORMLLM: Improve Spatial Relation Understanding in the Operating Room with Multimodal Larg...

手术室(OR)中的精准空间建模是众多临床任务的基础,可为术中感知、风险规避及手术决策提供支持。现有方法虽利用大规模多模态数据集进行 latent 空间对齐,以隐式学习空间关系,但却忽视了多模态大型语言模型(MLLM)的3D能力。然而,这种方法存在两个问题:1)手术室通常缺乏多台视频和音频传感器,多模态3D数据难以获取;2)仅依赖易获取的2D数据训练,无法捕捉复杂场景中的细粒度细节。为解决这一问题,我们提出——首个针对手术室3D空间推理的大型视觉语言模型。

UnknownBody_2的博客 592

Windows API入门系列之七 -完善MessageBox

原创文章,转载请注明作者和出处   http://www.cnblogs.com/beyond-code SDK编程群号:81543028 欢迎加入 各位不好意思,前几天有些事很忙,昨天才稍稍有时间空闲下来,所以我将我的API入门系列文章继续下去,上一篇《自己实现MessageBox》中我们基本已经实现了一个对话框了,可以在中央显示自己的文字,并且显示一个确定按钮,

Qsir的专栏 450

【漏洞复现】用友NC-Cloud-反序列化-ResourceManagerServlet

NC Cloud是用友公司推出的大型企业数字化平台。支持公有云、混合云、专属云的灵活部署模式。NC Cloud完全基于云原生架构,技术先进、性能稳定、自主安全可控,支撑大中型以及超大型集团企业N层多site混合云部署方案,支持整个系统高可用、弹性扩展、双/多活,以及快速灾备恢复能力等。用友-NC-Cloud ResourceManagerServlet 接口存在反序列化漏洞,使得攻击者可以通过构造特定的请求远程执行恶意代码。此漏洞可能导致攻击者获取系统权限、执行任意命令,严重威胁系统的机密性和完整性。

漏洞复现 1366

API入门系列之六 -自己实现MessageBox

原创文章,转载请注明作者和出处 http://blog.csdn.net/beyondcodeSDK编程群号:81543028 欢迎加入 API入门系列文章的第六篇之自己动手实现MessageBox。我在第四篇文章:一个相当简单的SDK程序 中讲到了通过调用MessageBoxAPI函数来弹出一个对话框,那你有没有想过,我们一句简单的代码背后所隐藏的细节是怎么的呢,那时候让

BEYONDCODE's 流水账 6141

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

MessageBox函数

简述   MessageBox()函数,它的功能是弹出一个标准的Windows对话框。返回值是一个int型的整数,用于判断用户点击了对话框中的哪一个按钮。它不是C函数库的标准函数,而是API函数,但是可以用C语言调用API函数。 函数原型 包含在头文件 windows.h中 int MessageBox( HWND hWnd,LPCTSTR lpText, LPCTSTR lpCaption = ...

dark_cy的博客 1万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Windows API入门:7:完善MessageBox

上一篇《自己实现MessageBox》中我们基本已经实现了一个对话框了,可以在中央显示自己的文字,并且显示一个确定按钮,可是,上一篇完的时候我留下了一个问题,那就是那个确定按钮并不会根据窗口的大小的改变而改变。那么我们怎么来解决这个问题呢?

Soda Wang的博客 316

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

【一】Windows API 零门槛编程指南——MessageBox 基本使用及基础讲解

本篇作为Windows API 系列文章的第一篇,将简要的讲解一下什么是Windows API,Windows API能做些什么,并且尽可能讲解一些新出现的专有名词;本系列博文几乎没有难啃的“专业术语”,尽量让读者能够看明白文章所述内容,是本系列博文的核心宗旨之一。 读本系列博文的读者必须具备以下的只是储备: C/C++语言基础语法及了解面向对象概念 以上列出的这一个点是最核心的知识储备,因为...

1_bit 的博客 3988

messagebox 全部使用_「一」Windows API 零门槛编程指南——MessageBox

本篇作为Windows API 系列文章的第一篇,将简要的讲解一下什么是Windows API,Windows API能做些什么,并且尽可能讲解一些新出现的专有名词;本系列博文几乎没有难啃的“专业术语”,尽量让读者能够看明白文章所述内容,是本系列博文的核心宗旨之一。读本系列博文的读者必须具备以下的知识储备:C/C++语言基础语法及了解面向对象概念以上列出的这一个点是最核心的知识储备,因为本系列博文...

weixin_39743357的博客 216

Windows API 之 MessageBox函数

转载在:https://blog.csdn.net/ixusy88/article/details/81323188 函数原型及参数: 在WinUser.h中定义: WINUSERAPI int WINAPI MessageBoxA( _In_opt_ HWND hWnd, _In_opt_ LPCSTR lpText, _In_opt_ LPCSTR lpC...

parasoft的专栏 1452

MFC中MessageBox的用法

在软件中我们经常会弹出个小窗口,给一点点提示.这就会用到消息对话框. 在Win32 API程序中只有MessageBox这一种用法. 而在MFC中就有三个方法: 1.调用API中的MessageBox; 2.调用CWnd的成员函数MessageBox; 3.调用全局函数AfxMessageBox; 一、 MFC中MessageBox的用法 1、 函数原型及参数  function MessageBox(hWnd: HWND; Text, Caption: PChar; Type: Word): Integ

qq_36633275的博客 6956

mfc mdi 怎么判断有messagebox弹出_「一」Windows API 零门槛编程指南——MessageBox

本篇作为Windows API 系列文章的第一篇,将简要的讲解一下什么是Windows API,Windows API能做些什么,并且尽可能讲解一些新出现的专有名词;本系列博文几乎没有难啃的“专业术语”,尽量让读者能够看明白文章所述内容,是本系列博文的核心宗旨之一。读本系列博文的读者必须具备以下的知识储备:C/C++语言基础语法及了解面向对象概念以上列出的这一个点是最核心的知识储备,因为本系列博文...

weixin_42499692的博客 265

Windows API 之 MessageBox

Windows API 之 MessageBox MessageBox原函数: MessageBox( HWND hWnd, //需要弹出消息框的窗口的句柄 LPCTSTR lpText, //消息框显示的信息 LPCTSTR lpCaption, //消息框的标题 UNION uType); //消息框的其它形 示例1 #include "windows.h" int main () {...

海盗的博客 1073

入门win32——MessageBox的使用

以下是参阅MSDN得到的小收获。 首先,MessageBox指的是显示一个模态对话框,其中包含一个系统图标、 一组按钮和一个简短的特定于应用程序消息,如状态或错误的信息。消息框中返回一个整数值,该值指示用户单击了哪个按钮。这个一般用在进程中出现某些错误,或者触发一些判断要反馈给用户。 函数声明 int MessageBox( HWND hWnd, LPCT

Loe_Pold的博客 5529
上一篇: API入门系列之六 -自己实现MessageBox
下一篇: Indpendent Game Dev Live Season1 -------- Episode1.关于妄想
BeYoNDCoDE
博客等级 码龄18年 159粉丝 13原创
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值