博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
截获WndProc过程
阅读量:6197 次
发布时间:2019-06-21

本文共 1399 字,大约阅读时间需要 4 分钟。

为防止点击窗体右上角的关闭按钮(X按钮)关闭窗体,我们可以覆盖WndProc过程,只要发现消息为WM_SYSCOMMAND且wparam参数为SC_CLOSE就不让继续传下去。

Delphi代码:

unit Unit1;interfaceuses  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,  Vcl.Controls, Vcl.Forms, Vcl.Dialogs;type  TForm1 = class(TForm)  private    {
Private declarations } procedure WndProc(var AMessage:TMessage);override; public {
Public declarations } end;var Form1: TForm1;implementation{
$R *.dfm}procedure TForm1.WndProc(var AMessage: TMessage);begin if (AMessage.Msg=WM_SYSCOMMAND) and (AMessage.WParam=SC_CLOSE) then Exit else inherited;end;end.

C#代码:

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace WindowsFormsApplication7{    public partial class Form1 : Form    {        const int WM_SYSCOMMAND = 0x0112;        const int SC_CLOSE = 0xF060;        public Form1()        {            InitializeComponent();        }        protected override void WndProc(ref Message m)        {            if ((m.Msg == WM_SYSCOMMAND) && ((int)m.WParam == SC_CLOSE))                return;            base.WndProc(ref m);        }        private void Form1_Load(object sender, EventArgs e)        {        }    }}

转载于:https://www.cnblogs.com/yagzh2000/archive/2012/11/28/2792971.html

你可能感兴趣的文章
正则表达式
查看>>
第二阶段
查看>>
利用Filter实现数据的压缩回写
查看>>
从一堆数中随机取出一些值的方法
查看>>
常用数据库2 sqlite及SQL注入
查看>>
709. To Lower Case
查看>>
个人GIT使用
查看>>
Java中如何查看一个类依赖的包
查看>>
如何通过WallpaperManager(壁纸管理器)设置与修改壁纸?
查看>>
数据库与表的创建
查看>>
查询语句实例
查看>>
js插入div漂浮框透明问题
查看>>
js代码要不要加分号
查看>>
遍历Map的四种方法
查看>>
codeigniter使用mongodb/redis
查看>>
切记 cocos2d中一个CCAction 对象只能被使用到一个Sprite对象上
查看>>
【Redis】redis基本数据结构之Set
查看>>
吴有恒 第六次作业
查看>>
黄聪:解决python中文处理乱码,先要弄懂“字符”和“字节”的差别
查看>>
HDU 1695 GCD 欧拉函数+容斥定理 || 莫比乌斯反演
查看>>