最近VCを勉強しようと思いまして、
そこで、身近なゲームのツールを作りながら
勉強を進めようと考えました。
最初という事で、
全画面に表示されるゲーム画面上の
2点をクリックし、そこに線を表示するというもの
を作ろうと考えているのですが、
どうもウィンドウ上でしか座標が取得できません。
そこで、ウィンドウを透明化したら取得できると考えたのですが、
その透明化がうまくできません。
VC6での標準SDIアプリケーションです。
どうかウィンドウを透明化する方法を教えてもらえないでしょうか。
よろしくお願いします。
自ウィンドウを線の形にし、それを対象ウィンドウに重ねると言う
実現方法をお考えですか? で、線以外の部分を透明化したいと。
この場合は、リージョンを使って、自ウィンドウの形を引いた線の形に
してしまえばいいでしょう。リージョンの計算が面倒くさそうですが。
リージョンの基礎は、google で「リージョン ウィンドウ」などを
キーワードに探してみてください。
いきなり線形ウィンドウを作るサンプルは無いでしょうが、基礎ができれば
あとは計算次第でどうにかなります。
シャノンさんありがとうございます。
さっそくリージョンという方法を検索してみました。
ウインドウの形を自由に変えられるとか。
確かにこの方法ならウインドウの無い状態にできるようですね。
ですが、これを実現する前に
ゲームの画面上でクリックした位置を取得するというのも
やはりその方法がわかりません。。。
それさえできればリージョンを使用して描画できると思うのですが。
質問の内容が変わってしまったのですが、
どうかよろしくお願いします。
他のウィンドウ上でクリックしたことを検出するというのは大変難しいです。
システムフックという技術を使わなければなりません。
さらに、アキさんのおっしゃる「全画面」というのが、ウィンドウを最大化した状態のことならまだ楽かもしれませんが、DirectX を使ったフルスクリーン表示だと、システムフックを使っても無理だと思います。
俺は DirectX には疎いので、そっち方面に詳しい方、フォローお願いいたします。
シャノンさんありがとうございます。
自分でもDirectXについて少し勉強してみたのですが、
なんとなくですけど、
私が作ろうとしているゲーム上では、
システムフックが使えるような気がしたので、
そちらを使ってやってみようと思います。
それで無理だったらとりあえずあきらめます。
という事でタイトルの内容に関しては、
情報が得られたと思うので、
解決としたいと思います。
ありがとうございました。
解決になっていませんでしたので^^;
GetWindowRectとScreenToClientの組み合わせでうまくいきませんか?
ツイート | ![]() |