当前位置:首页 > 日记 > 正文

C++Builder的非可视组件消息处理

C++Builder的非可视组件消息处理
非可视组件必须对Windows操作系统或用户定义的消息作出响应。但是,由于非可视组件没有Windows,它也没有窗口句柄,自然无法接收消息。为了解决这个问题,我们的想法是创建一个隐藏窗口,使非可视组件接收消息。

为了为非可视组件创建隐藏窗口,您需要以下内容:

1。一个私有变量类型(私有变量)来获取窗口句柄HWND。

2。(一个函数WndProc)是用来捕获的窗口被发送到的组件。

3。打电话给allcolatehwnd创建窗口句柄和集WndProc。

为了清楚地解释上述观点并论证创作过程,我们将用一个具体的例子加以说明。
首先我们建立在C++ Builder中一个新的组件,选择文件|新…双击组件图标显示一个新组件对话框中更改为TTEST tcomponent祖先类型和类的名称和设置。
然后,切换到新组件的头文件,并将以下声明添加到类的私有部分(私有部分):

HWnd Fhandle;
fastcall WndProc(tmessagemsg)无效;

第一行声明了一个变量,调用fhandle HWND,将用于捕获窗口句柄的窗口被创建后的第二行宣布WndProc函数接收消息,该函数的声明必须是确定的,它是一个U盘,然后下面的声明是公共类的声明构建的(公共)部分:

Viod DoIt();

这个公共函数将用于测试组件,类声明应该如下所示:

类的封装:公共空间

tcomponent
{
私人:

HWnd Fhandle;
fastcall WndProc(tmessagemsg)无效;

受保护的:

公共:

Fastcall Ttest(tcomponent *业主);

无效的做();

出版:

};

现在切换到组件的代码单元,并将下面的行添加到单元的顶部(它可能是函数的一个好地方)。

我message.wm_user1定义

这条声明组件将被发送到自己的用户自定义消息时,就调用函数。在这一点上,我们必须指定一个窗口句柄的成分。这柄将提供一个隐藏的窗口,使我们能够在组件捕捉信息。找到组件构建代码,添加以下代码:

fastcall测试::测试(tcomponent *人):Tcomponent(业主)
{
fhandle = allocatehwnd(WndProc);
}

好了,重要的一步已经完成了。的allocatehwnd函数创建一个隐藏窗口并返回它的句柄。在这里,我们要让Windows知道消息,并交付WndProc的地址。

现在让我们创建的WndProc函数部分添加源文件中:

