一般,windows程序员在编写windows程序时,为了降低编程的难度和缩短编程的时间,经常会调用各种windows资源,如画笔,写字板等资源。对于其他的程序设计语言,我们一般使用 api函数来实现着一功能,那么在borland c++ builder 上我们又如何实现呢?最近笔者在编写电子屏显示软件时,用api函数实现了该功能。
现以使用api函数调用windows画笔为列,把该方法介绍如下:
1、启动 c++ builder 进入菜单file|new application创建一个新项目,将该项目存盘,得到含有一个主窗口的项目。在主窗口上添加一个打开图片对话框控件OpenPictureDialog1和按扭控件Button1。
2、在主文件的文件头添加#include <ccid_code>&lt;shellapi.h&gt;</ccid_code>
3、在头文件的private 处添加 char BmpExec[100];
4、在Button1的OndbClick事件处添加如下代码:
void __fastcall TMainForm1::Button1Click(TObject *Sender)
{
AnsiString TempName;
FileClose(FileCreate("testest.bmp"));
FindExecutable("testest.bmp",NULL,BmpExec);//返回可执行文件名的句柄//
DeleteFile("testest.bmp");//删除文件//
OpenPictureDialog1->DefaultExt = String("BMP");
OpenPictureDialog1->Filter ="图片文件(*.bmp)|*.bmp";
OpenPictureDialog1->FileName="*.bmp";
if (OpenPictureDialog1->Execute())
{
if (OpenPictureDialog1->FileName.AnsiPos(".")<ccid_code>&lt;1) <br><br>openpicturedialog1-&gt;</ccid_code>FileName=OpenPictureDialog1->FileName+".BMP";
//给没有扩展名的文件加上扩展名,此时FileName为文名的全名//
CloseHandle(CreateFile(OpenPictureDialog1->FileName.c_str(),//参数1 为文件名//
GENERIC_WRITE, //参数2 文件的访问模式:设置为文件可写并且文件指针//
FILE_SHARE_WRITE, //参数3 文件的共享模式:如果写访问允许文件可被修改//
NULL, //参数4 安全属性: 用缺省的操作符//
OPEN_ALWAYS, //参数5 如果文件不存在,如何创造文件:设置为存在则打开,如不存在则新建//
FILE_ATTRIBUTE_NORMAL, //参数6,文件的属性和标志,文件没有其他的属性//
));//关闭打开的事物句柄//
//以上的代码使文件设置为共享,从而使下面的代码顺利执行//
TempName=AnsiString(BmpExec); //把char 转换成AnsiString//
TempName=TempName+" "+OpenPictureDialog1->FileName;//应用程序名+相应的被处理文件//
WinExec(TempName.c_str(),SW_SHOWNORMAL);//执行应用程序//
}
}
5、编译执行。当双激按扭Button1时,程序出现打开图片文件的对话框,选则要打开的bmp文件,便可以调用windows的画笔打开自己选定的bmp文件了。
在每一条语句的后面,笔者都加了注释,有兴趣的朋友可以一试。
分享到:
相关推荐
C++ Builder MDI (Multiple Document Interface) 应用程序是一种允许用户同时处理多个文档的软件设计模式。...在C++ Builder 2010中,可以充分利用其强大的VCL库和面向对象特性,轻松实现MDI应用程序的DLL子窗体功能。
7. **调用DLL**:在需要使用DLL的C++Builder应用程序中,首先需要包含相应的头文件,然后使用`LoadLibrary`和`GetProcAddress`函数动态加载和获取DLL中的函数指针。例如: ```cpp HMODULE dllHandle = LoadLibrary...
要让C++ Builder调用Delphi的PAS文件,我们需要遵循以下步骤: 1. **创建Delphi的PAS文件**:在Delphi中编写PAS文件,定义需要被C++调用的函数或方法。确保这些函数使用标准的C调用约定(`stdcall`),以便跨语言...
在C++ Builder中实现调用打印机打印图片涉及多个步骤,主要涵盖图形设备接口(GDI)的使用、图像处理以及打印机通信。以下是一份详细的指南,涵盖了这一过程的关键知识点: 1. **理解GDI**: GDI是Windows API的核心...
通过以上步骤,你可以在C++Builder项目中灵活地调用Windows API,扩展C++Builder自带组件的功能,实现更复杂的应用需求。在学习过程中,理解每个API函数的作用和使用方法,以及如何将它们融入到C++Builder的事件驱动...
在C++Builder(通常简称为BCB)中嵌入谷歌浏览器是一项常见的开发任务,它能够为应用程序提供现代的Web浏览功能。在这个过程中,开发者通常会借助第三方库来实现这一目标,比如DCEF3(Desktop Chrome Embedding ...
C++Builder中的TAnimate控件可以用来添加简单的动画效果到Windows应用程序,如窗口淡入淡出、滑动等。 通过对以上主题的深入理解和实践,C++Builder开发者可以构建出功能丰富、性能优异的桌面应用程序。无论是开发...
这是一个C++builder 调用C# DLL的标准范例,通过该范例的学习可以掌握BCB调用C#的DLL的方法。具有很强的学习和借鉴意义。
C++ Builder主要用于开发桌面应用程序,提供高效、低级别的控制,而JavaScript则广泛用于网页和网络应用,提供动态交互性。然而,有时我们需要在C++ Builder中调用JavaScript代码,以利用其在客户端交互和数据处理...
在IT领域,C++ Builder是一款强大的集成开发环境(IDE),专为使用C++语言构建Windows应用程序而设计。它集成了RAD(快速应用开发)工具,允许开发者高效地编写和调试代码。Windows API(应用程序接口)是微软操作...
C++ Builder 2007 是一款由...总的来说,C++ Builder 2007 是一个功能强大的C++开发工具,尤其适合那些希望快速构建Windows桌面应用程序的开发者。通过其丰富的库和工具,开发者可以高效地实现他们的编程目标。
在IT领域,C++Builder是一种流行的集成开发环境(IDE),用于构建高性能的Windows和移动应用程序。MATLAB,另一方面,是MathWorks公司推出的一种强大的数学计算软件,广泛应用于工程、科学和金融领域。当我们需要在...
可能需要利用C++的标准库或者Windows API来实现接口,使得C++Builder的代码能在VC++环境中正常工作。 5. **编译与调试**:理解C++Builder的编译器选项和调试工具,如设置预处理器宏、链接库、优化选项等,对优化...
生成lib文件之后,C++Builder便可以使用这个lib文件了。 注意事项三: 文件头的声明应该完全一样,否则(呵呵),会出现链接错误。 #ifdef DLL_API #define DLL_API extern "C" _declspec(dllexport) #else #...
标题 "SPY c++builder 6 编写SPY源程序" 描述的是一个使用C++Builder 6(CBC6)开发的项目,其目的是创建一个类似于SPY的应用程序。这个程序可能涉及到系统监控、调试或者信息捕获等功能,因为"SPY"通常指的是能够...
33.Windows95/98下怎样隐藏应用程序不让它出现在CTRL-ALT-DEL对话框中? 34.怎样隐藏应用程序的任务条图标 35.编写自己的Ping.exe程序 36.用C++Builder在WINNT下编制一个Service 37.如何在C++ BUILDER中自动关闭...
C++Builder DataSnap程序是一种利用Embarcadero C++Builder集成开发环境构建的分布式应用程序,它结合了C++编程语言的高效性和DataSnap框架的强大功能。DataSnap是Borland/Embarcadero开发的一种技术,用于创建...
在C++Builder中,可以使用标准的Windows API来实现上述功能。下面是一些关键的代码片段示例: ```cpp #include <windows.h> #include #include // 定义USB设备句柄 HANDLE hDevice; // 打开USB设备 hDevice = ...
在C++Builder中,开发者可以使用C++语言调用Windows API函数。通常,这需要包含适当的头文件(如windows.h),并使用extern "C"来避免C++的名称修饰问题。例如,创建窗口、处理消息循环、响应用户输入等都是通过...