当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: 我在写定时提醒 时碰到一个问题:怎么发声?我开始是用 32 位 Windows 的 API 函数 MessageBeep( -1 ); 那声音又小又难听。
 

 

    摘要:---转载自《计算机世界日报》 (文/凌震) ---- 本文介绍了在 c++builder 5环境下新增的ado控件的使用方法,并给出了一个简单的实例。 ---- 一、ado概述 ---- ado(active data object) 是微软公司基于ole db的数据库模型。它实现了一系列com接口,通过数据提供者(data provider)和数据使用者( data consumer......
    摘要: c++ builder/delphi是inprise(原borland)公司广受欢迎的可视化c++/pascal开发工具,利用它可极大地加快应用程序的开发速度。但是,也正因为其是可视化编程工具,将控件拖放到form后,控件的位置就固定死了。随着form的大小或屏幕分辨率的改变,控件和form本身的位置往往变得非常混乱。本文将介绍一些正确定位控件及form的方法。 利用onresize事......


C++ Builder 和汇编混合编程一例
我在写定时提醒 时碰到一个问题:怎么发声?我开始是用 32 位 windows 的 api 函数 messagebeep( -1 ); 那声音又小又难听.原来在 16 位的 windows api 中有的一套 playsound 的函数在 32 位 windows 中又取消了, dos 下的 sound 函数更是早就不能用了.

幸好我对硬件还算了解,知道 pc speaker 的声音是通过系统中的定时计数芯片 8253/8254 产生的,只要通过硬件端口访问芯片就可以产生想要的声音了. 问题在于 windows 是工作在保护模式下,大多数硬件端口都要在特权级0(pl0, 这是搞硬件的人的说法,后来我才知道在搞 os 与 driver 的人中是叫 ring 0 的, 这才比较正确,因为如果不是 intel 的 cpu 可能就不叫 pl 了)中, 即操作系统核心态中,才可以访问(比如硬盘口,访问时是不会出错,但结果不正确), 这也就意味着要写成驱动程序的形式,天啊! vxd 与 wdm 我都不会,怎么办? 事实上没有这么困难,像 pc speaker 这种无伤大体的端口, windows 是不保护的, 即在用户态下也可以正常访问. 【程序编程相关:DEBUG常用命令

【推荐阅读:(译)win32asm教程-3

现在还有一个问题就是用什么语句访问端口? dos 中 c 语言里的那几个端口操作函数在 windows 中都取消了,只好用汇编.我开始是用 asm 语句插入汇编代码,结果发现 bcb 在编译时碰到 asm 时会把 bcb 文件编译成一个巨大的 asm 文件, 再重新启动汇编程序汇编,速度太慢.最后采用了我在 dos 编程时常用的方法, 做一个单独的 asm 文件加入工程文件中. 【扩展信息:高级语言反汇编程序的函数调用过程

下面是两个用于发声的函数,最前面声明了两个外部 c 调用形式的函数, 是两个用汇编写的字节端口输入/输出函数,注意:在 c++ 中一定要注意外部函数应为 c 调用形式.
...   下一页
 ·判断windows的desktop及其它目录    »显示摘要«
    摘要: 使用api函数shgetspecialfolder。shlobj.h里有shgetspecialfolder的原型声明。这个函数可以帮我们找到windows的desktop目录、启动目录、我的文档目录等。 shgetspecialfolder需要三个参数。 第一个参数是hwnd,它指定了"所有者窗口":在调用这个函数时可能出现的对话框或消息框。第二个参数是一个整数id,决......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE