DOBON.NET DOBON.NETプログラミング掲示板過去ログ

WebBrowserのマウスイベント

環境/言語:[XP C# .Net2.0]
分類:[.NET]

前回はお世話になりました。お蔭様で上手くいきました-w-

今回は、WebBrowserのマウスイベントに関してですが、
標準では、WebBrowserにはまったくマウスイベントの類が見当たらない
ので、ネットで調べてサンプルとなるコードは見つかったのですが、
上手く動きませんでした。。

http://homepage1.nifty.com/yasunari/VB/VB2005/WebBrowserWM_APPCOMMAND.htm
↑のページで紹介されているコードを、

http://labs.developerfusion.co.uk/convert/vb-to-csharp.aspx
のページにてC#に変換してみたのですが、上手く変換出来ないのか、
ビルドエラーが出ています。。


public ExWebBrowser() : base() { }

//WinUser.h
public enum APPCOMMAND
{
BROWSER_BACKWARD = 1,
BROWSER_FORWARD = 2
}

private short GET_APPCOMMAND_LPARAM(IntPtr lParam)
{
const UInt16 FAPPCOMMAND_MASK = 61440;

  //※ここでビルドエラーが発生
  //※演算子 '!' を 'ushort' 型のオペランドに適用することはできません。
return (short)(((int)lParam & -65536) >> 16) & (!FAPPCOMMAND_MASK);
}

protected override void WndProc(ref System.Windows.Forms.Message m)
{
const int WM_APPCOMMAND = 793;
if (m.Msg == WM_APPCOMMAND)
{
switch (GET_APPCOMMAND_LPARAM(m.LParam))
{
case (int)APPCOMMAND.BROWSER_BACKWARD:this.GoBack();return;
case (int)APPCOMMAND.BROWSER_FORWARD:this.GoForward();return;
}
}
base.WndProc(ref m);
}

この一文ですが、どう直せばいいのか、分かりません、、
return (short)(((int)lParam & -65536) >> 16) & (!FAPPCOMMAND_MASK);

分かる方いらっしゃいましたら、ご教授ください。

宜しくお願いします。
■No20539に返信(日曜大工さん さんの記事)

> この一文ですが、どう直せばいいのか、分かりません、、
> return (short)(((int)lParam & -65536) >> 16) & (!FAPPCOMMAND_MASK);


おそらく、!を~に変えてやればいいのかと・・・

return (short)(((int)lParam & -65536) >> 16) & (~FAPPCOMMAND_MASK);
やってみたのですが、intからshortへの型変換エラーが出ました。


■No20540に返信(ps8rXさんの記事)
> ■No20539に返信(日曜大工さん さんの記事)
>
>>この一文ですが、どう直せばいいのか、分かりません、、
>>return (short)(((int)lParam & -65536) >> 16) & (!FAPPCOMMAND_MASK);
>
>
> おそらく、!を~に変えてやればいいのかと・・・
>
> return (short)(((int)lParam & -65536) >> 16) & (~FAPPCOMMAND_MASK);
■No20541に返信(日曜大工さん さんの記事)
> やってみたのですが、intからshortへの型変換エラーが出ました。

コードミスってましたね。。。以下でできると思いますよ。
return (short)((int)lParam & -65536) >> 16) & (~FAPPCOMMAND_MASK));
■No20542に返信(ps8rXさんの記事)

またやっちまった。。。orz

return (short)(((int)lParam & -65536) >> 16) & (~FAPPCOMMAND_MASK));

これで、括弧内の数値をShortにキャストしますです。。。
ありがとー御座いました。
なんとか動きました^^。

まぁ、まだちょっと分からない部分有りますが、
家に帰ってから勉強したいと思います。

ps8rXさん、有難う御座いました。


■No20543に返信(ps8rXさんの記事)
> ■No20542に返信(ps8rXさんの記事)
>
> またやっちまった。。。orz
>
> return (short)(((int)lParam & -65536) >> 16) & (~FAPPCOMMAND_MASK));
>
> これで、括弧内の数値をShortにキャストしますです。。。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板