在VFP中制做异型窗口

蓝桥杯研究生组国赛真题:嵌入式工程能力压力测试解析 嵌入式系统开发不仅涉及C语言编程与单片机外设驱动,更强调在资源受限(如32MB内存、0.8秒时限)下的算法工程化落地能力。其核心原理涵盖实时调度机制、硬件抽象层(HAL)深度定制、中断优先级与时钟树的物理约束建模,以及跨编译器(Keil/IAR/GCC)的防御性编程实践。这类能力直接支撑智能终端、工业网关、边缘传感等典型应用场景,是高校教学与产业需求的关键衔接点。本文以第十三届蓝桥杯国赛研究生组原卷为样本,深入剖析‘伪开放题’背后的技术栈锁定逻辑、四层嵌套命题结构及硬件在环(HIL)验证方法,揭示从功能实现 阅读详情
在VFP中制做异型窗口
(作者:周鸣扬 2000年09月04日 11:50)

  制做异型窗口听起来好象只是在VB、VC程序设计中才能够做到的。但是,在VFP中,只要你灵活运用API函数,这并不是一件很难实现的事情。通过本文的介绍,你一定能够发现VFP程序的强项不仅仅是数据处理,在程序界面设计方面也可以和其他的编程语言相媲美。

  一、实现原理

  在VB、VC程序的设计中,如果想要改变窗口的形状,通常会通过对SetWindowRgn的调用来达到目的。SetWindowRgn函数能够将窗口设定成任意形状。该函数的调用格式如下:

  int SetWindowRgn( HWND hWnd, HRGN hRgn, BOOL bRedraw )

  其中各参数的含意为:

  hWnd:欲改变窗口的句柄

  hRgn:窗口的显示区域

  bRedraw:指明窗口在被改变显示区域之后是否需要重绘,通常情况下该值为真。

  通过上面对SetWindowRgn函数的介绍,我们可以看出,在VFP中要想改变窗口的形状,需要知道VFP窗口的句柄。在VFP中要想直接得到有关窗口的情况是很困难的,因此必须利用API例程库。VFP自带的API例程库“Foxtools.fll”提供了对窗口操作的相关函数。本文中能够用到的例程有_WOnTop()和_WhToHwnd()两种,其中_WOnTop()是用来获得顶层窗口的句柄,_WhToHwnd()返回指定窗口的句柄。这两个API例程的调用格式很简单,这里就不再详细介绍了。

  二、实现过程

  有了上面的认识之后,我们便可以试着去设计异型窗口的程序了。设计步骤如下:

  1.新建一表单Mult_shape,按表1设置表单的属性。

                表1

属性名        设置值                备注

AutoCenter    .T.                  自动居中
BackColor    0,0,160                蓝色背景
BorderStyle  No Border              窗口无边框
ControlBox    .F.                  去掉表单的最大化、最小化、恢复按钮
Caption      圆形窗口
FillColor  128,255,0  
ShowWindow  2-as Top-Level Form  将表单作为顶层表单,否则表单不能独立于VFP而存在
TitleBar      0-Off                  取消标题栏

  在表1中,对表单界面所做的设定,目的是为了让表单在运行之后更像一圆形窗口,因此,我们需要去掉标题栏、窗口大小控制按钮等常规窗口上的内容。

  2.在表单上加入一标签控件(Label1)和按钮控件(Command1),分别设定其标题为“VFP圆形窗口示例”和“退出”。

  3.设定表单和控件的事件代码,其中表单的Load事件代码为:

  *注册API函数

  declare integer SetWindowRgn in win32api integer,integer,integer

  declare integer CreateRoundRectRgn in win32api integer,integer,integer,integer,integer,integer

  *注册VFP的API例程库

  SET LIBRARY TO "C:/Program Files/Microsoft Visual Studio/Vfp98/Foxtools.fll"

  *设定表单的大小

  thisform.top=0

  thisform.left=0

  thisform.height=200

  thisform.width=200

  表单的Activate事件代码为:

  thisform.Label1.top=thisform.top+thisform.height/2-thisform.label1.height

  thisform.Label1.left=thisform.left+(thisform.width-thisform.label1.width)/2

  thisform.command1.top=thisform.height-3*thisform.command1.height

  thisform.command1.left=thisform.left+(thisform.width-thisform.command1.width)/2

  *上述代码主要是用来在圆形窗口中准确定位各控件的位置

  topwindow=_WOnTop( )

  *获得顶层窗口

  hwnd=_WhToHwnd(topwindow)

  *获得顶层窗口的句柄

  CRN1=CreateRoundRectRgn(0,0,200,200,200,200)

  *建立一圆形窗口,如果要做其他形状的窗口,只需调用不同的建立区域的函数

  SetWindowRgn(hWnd,CRN1,.T.)

  Command1控件的Click事件代码为:

  thisform.release

  另外,如果你还想设计出其他形状的窗口,只需要将Form1中的Activate事件代码中的CreateRoundRectRgn(0,0,200,200,200,200)做相应的修改。比如你想要建立一苹果形窗口,将该语句改为: CreateRoundRectRgn(0,0,200,200,90,1800)即可。

  通过本文所介绍的程序,以前看起来很困难的事情转眼间就做到了。试试看吧,你能够做出更加丰富多彩的异型窗口!
