首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

用BCB,觉得自己像个太监!解决思路

2013-01-26 
用BCB,觉得自己像个太监!没找到Delphi开发的工作,一公司招人,说是用D和BCB开发,结果大部份都是BCB。觉得自

用BCB,觉得自己像个太监!
没找到Delphi开发的工作,一公司招人,说是用D和BCB开发,结果大部份都是BCB。觉得自己像个太监,不论不类!
[解决办法]
    楼主说自己是个太监,那就是个太监了;用C++BUILDER的程序员,不能正常阅读VCL源码,不能在需要的时候重构某一个VCL类,真是需要再努力了。



const int iOptmzSpinCount = 6000;               // 优化临界区循环值
//---------------------------------------

class TCriticalSectionPro
{
private:
int FSpinCount;
int FProcessorNum;
protected:
TRTLCriticalSection FSection;
void __fastcall SetSpinCount(int SpinCount);
public:
__fastcall TCriticalSectionPro(int SpinCount=iOptmzSpinCount);
__fastcall ~TCriticalSectionPro(void);

void __fastcall Acquire(void){EnterCriticalSection(&FSection);}
void __fastcall Release(void){LeaveCriticalSection(&FSection);}
void __fastcall Enter(void){Acquire();}
void __fastcall Leave(void){Release();}
bool __fastcall TryEnter(void){return TryAcquire();}
bool __fastcall TryAcquire(void) {return TryEnterCriticalSection(&FSection);}

__property int ProcessorNum = {read=FProcessorNum};
__property int SpinCount = {read=FSpinCount, write=SetSpinCount};
};
//---------------------------------------

class TThreadListPro
{
private:
volatile int FCount;
TList *FList;
TCriticalSectionPro *FCriticalSection;
protected:
int __fastcall GetCapacity(void);
int __fastcall SetCapacity(int Value);
void __fastcall Lock(void){FCriticalSection->Acquire();}
void __fastcall Unlock(void){FCriticalSection->Release();}
public:
__fastcall TThreadListPro(void);
__fastcall ~TThreadListPro(void);

void __fastcall UnlockList(void){Unlock();}
TList* __fastcall LockList(void){Lock();return FList;}

int __fastcall Add(void *Item);                  // 返回加入项在列表的当前索引
int __fastcall Remove(void *Item);               // 如成功则返回被删除项在列表的旧索引,不成功返回-1
int __fastcall IndexOf(void *Item);              // 如果不存在返回-1

void __fastcall Pack(void);
void __fastcall Clear(void);
void __fastcall Delete(int Index);
void __fastcall Insert(int Index, void *Item);
void __fastcall Sort(TListSortCompare Compare);
void __fastcall Move(int CurIndex, int NewIndex);

void * __fastcall Last(void);                    // 如果未成功,返回NULL。
void * __fastcall First(void);                   // 如果未成功,返回NULL。
void * __fastcall RemoveFirst(void);             // 如果未成功,返回NULL。
void * __fastcall RemoveLast(void);              // 如果未成功,返回NULL。

__property int Count = {read=FCount};


__property int Capacity = {read=GetCapacity, write=SetCapacity};
};
//---------------------------------------

class THandleThread : public TThread
{
private:
friend LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
protected:
MSG FMsg;                                        //消息结构
HWND FWndHandle;                                 //窗口句柄(HWND = void *)
virtual void __fastcall Execute(void);           //在TThread类定义为纯虚函数
virtual void __fastcall CreateObject(void);      //在此函数里利用AllocateHWnd建立窗口句柄
virtual void __fastcall DestroyObject(void);     //在此函数里利用DestroyWindow释放窗口句柄
virtual void __fastcall WndProc(TMessage &Message);
public:
__fastcall THandleThread(bool CreateSuspended);
__property HWND WndHandle = {read=FWndHandle, default=NULL};
};

HWND __fastcall AllocateHWnd(THandleThread *Sender);     //为THandleThread建立窗口句柄
//---------------------------------------


  上面这几个类都是因为VCL类不能满足实际使用,在VCL源代码的基础上用C++重写的(当然这里只有头文件),只要你平时尝试看一看常用类的VCL源代码,你就会真正成为一个男子汉,开发可以更美的。:)

热点排行