ページ 11

&の意味

Posted: 2010年2月21日(日) 22:28
by Stanry
C++言語を始めて基礎が終わったくらいの初心者です。
現在Win32のキーボードフックのプログラムを作っておりまして、SetWindowsHookEx関数を使いキーフックまでは出来たのですが、キー入力時にlParamに送られてくるデータから押上や押下の取得の方法がわからず、探してようやく見つけたのが↓のif文でした。しかし、if文中の&の意味を調べてもポインタなどの資料ばかり出てきて見つからなかったので質問させていただきます。
if((lParam&0xc0000000)!=0){
//WM_KEYDOWNと同じ
}
上のような&の時の意味はなんでしょうか。



//キー入力時にデータが送られてくるCALLBACK関数
LRESULT CALLBACK MyHookProc(int nCode, WPARAM wp, LPARAM lp)
{
if (nCode < 0 ){
return CallNextHookEx(hMyHook, nCode, wp, lp);
}
if (wp >= VK_XBUTTON2){
if((lp&0xc0000000)==0){
//WM_KEYDOWNと同じ
}
return CallNextHookEx(hMyHook, nCode, wp, lp);
} else{
return CallNextHookEx(hMyHook, nCode, wp, lp);
}
return TRUE;
} 画像

Re:無題

Posted: 2010年2月21日(日) 22:30
by Stanry
申し訳ありません。タイトルが消えてしまっていたようです。

※修正しました 画像

Re:無題

Posted: 2010年2月21日(日) 22:33
by sizuma
論理積ですね。
これで検索すれば詳しく説明してるサイトが出てきますよ。



一応ぺたっと。
Wikipediaより引用です

C言語やPerlなどでは、ビット単位の論理積は「&」 で表され、

z = x & y;
$z = $x & $y;

のように使用される。

単なる論理積は「&&」で表され

if (x==0 && y==0)

のように使用される。 画像

Re:無題

Posted: 2010年2月21日(日) 22:39
by Stanry
sizumaさん、ありがとうございます。
&&はよく使っていたのですが&も同じようなものだったのですね。。。勉強になりました。
変な質問をしてしまいスミマセンでした。。

Re:無題

Posted: 2010年2月21日(日) 22:58
by Stanry
調べたところ普通にlParam * 0xc0000000 = 0x0 になったらWM_KEYDOWNってことで実装してあるんですね。
勉強になりました。