FoxBase:早期关系型数据库管理系统的回顾与实践 FoxBase,作为一个曾经广泛使用的数据库管理系统,是许多早期IT从业者的记忆。本章将引领读者回顾FoxBase的历史地位与功能特色,并提供一个概览,展示其在现代数据库技术发展中的贡献与位置。我们将探讨它如何影响了后来的关系数据库管理系统,并分析为何在当今技术迭代快速的环境中,它仍拥有不可替代的教育和学习价值。FoxBase内置了大量的函数,这些函数主要分为数学函数、字符串处理函数、日期时间函数等。以下是一些常用的内置函数::返回substr在str中的位置。 阅读详情

相关推荐

VFP的API例程

Windows API 在 VFP 中的应用示例 如:检查网络状态、设置异形窗体等。

VFP中使用浏览器控件制软件界面

 不知你在使用VFP中是否 有以下困惑:1.如何使自己VFP软件的界面更漂亮些?2.如何使用嵌入浏览器控件?3.如何屏蔽嵌入页面的右键菜单?4.如何截获超链接的点击事件?5.使用浏览器控件后,如何同时使用模式表单和非模式表单6.如何阻止浏览器控件弹出新窗口?下面,是我在编程时对浏览器控件的经验:1.如何使自己VFP软件的界面更漂亮些?这个问题可大可小,与个人

木瓜的专栏 6496

桌面云虚拟机Ubuntu离线安装open-vm-tools

公司办公在桌面云中进行开发,桌面云是无法访问外网的,然后又有安装虚拟机的需求,使用VMware自带的VMware-tools安装功能失败,报错也需要联网才能解决,如果不安装VMware-tools,则虚拟机无法使用共享文件夹功能以及与本机共享剪贴板功能,非常难受,故自己研究解决如何离线安装open-vm-tools(open-vm-tools 是 VMware Tools 的开源实施)打开Ubuntu,可以在文件中看到生成的ISO文件,点开,将四个软件包复制粘贴至桌面。

weixin_43397593的博客 5082

VFP经典问题集一

VFP经典问题集一 问题1: 怎样从表单返加一个值? 答案1: 可以在模式表单的unload事件中用return来返回一个值。   问题2: 怎样在表单设计器中把属性或方法添加到表单中?  答案2: 用表单设计器窗口或属性/事件/激活的方法窗口,从菜单中选择表单。最初的两个选择是新属性和新方法。选择你想要加入的一个并填写属性或方法的名称,新建的属性将出现在属性窗口的最底部。  问题3: 我

liubangwei的专栏 2986

Ubuntu22.04实战:基于VLLM高效部署Qwen3系列模型并构建Dify智能体

本文详细介绍了在Ubuntu22.04系统上使用VLLM高效部署Qwen3系列模型并集成Dify平台的实战指南。从环境配置、Conda管理到VLLM优化部署,再到Dify智能体构建,提供了全面的技术方案和性能调优建议,帮助开发者快速实现AI模型的高效部署与应用。

weixin_28323057的博客 163

windows中如何将已安装的nodejs高版本降级为低版本

第一步:先清空本地安装的node.js版本 1.按健win+R弹出窗口,键盘输入cmd,然后敲回车(或者鼠标直接点击电脑左面最左下角的win窗口图标弹出,输入cmd再点击回车键) 然后进入命令控制行窗口,并输入where node查看之前本地安装的node的路径 2.找到上面找到的路径,将node.exe所在的父目录里面的所有东西都删除 3.为了彻底删除之前安装的node.js,鼠标点击电脑左面最左下角的win窗口图标弹出,输入“控制面板”再点击回车键进入,进入控制面板后,找到所安装的node.js并

