• 全部
  • Windows SDK/API
  • 基础类
  • ActiveX
  • 数据库及相关技术
  • 网络及通讯开发
  • VCL组件使用和开发
  • 问答

在C++ Builder 中怎样更改窗口的默认处理过程?

ljhsoft 2002-02-25 01:47:51
在更改窗口的默认处理过程中,使用GetWindowLong函数取得原有的窗口过程后用SetWindowsLong设置一个定义的窗口过程.在自定义的窗口过程中再用CallWindowPorc调用原用的窗口过程时,报错,CallWindowProc第一个参数的类型为WNDPROC,怎样进行类型转换,请教高手解决.
...全文
29 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
invalid 2002-02-27
背景图片啊,看看下面的代码。其实这个帖子有的,我都回复过的,在贴一遍吧。
// in header file...

FARPROC NewClientWP;
FARPROC OldClientWP;
void __fastcall MDIClientWndProc(TMessage &Msg);


//---------------------------------------------------------------------------





//---------------------------------------------------------------------------
// in source file...

// subclass the client window
__fastcall TMainForm::TMainForm(TComponent *Owner)
: TForm(Owner)
{
NewClientWP = (FARPROC)MakeObjectInstance(MDIClientWndProc);
OldClientWP = (FARPROC)SetWindowLong(ClientHandle, GWL_WNDPROC,
(LONG)NewClientWP);
}
//---------------------------------------------------------------------------

// implement a helper funtion to tile the image
void TileBlt(HDC HDestDC, int DestWidth, int DestHeight, HDC HSourceDC,
int SourceWidth, int SourceHeight)
{
for (int y = 0; y < DestHeight; y = y + SourceHeight)
{
for (int x = 0; x < DestWidth; x = x + SourceWidth)
{
::BitBlt(HDestDC, x, y,
SourceWidth, SourceHeight,
HSourceDC, 0, 0,
SRCCOPY);
}
}
}
//---------------------------------------------------------------------------

// in the subclass procedure, draw the image
void __fastcall TMainForm::MDIClientWndProc(TMessage &Msg)
{
switch (Msg.Msg)
{
// draw the image to the device context of the
// client window
case WM_ERASEBKGND:
{
HDC Hdc = (HDC)Msg.WParam;
SelectPalette(Hdc, Image1->Picture->Bitmap->Palette, true);
RealizePalette(Hdc);
TileBlt(Hdc, Width, Height,
Image1->Canvas->Handle,
Image1->Picture->Bitmap->Width,
Image1->Picture->Bitmap->Height);

Msg.Result = 0;
return;
}

// handle the palette changes
case WM_QUERYNEWPALETTE:
{
HDC Hdc = GetDC(ClientHandle);
SelectPalette(Hdc, Image1->Picture->Bitmap->Palette, true);
RealizePalette(Hdc);
InvalidateRect(ClientHandle, NULL, true);
ReleaseDC(ClientHandle, Hdc);

Msg.Result = 0;
return;
}
case WM_PALETTECHANGED:
{
if ((HWND)Msg.WParam != ClientHandle)
{
HDC Hdc = GetDC(ClientHandle);
SelectPalette(Hdc, Image1->Picture->Bitmap->Palette, true);
RealizePalette(Hdc);
UpdateColors(Hdc);
ReleaseDC(ClientHandle, Hdc);
}

Msg.Result = 0;
return;
}

// refresh the image upon scrolling
case WM_HSCROLL:
case WM_VSCROLL:
{
InvalidateRect(ClientHandle, NULL, true);
break;
}

// un-subclass the client window
case WM_DESTROY:
{
SetWindowLong(ClientHandle, GWL_WNDPROC, (LONG)OldClientWP);
FreeObjectInstance(NewClientWP);
}
}

// call the default window procedure
Msg.Result = CallWindowProc(OldClientWP, ClientHandle, Msg.Msg,
Msg.WParam, Msg.LParam);
}
回复
ljhsoft 2002-02-25
WNDPROC是int (_stdcall(*))()类型,请教高手看不看得懂,我的程序已经通过编译了,但在运行时出错.我的主要功能是要实现MDI窗口的Client窗口显示背景图景图片,其它截取消息的方法我都试过了,而且用Delphi完全能够实现,请教高手还有什么好方法,还望赐教,谢谢.
回复
wfu 2002-02-25
重载窗口过程.

