2023年8
月7
日凌晨晚上想到實現橫向滾動是否可以通過右鍵
+滾輪來實現,首先是想通過
onscroll
事件的監控,但是怎麼都沒法監控到
onscroll
事件,後來發現需要鏈結到
htmlwindowevents2
事件中,監控
htmlwindowevents2
中的onscroll
事件,沒辦法,在
dodocument***plete
中加入了鏈結到
htmlwindowevents2
中的**。
但是這樣有乙個問題,首先是這個
onscroll
事件是在滾動之後才發生的!其次是沒法在事件發生時知道是向上還是向下滾動!
後來決定監控
onmousewheel
事件,但是不知道這個事件的
id,只知道這個在
vc中的定義是
dispid_onmousewheel
,但是網上找不到這個常量的值是多少,發寶氣了,找了乙個
platform sdk
裝了一把,不錯,這個裡面有
dispid_onmousewheel
的常量定義:
#define dispid_normal_first1000
#define dispid_onmousewheel(dispid_normal_first + 33)
就是說onmousewheel
事件的id
是1033
,這樣就簡單了,根據
msdn
中對onmousewheel
的說明建立乙個
onmousewheel
事件的處理函式:
procedure docmousewheel(const pevtobj: ihtmleventobj);
現在還有乙個問題,在
pevtobj
中沒法知道滾輪是向上還是向下,又在
msdn
中看了一下,得知
onmousewheel
事件的引數
pevtobj
實現了ihtmleventobj4
介面,而這個介面的
wheeldelta
可以得知滾動的方向和距離。
但是問題又來了,
mshtml.pas
中沒有ihtmleventobj4
介面的定義,沒辦法,從
platform sdk
中提供的
mshtml.idl
編譯成mshtml.tlb
,然後引入吧。但是
mshtml.idl
怎麼都沒法編譯,找到網上各種辦法都不行,後來開啟
vb開了一下系統中的
mshtml.tlb
,nnd
,居然包含
ihtmleventobj4
介面定義,沒說的,引入這個
tlb吧,又有問題了,不知道怎麼的,引入生成的
mshtml_tlb.pas
怎麼都沒辦法在工程中編譯,只好將
ihtmleventobj4
以及ihtmleventobj4disp
介面的定義拷貝到
mshtml.pas
中間,然後編寫
onmousewheel
方法:procedure tmyiehelper.docmousewheel(const pevtobj: ihtmleventobj);
varmousedata : ihtmleventobj4;
begin
if(pevtobj.button = 2) then
begin
pevtobj.queryinte***ce(ihtmleventobj4, mousedata);
if(assigned(mousedata)) then
begin
beginrscroll := true;
if(mousedata.wheeldelta > 0) then
(ie.document as ihtmldocument2).parentwindow.scrollby(-20, 0)
else
(ie.document as ihtmldocument2).parentwindow.scrollby(20, 0);
end;
pevtobj.returnvalue := false;
pevtobj.cancelbubble := true;
end;
end;
成功!!
rails 開發隨手記 7
jquery 1.9 中如何修改選擇項 select option contains teacher5 prop selected selected 效果 將包含了teacher5的選項選中。prop和attr的區別在於前者是特性,是對應dom元素做具有的,後者是屬性,是寫在html中的。在早些版本...
8月7日小結
新的一周開始,開始複習圖論的知識,上學期學習的時候,圖論知識學的很淺,做起來比較吃力,做的題目除了最小生成樹,就是求最短路徑,對dijkstra的演算法運用還不熟練,做dijkstra的變形題,思路比較亂,還需要好好理解floyed和dijkstra演算法,需要多看看大神的 多熟悉dijkstra演...
咖啡日誌 7月1 7月8號
經過上週的工作學習,近日來感覺對一些基礎知識還需要鞏固一下,故此羅列下表 為下週的工作計畫 1,xhtml需要仔細的閱讀並掌握之.2,ant程式構建工具需要再次閱讀並理解,以實際應用為準.3,junit單元測試框架需要再次閱讀,並理解應用其核心設計模式,以實際應用為主 4,閱讀重構 改善現有 設計 ...