weixin_44582077的博客 9万+

设置page背景色

page{ background-color:#0f0d17; } 更多详情请查看: 设置page背景色 · 语雀page{ background-color:#0...https://www.yuque.com/lengyuezuixue/togedc/cxktbo

冷月醉雪的博客 934

[Dify实战] 招聘筛简历机器人:自动筛选、排序、生成面试要点-带绑定资源

摘要:本文介绍了如何利用Dify优化简历筛选流程,解决人工筛选耗时、标准不统一等问题。通过结构化输出"评分+亮点+风险+面试关注点",将主观判断转化为规则化流程。关键步骤包括:设计标准化Prompt、配置权重排序策略、确保公平合规性、与ATS系统对接,以及持续优化评估指标。该方法能显著提升筛选效率(缩短招聘周期)、增强一致性(避免主观偏差),并为面试官提供结构化参考信息,最终实现更高效精准的人才筛选。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 581

IT文档 10

在VB5中生成统计图形在VB6中实现Kodak控件编程在VB6中实现图像的变换在VB6中用Select语句检索记录在VB中使用API关闭窗口在VB中使用DirectShow播放AU文件在VB中使用文字朗读引擎(TTS)技术在VB中利用Word宏命令开发ASP组件在VB中制作单独程序封面的两种方法在VB中压缩ACCESS 数据库在VB中存取数据库中的图片在VB中实现文件上载在VB中实现窗体的动态效果

iamhere1956的专栏 519

飞牛fnNAS搭建web版微信

摘要:本文介绍了一种通过Docker在飞牛NAS上部署微信客户端的方法,实现24小时同步微信聊天记录。具体步骤包括:1)激活飞牛NAS的Docker功能并配置镜像加速源;2)创建专用文件夹并下载docker-wechat镜像;3)设置容器参数并部署微信客户端;4)通过局域网或ZeroTier内网穿透实现远程访问。相比传统Windows/Linux方案,该方法资源占用更低,适合需要长期保存微信聊天记录的用户。

dgnankai的专栏 3343

环保 HJ212协议解析

由于是做环保相关的,有时需要对212协议进行拆包和解包。HJ212协议是一种字符串协议,数据传输通讯包主要由包头、数据段长度、数据段、CRC校验、包尾组成,其中“数据段”内容包括请求编码、系统编码、命令编码、密码、设备唯一标识、总包数、包号、指令参数。请求编码为请求的时间戳,系统编码ST统一规定为22,命令编码CN为该数据包的时间类型,访问密码、设备唯一标识在对接时由平台提供,指令参数为数据内容。通讯协议的数据结构如图4所示。 图4 通讯协议的数据结构 6.1.1通讯包结构组成 名称 类型 长度

ccf19881030的专栏 2万+

FoxPro中Windows API的调用

动态连接函数库(DLLs)可以说是Windows系统的基础,Windows系统或Windows的应用 系统在执行过程中,常常通过外部的动态连接函数库支持其所需功能,如控制屏幕、打印机、 鼠标、键盘等设备,若在设计过程中,将完成这些功能的程序都重复写在系统中,就会使 程 序过大。另外一点,就是这些工作函数库具有共享功能,也就是说可以利用Windows程 序开发 工具,直接使用这些属于Windows函

hylang的专栏 931

Python - 多页pdf 合称为一页

尝试使用 ReportLab 来重画 pdf,但探索起来有点麻烦。重要的是解决手头这个问题,所以就算方法蠢,但简单完事。以下生成结果,最有一页 pdf 可能会显示在第一页,手动编辑下 pdf 即可;或者你也可以修改代码逻辑来完善。打印ppt,一页占用A4纸比较浪费,想多页合成一个 A4大小;安装 fitz,单独安装 fitz 使用可能会报错。将 PDF 拆分为 图片来保存。

AI工程化、开源分享、文档翻译、代码笔记 1427

创建圆角或者圆形窗体

使用API函数CreateRoundRectRgn和SetWindowRgn来创建圆角或者圆形窗体。

Zezese的专栏 635

《SAP FICO系统配置从入门到精通共40篇》030、集成配置:FI与生产计划(PP)的自动科目确定

