
C++/BCB开发
编译失败
这个作者很懒,什么都没留下…
展开
-
C++Builder编译链接错误LME288的解决
内行人都知道,C++Builder自从被卖了以后一直就不太稳定,从CodeGear到XE系列总有Bug遗传,比如下面这个[ilink32 Warning] Warning: Error detected (LME288)错误,这个错误一直就有碰到过,跨越多个版本,以前也没怎么在意,一般重启电脑就OK,差不多有几年没用C++Builder正式的做点什么。最近升级系统+IDE,都到Win10+XE7了原创 2016-07-19 17:40:31 · 6465 阅读 · 1 评论 -
COM 技术简介
(转载,作者不祥) 这篇文章是给初学者看的,尽量写得比较通俗易懂,并且尽量避免编程细节。完全是根据我自己的学习体会写的,其中若有技术上的错误之处,请大家多多指正。 一、为什么要用COM 软件工程发展到今天,从一开始的结构化编程,到面向对象编程,再到现在的COM编程,目标只有一个,就是希望软件能象积方块一样是累起来的,是组装起来的,而不是一点点编出来的。结构化编程是函数块的形式,通过转载 2007-10-16 19:39:00 · 2526 阅读 · 0 评论 -
BCB中的RTTI机制
BCB中的RTTI机制RTTI在BCB中其实有两个意义。首先,针对一般标准的C++中所定义的,RTTI是所谓的Run-Time Type Identification的缩写。传统的程序语言中,所谓的数据型态仅在Compile-Time有所作用。举例而言,您宣告了一个变量a,并且指定其型态为整数。您如何在Run-Time期间知道他的型态是整数呢?很遗憾的是,在原来的C/C++中您是无法知道这样的转载 2006-05-24 17:09:00 · 3471 阅读 · 0 评论 -
Winamp 插件技术
我想:在回答“你用什么播放器听 MP3”这个问题时,90%的人都会回答 Winamp!那么你一定用过 Winamp 的插件功能吧,正是多样化的插件使这个“老”播放器不断地焕发青春。不管新推出什么音频格式(MP4,VQF,RM...),只要插件一装就能播放。还有形形色色的可视插件,比如 Giess 等等,将音乐的节奏感表现的可谓淋漓尽致! 既然插件是用程序编写的,那么我们何不来一试身手转载 2006-03-11 16:56:00 · 2245 阅读 · 0 评论 -
如何查找和杀死一个进程
函数说明:CreateToolhelp32Snapshot 创建系统快照Process32First 查找第一个进程Process32Next 查找下一个进程OpenProcess 打开进程GetExitCodeProcess 取得进程终止状态TerminateProcess 终止进程CloseHandle 关闭对象句柄//=====================================原创 2005-12-31 18:53:00 · 2815 阅读 · 0 评论 -
在程序中重启自己的一种方法 (转载)
作者: ahaozi(老公仔)在工程.cpp文件(Project1.cpp)中加入:.....#include "Unit1.h".....WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int){.......... if(g_bIsRunAgain) { AnsiString strPath; STARTUPINFO StartI原创 2005-12-28 16:12:00 · 1290 阅读 · 0 评论 -
如何压缩Access数据库
Microsoft的Access继承了一些FoxBase DBF的特点,个人估计是DBF的改进,比如FoxBase说在删除数据后其实并没有真正删除,只是加上一个删除标记,在需要的时候可以用Recall命令恢复这些数据,如果想彻底删除,首先需要独占访问数据表,然后使用Pack命令来清除这些已经被删除的数据,可以称之为“压缩”数据表。 Access也是一样,如果是文本和数字等原创 2005-12-30 14:58:00 · 5236 阅读 · 1 评论 -
列举本机安装的解码器(CODEC)
#include "stdio.h"#include "conio.h"#include "stdlib.h" //for function wcstombs()#include "windows.h"#include "vfw.h"#pragma comment(lib,"vfw32.lib") //此行可省去int EnumCodecs(char *strName,int *fccHandle原创 2005-12-24 17:58:00 · 1627 阅读 · 0 评论 -
如何存取Unicode和UTF-8文本
//Unicode文本会在最前加上0xFF,0xFE两个字节的标记//存WideString W;if (Memo1->Text.IsEmpty()) return;TMemoryStream *ms=new TMemoryStream();char S[]={0xFF,0xFE};ms->Write(S,sizeof(S));W=Memo1->Text;ms->Write(W.c_bstr(),原创 2005-12-20 16:08:00 · 1239 阅读 · 0 评论 -
模仿Windows的文本框右键菜单
包括dxUndo,dxCut,dxCopy,dxDelete,dxPaste,dxSelectAll;分别对应 撤销,剪切,复制,删除,粘贴,全选;在Form的AppEventsIdle事件中加入以下代码,自动设置以上项目的Enabled属性(如:只有在选择文本后剪切和复制才可用)!(尚待改进...)void __fastcall TFormMain::AppEventsIdle(TObjec原创 2005-12-19 17:13:00 · 1193 阅读 · 0 评论 -
提取exe文件的图标
TIcon *pIcon = new TIcon(); WORD wIndex; HICON hIcon=ExtractAssociatedIcon(HInstance,"c://windows//explorer.exe", &wIndex); pIcon->Handle =hIcon; Form1->Icon = pIcon; Image1->Picture = (TPictur原创 2005-12-19 17:00:00 · 1544 阅读 · 0 评论 -
让PageControl的Tab标签响应鼠标右键
在PageControl的OnMouseUp事件中:void __fastcall TForm1::PageControl1MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y){ if (Button == mbRight) { int nIndex = Pa原创 2005-12-19 16:57:00 · 1498 阅读 · 0 评论 -
将鼠标指针限制在某一范围内
TRect lockmouse=Panel1->BoundsRect; ////限制在Panel1中//TRect lockmouse=Form1->ClientRect //限制在窗体中MapWindowPoints(Handle,0,(LPPOINT)(&lockmouse),2);ClipCursor(&lockmouse);//释放鼠标ClipCursor(0);原创 2005-12-19 16:37:00 · 2135 阅读 · 0 评论 -
将字符串变量转换为控件指针
使用查找组件函数FindComponent :TButton* Button=dynamic_cast(Form1->FindComponent("Button1"));原创 2005-12-19 16:34:00 · 1084 阅读 · 0 评论 -
获取本机公网IP地址
說明:使用NMHTTP控制項,獲取某一能檢測IP的網頁的內容,從中提取IP位址NMHTTP1->Get("http://code.helpor.net/mine/ip.php");AnsiString getIPFromURL = NMHTTP1->Body;AnsiString WanIP=getIPFromURL.SubString(getIPFromURL.Pos("(")+2,getIPF原创 2005-12-19 16:30:00 · 3413 阅读 · 0 评论 -
使窗体无标题栏(普通窗体或MDI子窗体)
Windows在创建窗体时使用一个CreateWindowEx函数,通过传给这个函数的参数来确定窗口的样式。而CreateParams虚函数是VCL在创建窗口之前调用的,用来取得要创建的窗口的样式的及其它一些相关属性的(Params参数),这里先通过调用TCustomForm的CreateParams函数来取得标准的窗口属性,再通过设置Params.Style参数把窗口样式里的标题栏属性去掉,函数原创 2005-12-19 16:28:00 · 1709 阅读 · 0 评论 -
COM组件设计与应用(链接)
以下文章转自http://www.vckbase.com/document/,作者署名"杨老师",个人认为是非常好的COM教程,只可惜是VC的,不过还是可以借鉴一下。(文章如果涉及版权问题请通知我删除)第1回 起源及复合文件 第2回 GUID 和 接口第3回 数据类型第4回 简单调用组件 第5回 用 ATL 写第一个组件第6回 用 ATL 写第一个组件(vc.net)第7回 编译、注册、调转载 2007-10-21 12:18:00 · 1084 阅读 · 0 评论 -
用VC进行COM编程所必须掌握的理论知识(节选)
二、用VC进行COM编程,必须要掌握哪些COM理论知识 我见过很多人学COM,看完一本书后觉得对COM的原理比较了解了,COM也不过如此,可是就是不知道该怎么编程序,我自己也有这种情况,我也是经历了这样的阶段走过来的。要学COM的基本原理,我推荐的书是《COM技术内幕》。但仅看这样的书是远远不够的,我们最终的目的是要学会怎么用COM去编程序,而不是拼命的研究COM本身的机制。所以我个人觉转载 2007-10-21 12:16:00 · 1216 阅读 · 0 评论 -
BCB中用代码关闭监视器
很简单的一个消息:SendMessage(Handle,WM_SYSCOMMAND,SC_MONITORPOWER,1); //关闭SendMessage(Handle,WM_SYSCOMMAND,SC_MONITORPOWER,-1); //打开别误会,这可不是关闭显示器的电源,没有那么牛的程序,只是让显示器黑屏。原创 2007-10-24 13:43:00 · 997 阅读 · 0 评论 -
遍历目录下所有文件
void __fastcall GetFiles(AnsiString Dir){ TSearchRec sr; TStringList *FileList=new TStringList(); //保存文件名的List if (FindFirst( Dir+"*.*",faAnyFile,sr) == 0) { try {原创 2005-12-19 16:24:00 · 928 阅读 · 0 评论 -
BCB设计时组件编译错误
如今谁用BCB做可视化组件设计简直就被人笑掉大牙,可惜多年前一个项目需要升级到Rad Studio XE,里面有部分组件用BCB做的,组件本身比较简单,但编译出错,提示propsys.h中的 IPropertyDescription重复定义,抛出十几个错误:[BCC32 Error] propsys.h(1798): E2238 Multiple declaration for 'IPrope原创 2012-05-17 10:18:25 · 2002 阅读 · 0 评论 -
命令行编译C++Builder/Delphi项目
一直以来,Delphi 都可以用命令行 dcc32 ProjectName.dpr 对项目进行编译链接,非常方便,Delphi对项目文件的参数配置处理的很简单,便于阅读处理起来也很直观,编译的中间文件也很简单(dcu,dcp)。而C++Builder就没那么幸运了,因为包含了C++的特征,各种编译的中间文件:lib,obj,res,map,tds。后来新版又增加了一些预编译文件:ilc,ild原创 2011-11-20 21:48:02 · 8209 阅读 · 2 评论 -
控制台输出重定向到Memo
//函数RunCmdvoid __fastcall TForm1::RunCmd(AnsiString CmdLine,TStrings *Result){ HANDLE hReadPipe,hWritePipe,hParentStdout; SECURITY_ATTRIBUTES sa; OSVERSIONINFO osVer; osVer.dwOSVers原创 2005-12-19 16:55:00 · 3288 阅读 · 1 评论 -
取得枚举类型enum中的元素名称
此例应用了VCL的RTTI机制...#include enum number {One,Two,Three,Four,Five,Six};class TForm1 : public TForm{...private: number FNum;__published: __property number Num = { read = FNum };};.CPP文件原创 2006-05-24 19:57:00 · 4696 阅读 · 1 评论 -
利用RTTI取得类的成员信息
前一篇文章讲了如何取得枚举类型中的元素名,现在讲讲取得类的成员信息,VCL的RTTI(runtime type identification运行时类型标识)封装C++的RTTI,并加入了一些新特性,这就是VCL的强大之处。 废话不多说,下面这个函数把AClass(函数参数)的所有成员,包括属性、变量、函数和事件相关信息添加到TStrings中(以下函数定义在Typinfo.pas中):voi原创 2006-05-24 22:23:00 · 1687 阅读 · 0 评论 -
CPPWebBrowser的几个简单应用
以下应用应该包含文件1.去除边框和滚动条一般你可以把这个函数放在CppWebBrowser的OnDocumentComplete事件中调用void __fastcall TForm1::SetBrowserStyle(){ _di_IDispatch disp = CppWebBrowser1->Document; if(disp == NULL) return; //这原创 2006-05-25 12:12:00 · 7220 阅读 · 3 评论 -
关于TDBNavigator->VisibleButtons及TDBGrid->Options属性更新的问题
作者注:本文摘自优快云一个FAQ,回帖人是jishiping,曾经是BCB版的版主,可现在已经辞掉了,我记得以前他在的时候,很多复杂繁琐的问题都有他的回答,而且往往是点睛之笔,很多人受过他的帮助,包括我自己,唉!现在这样的人越来越少了,BCB版的人气也大不如从前,我自己要是碰到什么问题往往都很难在优快云上解决了,只能硬着头皮啃帮助,无奈自己英文水平又不高,往往看的成斗鸡眼也不能解决问题!苦转载 2006-06-02 01:05:00 · 2563 阅读 · 0 评论 -
在TDBGrid中绘制一个多选框(CheckBox)
可在TDBGrid的OnDrawColumnCell和OnDrawDataCell事件中编写void __fastcall TForm1::DBGrid1DrawColumnCell(TObject *Sender, const TRect &Rect, int DataCol, TColumn *Column, TGridDrawState State){ if原创 2006-06-02 02:26:00 · 3013 阅读 · 0 评论 -
取得BCB环境变量与Windows用户环境变量
遍历所有BCB环境变量:char **var= _environ;while(*var++) Memo1->Lines->Add(*var); 取得单个变量:char *var=getenv("APPDATA");Memo1->Lines->Add(var);取得Windows用户环境变量:使用API函数SHGetSpecialFolder。shlobj.h里有SHGetSpecial转载 2006-11-18 14:52:00 · 2746 阅读 · 0 评论 -
用AnimateWindow函数实现窗口动画效果
API原型:BOOL AnimateWindow( HWND hwnd, DWORD dwTime, DWORD dwFlags); hWnd:指定产生动画窗口的句柄; dwTime:指明动画持续的时间(以微秒计),完成一个动画的标准时间为200微秒; dwFags:指定动画类型。这个参数可以是一个或多个标志的组合。dwFlags: AW_SLIDE原创 2007-06-03 22:06:00 · 1283 阅读 · 0 评论 -
C++Builder利用URLDownloadToFile下载文件并显示进度
函数定义 :HRESULT URLDownloadToFile( LPUNKNOWN pCaller, LPCSTR szURL, LPCSTR szFileName, DWORD dwReserved, LPBINDSTATUSCALLBACK lpfnCB);参数说明: pCaller : 仅当调用者是一个ActiveX对象才使用,对于一个非Activ原创 2007-06-03 22:30:00 · 9352 阅读 · 2 评论 -
利用GDI+显示GIF动画
作者:(不祥) 多页图像是指图像中包含有多个图形页。每页可以看作图像帧。这些图像帧通过连续的显示就形成了一副动画。比如GIF文件。 GDI+的Image对象提供了直接的对GIF、TIF文件格式的支持。调用Image对象的成员函数GetFrameDimensionsCount可以得到Image对象的Dimension数。每个Dimension通过一个GUID标示。函数GetFrameDime转载 2007-07-29 23:46:00 · 1533 阅读 · 0 评论 -
在程序中处理外部文件拖放
很多软件都支持外部文件的拖放,比如winamp等音频播放软件,把mp3直接拖放到程序窗口就可以直接开始播放,实现这个功能其实很简单。首先在头文件中加入消息映射:private: // User declarations void __fastcall DragDropFiles(TMessage &msg); //自定义处理拖放的函数public: // User declaratio原创 2007-10-21 12:46:00 · 997 阅读 · 0 评论 -
组件编写中的属性继承注意事项
在C++中, 函数的覆盖(override,注:大多数文章及书本中把override也称为重载,我认为不妥,在此借用Delphi术语“覆盖”与“重载(overload)”区分)是在基类中用virtual关键字来修饰,称为虚函数,如果派生类中对基类中的虚函数进行覆盖,那么使用指向派生类的父类指针调用此函数,其实运行的是派生类中的版本。例如:#include using namespace std;原创 2007-10-31 20:42:00 · 932 阅读 · 0 评论 -
列出局域网內所有SQL Server
H:#include //加一个ListBox和Button控件;CPP:void __fastcall TForm1::Button1Click(TObject *Sender){ Variant SQLServer; Variant ServerList; int nServers; SQLServer = CreateOleObject("SQLDMO.Applica原创 2005-12-19 16:27:00 · 1039 阅读 · 0 评论 -
使窗体的关闭按钮变灰 (但可用Alt+F4关闭)
變灰:EnableMenuItem(GetSystemMenu(Form1->Handle,False),SC_CLOSE,MF_BYCOMMAND|MF_GRAYED);恢復:EnableMenuItem(GetSystemMenu(Form1->Handle,False),SC_CLOSE,MF_BYCOMMAND|MF_ENABLED);原创 2005-12-19 16:13:00 · 1517 阅读 · 0 评论 -
让TDBGrid的奇偶数行顯示不同的顏色
在DBGrid的onDrawColumnCell事件中加入以下代碼void __fastcall TForm1::DBGrid1DrawColumnCell(TObject *Sender, const TRect &Rect, int DataCol, TColumn *Column, TGridDrawState State){ TDBGrid *grid=(TDBG原创 2005-12-19 16:09:00 · 1411 阅读 · 0 评论 -
虚屏 (Win98关机时的网格,但不能锁定)
void __fastcall TForm1::Button1Click(TObject *Sender){ unsigned short ary[8]={0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA}; HBITMAP hbm=CreateBitmap(8,8,1,1,ary); HBRUSH hbs=CreatePatternBrush(hb原创 2005-12-19 16:42:00 · 830 阅读 · 0 评论 -
按最小化按鈕時隱藏窗体
使用自定义消息:.H建立消息映射表:public: // User declarations __fastcall TForm1(TComponent* Owner); BEGIN_MESSAGE_MAP MESSAGE_HANDLER(WM_SYSCOMMAND,TMessage,Mymsg) END_MESSAGE_MAP(TForm)...其中WM_SYSCOMMA原创 2005-12-19 15:58:00 · 991 阅读 · 0 评论 -
單實例運行-2 (使用互斥Mutex)
//Project.cppWINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int){ HANDLE hMutexHandle = CreateMutex(NULL,true,"Application Already Run!"); if (GetLastError()!=ERROR_ALREADY_EXISTS) {原创 2005-12-19 15:37:00 · 863 阅读 · 0 评论