并关注!
回复
invalid 2002-02-25
WNDPROC估计是个函数指针类型。
回复
invalid 2002-02-25
同意楼上的。窗体过程是虚拟方法,可以重载。
回复
kingcaiyao 2002-02-25
改变默认的窗口过程可以直接重载窗口过程.
回复
相关推荐
STM32F407 / F103 PCF8575模块 控制16个I/O口 IIC通信
本例程为STM32F407控制PCF8575模块的16个I/O口输出,本例程基于正点原子STM32F407 IIC例程修改,本例程中使用PCF8575控制16个继电器。
C语言及程序设计初步
课程针对没有任何程序设计基础的初学者,全面介绍C语言及利用C语言进行程序设计的方法。课程注重知识的传授,更关注学习者能够通过实践的方式,真正学会利用C语言解决问题,奠定程序设计的基础。为此,专门设计了实践方案,指导学习者在听讲的同时,有效完成实践。讲课中还适时穿插进行学习指导,帮助初学者尽快掌握程序设计的学习方法。 课程主要针对无任何编程经历的初学者,利用主讲者多年来教授大一学生的教学经验,准确把握知识点掌握中的难点,在和视频配套的实践方案配合下,帮助初学者顺利掌握知识,获得学习中的自信。
比较两张图片差异
比较两张图片差异,代码收集于网上,码收集于网上
c#图片文字-字母-数字自动识别-深入代码-非常好
c#图片文字-字母-数字自动识别-深入代码-非常好
rtl8188eu_USB_linux.tar.gz
TP-LINK TL-WN725N V2 Linux 驱动安装
Control-flow Enforcement Technology Preview 2.0 spec
Intel CFI技术手册。 Intel CFI从CPU层次检测和防止ROP/JOP攻击,主要包含shadow stack和endbranch两项技术。 比软件层面的防御方法,如微软的CFG,更有效。目前Intel最新编译器已经支持此技术
Qt图形视图框架详解
介绍Qt中的Graphics View Framework,涉及View、Scene、Item的关系,如何自定义QGraphicsItem、处理Item之间的关联、如何布局及定义自己的布局Item、如何变幻Item、如何应用动画、如何处理拖放、如何给Item应用图形效果,提供拼图游戏、画板两个有用的实例。 通过本课程的学习,能够掌握Qt Graphics View Framework的基本应用,使用图形视图框架开发需要丰富的GUI效果的应用软件以及需要维护大量图元的、对图形界面层次要求较高的应用。
后备电池及储能电池巡检白皮书.pdf
后备电池及储能电池巡检白皮书,施耐德电气主编的,数据中心电池巡检白皮书。
Java初级从入门到精通
课程分为:J2SE 基础阶段,中级阶段,阶段; 课间会讲解一些小程序的开发:如:猜拳游戏,模拟银行柜员机程序,退休金结算程序等.
手把手做安卓应用开发
安豆是一个想学Android应用开发的小白,于是它找到自己的邻居-程序员大牛-熊哥帮忙。熊哥手把手带着安豆搭建程序的开发环境,实现应用的功能,美化应用界面,让安豆终于开发出了自己的第一个安卓应用-计算器。 学习的过程中,两个伙伴有问有答,学习的过程生动有趣。你一定不会睡着。 让从没有接触过安卓开发并且什么都不会的小白,变成一个能够开发出简单的计算器应用的菜鸟。 让小白对安卓开发有个整体的认识,初步形成安卓开发的概念,掌握安卓开发最最基础的知识。
CListControl设置颜色
CListControl类派生,设置单元格颜色,丰富功能
Linux系统管理员/网络管理员(PDF版)
两本非常好的Linux系统学习的书 系统管理主要介绍Linux系统的结构、管理、命令等 网络管理主要从网络协议角度出发阐述Linux的网络功能
STM32F103中文数据手册
这个里面包含了STM32F103的各种型号的数据手册,方面理解
OpenGL-实现视频播放(FFMpeg)
课程采用FFMpeg作视频解码,采用OpenGL实现视频的渲染,从RGB数据的绘制,到直接渲染YUV数据,实现三路YUV数据单纹理的输入,提升系统性能,接着采用PBO方式优化内存到显存的传输,实现DMA传输,解放CPU,将解码和渲染分离到不同的线程中,极大的提升了系统的性能。后介绍视频特效的实现。 介绍如何采用OpenGL渲染视频帧数据,从固定管线到可编程管线一次实现,采用PBO实现DMA数据传输处理,以及简单的视频特效的实现。
Groovy精简教程
注重实践,剔除繁琐的理论,通过案例讲解我们常用的知识点,各个知识点之间相对独立,不用担心某一个知识点学不会而耽搁学其他的知识点。轻轻松松入门Groovy。 每一个学员都能掌握Groovy的基本用法。
WPF中用于嵌入其他进程窗口的自定义控件(AppContainer)
WPF中用于嵌入其他进程窗口的自定义控件(AppContainer) 具体见博文:http://blog.csdn.net/zzzwwwppp11199988899/article/details/78131292
MSP430_RTC模块学习总结
这是自己在学习MSP430时,对RTC模块的总结,希望可以帮助刚入门者
CIET-2019-0504 数据中心运维管理人才标准.pdf
数据中心运维管理,人才标准,欢迎查看共同学习。
webrtc demo使用方法
谷歌webrtc demo的使用教程,webrtc源代码自行从官网下载,该教程只给出了源代码详细的使用方法,包括如何编译
朴素贝叶斯算法做文本分类-代码
https://blog.csdn.net/zzZ_CMing/article/details/89478436 朴素贝叶斯算法做文本分类,用的是谭松波酒店语料。
FANUC的3210密码破解软件
FANUC 3210 密码破解软件,读取SRAM备份文件,不需要注册,完全免费。
PDB符号文件查看工具 symview,pdbxtract
PDB符号文件查看工具, 包含2个工具symview 和pdbxtract symview可查看文件所有原始信息 pdbxtract 可方便查看结构体等信息, 可导出头文件或xml
FANUC PMC密码破解程序
FANUC 31I PMC密码破解程序 用于OID,30I,31I等FANUC的密码破解
名师精讲CSS3
CSS3即层叠样式表(Cascading Style Sheet), 在网页制作时采用层叠样式表技术,可以有效地对页面的布局、字体、颜色、背景和其它效果实现更加精确的控制。只要对相应的代码做一些简单的修改,就可以改变同一页面的不同部分,或者页数不同的网页的外观和格式。 本课程讲述了CSS3的实战应用,包括对网页修改以及对页面的布局、字体、颜色、背景和其它效果实现更加精确的控制。 通过本课程的学习,学者将可实现基本网页修改与美化,掌握CSS3对网页修改以及对页面的布局、字体、颜色、背景和其它效果实现更加精确的控制,并逐步达到熟练使用CSS3的学习效果,为自己的职场能力添砖加瓦。
SIEMENS 840D SL调试手册.rar
里面含有840dsl的全部维修,调试,使用手册和资料,编程手册,报警诊断手册,PLC维修调试,系统报警代码,HMI高级手册.等.
(亲测正确版)ASP.NET-c#-捕捉网页快照-网站截图-网站缩略图
(亲测正确版)ASP.NET-c#-捕捉网页快照-网站截图-网站缩略图 ★★★★★★★★★★★★★★★★★★★★★★★★★★★ 建立网站缩略图源码 网页快照ASP.NET网站截图 网页快照ASP.NET c# 输入网址获取网站图片 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ 网上流传了很多网站缩略图的asp.net,但是都无法使用,本人亲测,该代码进行优化,速度快,效率高,占内存非常少。
FANUC B-64113C_01 0i-C 0i Mate-C连接说明书(硬件)册
FANUC B-64113C_01 0i-C 0i Mate-C连接说明书(硬件)册
jquery自己写的文件目录
jquery自己写的文件目录,HttpServlet+js+jsp
B站王红元(codewhy)vue课件以及笔记
B站王红元(codewhy)vue课件以及笔记
Winfrom通用权限管理系统
Winfrom框架,动态生成菜单界面,附带数据库。纯手写,仅供学习参考,希望.net 程序员越来越好。 博客地址:https://blog.csdn.net/zzzzzzzert 有问题留言,互相学习交流
发帖
C++ Builder
创建于2007-08-02

1.3w+

社区成员

C++ Builder相关内容讨论区
申请成为版主
帖子事件
创建了帖子
2002-02-25 01:47
社区公告
暂无公告