FI和PP的自动科目确定,本质上是把生产业务翻译成会计语言。翻译规则就藏在那些配置表里。配的时候多想一步:这个业务动作,在财务眼里是什么?是材料消耗?是产出入库?还是工费分摊?想清楚这个,再看配置界面,那些代码就不是天书了。最好的测试方式,是月底关账前,让生产部门跑一遍所有类型的生产订单。配置对不对,业务最知道。

985大学毕业,前某大厂员工,啥都会点的程序员! 576

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

VFP在表单上画图(画直线、曲线等)

 本示例并没有应用GDI+  Public oform1oform1=Newobject("form1")oform1.ShowReturn Define Class form1 As Form Top = 1Left = 1Height = 500Width = 700ScrollBars = 0DoCreate = .T.ShowTips = .F.Picture = ""

apple_8180(十豆三) 的专栏 1万+

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

在VFP中定制自己的工具栏

在用Visual Foxpro(简称VFP)进行应用程序开发时,你一定被它那功能强大、漂亮简捷的工具栏所吸引,陶醉着有一天在应用程序中也加入自己的工具栏。其实这对VFP来说并非难事,请君往下看:       1 定义工具栏类       要创建自定义工具栏,必须首先为它定义一个类。VFP提供了一个工具栏基类,在此基础上,你可以创建自己的工具栏类。创建工具栏类有以下几种方法:       *在“文件

hylang的专栏 2842

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

《Windows程序设计》读书笔五 绘图基础

Windows在基于图形设备接口的视频显示器和打印机上显示图像。GDI 5.1.1 GDI原理 GDI是为了兼容于设备无关的图形。 图形输出设备分为两大类,光栅设备和矢量设备。GDI是图形设备硬件的一种高级接口。 GDI总的来说是一个静态系统,对动画支持有限。如果需要为游戏编写复杂的动画,还是需要使用DirectX 或者OpenGL 5.1.2 GDI函数使用 GDI函数的分类

sesiria的博客 1800

在VFP程序中创建工具条

 大家对工具条(TOOLBAR)肯定不会陌生,利用工具条,可以使我们的操作更加方便。如图所示的程序中便使用了工具条,我们可以在程序运行时将工具条放置在任意地方,并且可以调整工具条的大小、改变按钮的排列方式(横向、纵向)。那么,在VFP中怎样才能创建工具条呢?在VFP的表单设计环境中并没有工具条控件,要使用工具条,你得自力更生!  首先得新建一工具条类(CLASS):在新建文件的文件类型中选

优快云 TERRYYRRET 的专栏 1980

从0开始学习《Windows程序设计》:窗口、窗口!!!

一、消息框 在之前的学习中,我们通过MessageBox创建了一个消息框程序! 消息框是什么,消息框就是我们用来跟用户交流的界面!! /* ------------------------------------------------------------------- MyWindows.c -- 基本窗口模型 《Windows 程序设计(SDK)》视频教程 ----------------...

aixintianshideshouhu的博客 8624

VFP中Form的重要概念

<br /> 本文所指的"表单窗口属性"是指那些不但影响表单本身的特征,而且对表单之外、项目之中的其它"元件"有影响的表单属性,它们是:<br />属性               意义                               可选值(黑体为默认值) <br />DeskTop            指定表单是否包含在VFP主窗口中              .F.或.T. <br />WindowType         指定表单对象运行时的动作                0-无模

whrjxyygx的专栏 2413

表单怎么关不掉?揭密VFP对象引用的魔术

昨天是2022首发直播课,XINJIE老师主讲,猫猫因为在外面培训上课,也就仅仅露了两分钟的脸,没能收看全程,只能看回放了。 这是大家的收获,让大家的软件可以包装一下,更有档次,当然我们也要获取更多的溢价。 来加菲猫的社群,已经有太多的狐友超越我了,所以接下的都会请大家来做分享,来听听他们的知识分享,你的苹果+我的苹果,交换一下,还是一个苹果,但知识,你的知识+我的知识=双倍知识。 很多狐友还不会写类,不会用对象,今天来讲一点基础。以下示例来自网络。 “对象引用”的概念 什么是“对象引用”呢?比如,现在我

加菲猫的VFP 909
上一篇: Delphi开发经验四则
普通网友
博客等级 码龄26年 3粉丝 13原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值