如何不讓滑鼠滾輪影響ComboBox呢? |
答題得分者是:China Join
|
b8201056
一般會員 發表:11 回覆:7 積分:3 註冊:2002-11-28 發送簡訊給我 |
|
jessechan
版主 發表:109 回覆:394 積分:254 註冊:2002-04-05 發送簡訊給我 |
可以建立一個繼承自 TComboBox 的元件, class TMyCombo : public TComboBox
{
private:
void __fastcall OnMouseWheel(TMessage &Message);
public:
BEGIN_MESSAGE_MAP
VCL_MESSAGE_HANDLER(WM_MOUSEWHEEL,TMessage,OnMouseWheel);
END_MESSAGE_MAP(TComboBox);
__fastcall TMyCombo(TComponent* Owner);
}; 在 OnMouseWheel 中不作任何事就可以了.
TMyCombo * MyCombo[3];
//---------------------------------------------------------------------------
__fastcall TMyCombo::TMyCombo(TComponent* Owner)
: TComboBox(Owner)
{ }
//---------------------------------------------------------------------------
void __fastcall TMyCombo::OnMouseWheel(TMessage &Message)
{
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
int nI,nJ;
for (nI = 0;nI < 3;nI++)
{
MyCombo[nI] = new TMyCombo(this);
MyCombo[nI]->Parent = this;
for (nJ = 0;nJ < 5;nJ++)
MyCombo[nI]->Items->Add(nJ);
MyCombo[nI]->ItemIndex = 0;
MyCombo[nI]->Left = 30;
MyCombo[nI]->Top = 30 + nI * 50;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
int nI;
for (nI = 0;nI < 3;nI++)
delete MyCombo[nI];
}
//--------------------------------------------------------------------------- Jesse Chan
------
Jesse Chan |
China Join
中階會員 發表:81 回覆:242 積分:89 註冊:2003-03-12 發送簡訊給我 |
如果簡單一點可以直接把滾輪事件拿掉作法如下: 在 .h 檔先宣告 void __fastcall TForm1::MyWindowProc(TMessage &Message); 以下為原始程式碼: //--------------------------------------------------------------------------- #include <vcl.h>
#pragma hdrstop #include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
TWndMethod ComboBox_WindowProc; //---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
ComboBox_WindowProc=ComboBox1->WindowProc;
ComboBox1->WindowProc=MyWindowProc;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::MyWindowProc(TMessage &Message)
{ if (Message.Msg==WM_MOUSEWHEEL) //WM_LBUTTONDOWN,WM_MOUSEMOVE,WM_NCLBUTTONDOWN
{
return;
} // 呼叫-原始訊息處理程序
ComboBox_WindowProc(Message);
}
|
b8201056
一般會員 發表:11 回覆:7 積分:3 註冊:2002-11-28 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |