2017-03-31
ウィンドウスタイルの設定で大間違いを犯していたラシイ・・・
カメラのプログラムを見返していて・・・とんだことに気が付きました。
ウィンドウスタイルのフラグ?を設定するについて、盛大な勘違いをしていたっぽいです(汗)
とりあえず、このよーに指定していたわけですが・・・
!WS_VISIBLEとは整数=$10000000 #(初期状態) !WS_CHILDとは整数=$40000000 #(子ウィンドウ) CWスタイルとは整数=WS_VISIBLE+WS_CHILD #キャプチャーウィンドウのスタイル
元ネタのコードを見ていたらね、なんと「+」ではなく「OR」でした!
「和」ではなく「論理和」。日本語で言ったら「または」。
× CWスタイルとは整数=WS_VISIBLE+WS_CHILD ↓ ↓ ↓ ○ CWスタイルとは整数=WS_VISIBLE||WS_CHILD
マニュアルによると「||」が「OR」のコトらしく「(WS_VISIBLE)OR(WS_CHILD)」と同じことです。
またはって言ったら、どっちかってことじゃないんすか><
ちなみに・・・
「WS_VISIBLE+WS_CHILD」と「WS_VISIBLE||WS_CHILD」
答えはどちらも「$50000000」となり、それゆえ特に問題は起こりません。
では、一体何が違うのか。
てゆうかだから、論理和って一体なんなの?!
マニュアル→(ハ)機能の紹介→計算→論理演算のための演算子
https://nadesi.com/doc/reference/syntax/1-7-calc.htm#head4
さらっと「比較式Aが真または比較式Bが真ならば真(=1)を返し、違えば偽(=0)を返します。」なんて言われてもね。
なでしこは、初心者向けかと思いきや、マニュアルは「そのくらいはフツー知ってるよね」くらいの感じでスルーされているので、ワタシのよーにプログラムの基本のキの字も知らない人は、こんな些細なことで、いちいちまごまごしてしまう><
機能→機能/論理演算→あなたは論理演算がわかりますか?(ITPro)
http://itpro.nikkeibp.co.jp/members/ITPro/ITBASIC/20020731/1/
むむむぅ、こんなのが5分で分かる人の頭脳が、むしろ信じられんね(´д`;
さて、5時間くらいかけて(嘘)、なんとなく理解したところによると・・・
とりあえず、まず第一にこの計算は、二進数によってとりおこなわれるってことです。コンピューターなんで!
そして、日本語の「または」にとらわれすぎると、なんだかよく分かんなくなる。
ようするに、どれかいっこでも1だったら、1。
逆に言うと、ぜんぶ0だった場合だけ、0。
したがって、繰り上がらない!!
でっ・・・
「1 OR 4」を、二進数にし、このルールに則って縦計すると、
0000 0001 OR 0000 0100 ------------- 0000 0101
8ビットにすれとかなんとか書いてたから、いちおうそのように。
答えは5で、一見足し算の結果と同じみたいだけど、足し算と違うのは、「1 OR 1=1」だってこと。
「1+4+1」の答えは6ですが、「1 OR 4 OR 1」の答えは、5です。
0000 0001 0000 0100 OR 0000 0001 ------------- 0000 0101
この効用は、アレですかねー。
もしか間違えて、フラグを「WS_CHILD||WS_VISIBLE||WS_CHILD」みたいに重複して設定してしまっても無視されて、あらぬ値が設定されて大変大変!とゆう事件にならない的な?
いやたぶん、もっと他にも深遠な意味があるんだろうけど。
ああぁ、AnimateWindowのアニメーションの種類なんかも、みんなそうだったんだ・・・
明日になったら、またなんだかよく分からなくなってるかもしんないので(えっ;)、このように書き残しておく。
そしてまた、もしかしてもしかしたら、おんなじようにまごまごする人がいないとも限らないので、恥も外聞も無く、発表しておく><