无效:WndProc(tmessagemsg fastcall t检验:)
{
如果(msg.msg = my_message)
MessageBox(0,到这里!
{试
调度(MSG);
}
捕捉(…{)

应用handleexception(本);

}

}

每当Windows发送一个消息给组件,Windows调用功能。这部分代码做了两件事。第一,它检查是否收到的消息的消息从我们的用户习惯。如果是这样的话,就会显示一个消息框,你可以看到的消息,我们真的得到了。其次,此代码将在系统中的信息(或组件)处理。试用catch块用于确保如果出现异常,它将成为默认样式下的句柄。

总的来说,WndProc函数将所有其他消息的默认处理和监控所有客户的信息。现在我们创建做功能,完成我们的组件,我们一起创造出做功能,完成我们的成分,并添加代码:

无效的t检验::做()

{

PostMessage(fhandle,我的消息,0, 0);

}

该函数发送消息组件的窗口句柄(记住,窗口句柄是以前存储在fhandle数据产品)。现在我们已经完成了创建组件的选择和使用选择| colseall拯救我们的工作测试组件。

The next step is to test the component.If you use BCB3, you have to add components to the package (Packege), and then use Componet|install (you can use DCLSTD35 Packege to test it quickly).Select the TestBCB.Cpp you have just saved, and once you install the component, it will appear on the component board.Double click the button to create the following code for the button's OnClick event:

test1(做);

现在运行程序,当你点击按钮,你会看到一个信息框显示在这里。

listinga和B包含头文件和源代码如下。

摘要:非能响应Windows消息可视化组件有许多用途。最明显的是封装了WindowsAPI的某些方面。例如,TAPI和Winsock发送消息给指定用户的事件。如果你写一个组件封装了一个API,这样,你将需要捕捉发送Windows消息。添加一个隐藏的窗口组件将为你做的,做一个好工作。

上述程序在C++ Builder 3调试。

相关文章

如何在Windows2000系统检索丢失的

如何在Windows2000系统检索丢失的

管理员,系统,检索,密码,如何在,文本/天极网 最近,很多朋友都告诉我,由于种种原因,他们的Win2000系统(或NT、XP系统)管理员密码丢失,问我如何找回密码。好朋友,我总是忍不住,所以不同的情况,分别提出了相应的对策,并最终帮助他们找到自己的密码。在业…

微软将发布的IE10预览版在MIX11之

微软将发布的IE10预览版在MIX11之

预览版,电脑软件,微软星期三证实,IE9将于下星期一在SXSWi(SXSW音乐节)于3月14日正式宣布,确切的时间是下午九点,太平洋时间,IE9的许多特点将增加保持芯片的垄断地位,微软在浏览器市场Firefox,在激烈的battle.ie9 Safari和Chrome已经在性能上,相当大…

win7不能拯救方案的浏览网址

win7不能拯救方案的浏览网址

方案,浏览,网址,电脑软件,Windows系统会自动保存你浏览的网站,如果你重新启动计算机,每一次浏览记录,如果可以以下方法解决删除:点击{开始} - { } { }控制面板-互联网网络选项,在弹出的窗口的属性,看看是否删除浏览历史选择退出(保存记录集取消)如…

神奇的另类允许应用程序开始运行更

神奇的另类允许应用程序开始运行更

运行,应用程序,更快,神奇,另类,我们知道,在Windows中,单击开始,运行命令后,你可以输入相应的命令,在打开的对话框中打开一些系统工具,如输入regedit回车打开注册表编辑器,进入记事本输入启动记事本程序等。然而,默认情况下,Windows只能支持少数程序…

判断字符串的数字类型。

判断字符串的数字类型。

数字,类型,字符串,电脑软件,支持判断以返回任何类型的数据类型: 函数的GetNumType(斯瓦尔巴特群岛) 昏暗的类型 如果Not IsNumeric(斯瓦尔巴特群岛)然后 getnumtype =未知 退出功能 最后如果 执行stype= typename(斯瓦尔巴特群岛)。 getnumtype =…

享受爱傻瓜高清DVD双字幕功能

享受爱傻瓜高清DVD双字幕功能

字幕,傻瓜,功能,电脑软件,DVD,单按钮白痴 下载: 越来越多的人喜欢看英文原版电影,因为它不仅可以得到更加真实的享受自己的感觉,也能使人们在轻松娱乐environment.dvd DVD学习英语是一样的。越来越多的人选择用电脑看DVD视频。因为除了便宜,方…

asp系列讲座(六)写作过程

asp系列讲座(六)写作过程

讲座,过程,系列,电脑软件,asp,进程是一组脚本命令,它们可以用返回值执行指定的任务。 你可以把过程定义的。调用过程的ASP文件,你也可以把一般的过程在一个共享的。ASP文件,然后使用SSI #包括包括在其他指令。ASP文件调用它的过程。你也可以选…

解决Windows7的程序停止响应的问题

解决Windows7的程序停止响应的问题

响应,解决问题,程序,电脑软件,如果系统运行的程序太多,在关闭某些程序时可能会杀死系统,或者程序停止响应的问题。 运行regdit到hkey_current_user 控制面板桌面和创建一个新的DWORD值32,对waittokillapptimeout设置名称0。…

MozillaFirefox5将于6月21日正式发

MozillaFirefox5将于6月21日正式发

将于,正式发布,电脑软件,今天,开发团队宣布,firefox5将在2011年6月21日公布。所有的Firefox目前存放在Mozilla的善变的中央图书馆,并将合并为一个普通的测试版本,一般来说,每个发展阶段将持续大约6周,这意味着Mozilla Firefox开发加强节奏感,我们…

腾讯延长QQ电脑管家速度到2011年底

腾讯延长QQ电脑管家速度到2011年底

腾讯,管家,年底,速度,电脑软件,而不是QQ会员,你不需要购买超级QQ。只要你每天用QQ电脑管家30分钟,你也可以享受QQ类的加速特权,这比每天挂两个小时QQ非常划算。 自从QQ电脑管家引入加速活动以来,它受到了许多用户的欢迎。为了返回给用户,此活动…

在传统的win7系统简化软件安装的混

在传统的win7系统简化软件安装的混

系统,混沌,软件安装,这是,乱码,因为字体编码的差异,传统的Windows7系统简化用户安装软件。如果简化的软件不支持传统的字体编码,就会出现乱码的解决方案: 单击{ }以扩展到控制面板、所有控制面板项目 Windows Update,单击检查更新,然后单击可选…

数据分页方法的新思想非常快。

数据分页方法的新思想非常快。

方法,分页,数据,新思想,电脑软件,本文的目的是实现大数据分页和优化速度。 一个Web应用程序的建立、标签浏览必不可少的;这个问题一直是最常见的问题,也就解决了,哪像分页算法的ASP程序有很多,如ADO为对象的使用根据这些性质,记录统计总页数,然…