当前位置:天才代写 > tutorial > C语言/C++ 教程 > 操作子类化技能为DBGrid增加鼠标转动

操作子类化技能为DBGrid增加鼠标转动

2017-11-06 08:00 星期一 所属: C语言/C++ 教程 浏览:441

作者:yifei(尹加俊)

信箱:[email protected]

为DBGrid增加鼠标转动成果的演示,焦点代码如下:

//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "MainFormUnit.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TMainForm *MainForm;
//---------------------------------------------------------------------------
FARPROC OldProc = NULL; //用于生存旧的DBGrid控件的WindowProc
//---------------------------------------------------------------------------
/**
* 声明新的DBGrid的WindowProc
*/
LRESULT CALLBACK DBGridProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
//处理惩罚感乐趣的Window动静
if(uMsg == WM_MOUSEWHEEL) {
if((short)HIWORD(wParam) > 0) {
::PostMessage(hWnd,WM_VSCROLL,SB_LINEUP,0);
} else {
::PostMessage(hWnd,WM_VSCROLL,SB_LINEDOWN,0);
}
}
//挪用原DBGrid的WindowProc
return (::CallWindowProc(OldProc,hWnd,uMsg,wParam,lParam));
}
//---------------------------------------------------------------------------
__fastcall TMainForm::TMainForm(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FormShow(TObject *Sender)
{
this->ADOCn->ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
+ ExtractFilePath(Application->ExeName) + "Data.mdb;Persist Security Info=True";
this->ADOCn->Connected = true;
this->DataSet->Open();
//配置新的窗体函数
OldProc = (FARPROC)::SetWindowLong(this->DBGrid->Handle,GWL_WNDPROC,(long)DBGridProc);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FormClose(TObject *Sender, TCloseAction &Action)
{
//还原窗体函数
::SetWindowLong(this->DBGrid->Handle,GWL_WNDPROC,(long)OldProc);
this->ADOCn->Connected = false;
}
//---------------------------------------------------------------------------

本日偶尔看到了2ccc站点上有给DBGrid增加转动成果的代码,想想这个成果还真的很实用(可是他们的演示代码真的不怎么样,没有一点实用性),又搜索了一下网络发明只有Delphi和VB的例子,于是我就把写了一份BCB的代码,没有用网络上那些演示代码的要领,回收了一种较量实用的要领。

 

    关键字:

天才代写-代写联系方式