お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル

"RE:インテリマウスに対応する"

この発言は
#00214 折井 哲 さんのインテリマウスに対応する
に対するコメントです

 #214のコードではWin95&NT3.51でしか動きませんでした。MES11にて SatobeさんからNT4対策等をご指導頂きましたのでこちらにまとめて 完全版を掲載します。 ●#214の間違い ・TMsg.lParam マウスポインターの位置 xPos = LOWORD(lParam); yPos = HIWORD(lParam); ・TMsg.Result スクロールした行数。 ・MSDNに入ってなくても以下のURLで英文資料とCのヘッダを入手可能。 <http://www.microsoft.com/japan/hardware/DevSite/IntMouse/> ●NT4の場合の違い ・TMsg.Msg WM_MOUSEWHEEL = $020A という定数 ・TMsg.wParam fwKeys = LOWORD(wParam); zDelta = (short)HIWORD(wParam); fwKeys は SHIFT/CTRL/LBUTTON/MBUTTON/RBUTTON のステータス  てな訳で#214のWndProc関数を以下のようにして下さい。 ---------------------------------------------------------------- procedure TForm1.WndProc(var Msg: TMessage); type TWordRec = packed record Low, High: Smallint; end; const WM_MOUSEWHEEL = $020A; var IntelliParam: Integer; begin if (Msg.Msg= MSWHEEL_ROLLMSG)or (Msg.Msg= WM_MOUSEWHEEL) then begin Msg.Result:= 0; if Msg.Msg = WM_MOUSEWHEEL then IntelliParam := TWordRec(Msg.wParam).High else IntelliParam := TWordRec(Msg.wParam).Low; with StringGrid1 do begin if IntelliParam= 120 then begin if TopRow> 4 then begin TopRow:= TopRow-4; Msg.Result:= -4; end else begin Msg.Result:= 1- TopRow; TopRow:= 1; end; end else if IntelliParam= -120 then begin if TopRow< RowCount-4 then begin TopRow:= TopRow+4; Msg.Result:= 4; end else begin Msg.Result:= RowCount- TopRow- 1; TopRow:= RowCount-1; end; end; end; end else inherited WndProc(Msg); end; ----------------------------------------------------------------                             折井 哲                             VZX00324 Original document by 折井 哲 氏 ID:(VZX00324)



ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。

Copyright 1996-2002 Delphi Users' Forum