• ベストアンサー

MFCにあるものは、JAVAにありますか?

こんにちは。自分は今、学生でMFCでちょっとしたソフトを開発しているのですが、少し思ったことがあるので質問させていただきます。 単刀直入に言いますと、今MFCでオンラインゲームのBOTを作ろうとしています(決してオンラインゲームのためでなく、あくまでプログラムを組むことが一番の目的です)。それで、MFCではゲームのウィンドウハンドルを取って画像処理という風にプログラムを組めると思いますが、JAVAでもウィンドウハンドルを取るようなプログラムを作れるのでしょうか? JAVAではJavaアプレットのようなアプリケーションでゲームなどを作れるとはちょっとだけ知っていますが、MFCとJAVAの本質的な違いがまだよくわかりません。。。 でも、JAVAの言語をちょっとだけ触れる機会があり、自動ガーベージコレクションなど魅力的だったので、JAVAはどうなのかなぁと思い質問させてもらいました。 初心者なのですが、よろしくお願いします!!

  • Java
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • MASA_H
  • ベストアンサー率42% (64/151)
回答No.2

質問文を見るとおそらく他のアプリが作ったウィンドウハンドルを取得してそのウィンドウの処理に割り込むといったことがしたいようですね。 結論から言うとJavaのみでは無理です。というよりやらない方が良いです。 JNI(Java Native Interface)をフルに使い倒すとかすれば出来るでしょうが、そうするとJavaではなくCないしC++で組む量の方が多いということになりかねません。 ウィンドウハンドルを扱うのはWin32 APIです。MFCはそれのラッパなのでMFCでも扱えます。しかしJavaでは直接Win32 APIをたたく方法がありません。よってJNIを用いて専用のDLLを作りそれを介して叩きます。すでにあるDLLを使う場合も同様ですJNIでラッパーDLLを作って使います。 とここまで書きましたがSWTがWin32 APIの一部というより大部分をすでにラップ済みなのでよほど特殊なことを使用としなければJNIに触らなくとも書けます。といってもJNIと無関係というわけではなくSWTは内部でJNIを使っています。

taira352
質問者

お礼

ご回答ありがとうございました!! どうやら、直接ウィンドウハンドルを取ることは出来ないようですね。。。と、考えると、まずMFCで一度簡単にでも作ってみたいと思います。それからMASA_Hさんの言うJNIを少し調べてみたいと思います。 ありがとうございました!!!

その他の回答 (1)

noname#94983
noname#94983
回答No.1

基本的に、Javaでもウインドウによるグラフィカルなプログラムは作れる。ただし、アプローチはかなり異なる。 ウィンドウハンドルを取得し、グラフィックコンテキストを操作して描画をする、という処理は、基本的に同じ。ただし、MFCでは、それらを関数で行ったり、多くの場合、APIに用意されているものをコールする形になったりする。すべてネイティブ環境に組み込まれたものをむき出しで使っているような感覚になると思う。 Javaでは、そうした「OSに用意されているむき出しのAPIをコールする」という感覚はまったくない。Javaでは、すべてがクラスとしてきれいにラップされており、ウインドウハンドルだのグラフィックコンテキストだのAPIコールだのといったものは一切登場しない。また、C++のように、クラスのインスタンスをポインタとして扱うようなことはないし、そもそもJavaではメモリ操作が一切できないから、C++的なオブジェクトの扱いとはまったく違った感覚のものになる。 ただ、MFCにしろJavaにしろ、GUIの基本を「あらかじめライブラリとして用意されているクラスをインスタンス化して操作する」という形になるのは同じ。だから、ある程度、文法の違いがわかってくれば、すんなり移ることは可能かもしれない。少なくとも、「Javaを覚えた人間がMFC/C++に移る」よりは、「MFC/C++からJavaに移る」ほうが簡単だろう。

taira352
質問者

お礼

ご回答ありがとうございました!! OSに依存しないJAVAの性質が触りだけでも理解できました!ありがとうございました!

関連するQ&A

  • Javaのアプリケーションでの円の描画について。

    Javaのアプリケーションでの円の描画について。 EcipseでJavaプログラムを書いています。 まだ始めたばかりでわからないことだらけなんですが、JavaにはJavaアプリケーションとJavaアプレットの2種類の書き方(?)があることを知りました。 作りたいものに向かってJavaアプリケーションの書き方で最初から書いていたんですが、円を表示させるプログラムのところで引っかかりました。 Javaアプリケーションの書き方では円の描画方法は見つからなかったのです。 Javaアプレットの書き方では見つかりました。 ということは1からJavaアプレットの書き方で作り直さなくてはいけないでしょうか? ここまで出来たのは結構長いプログラムなのですが・・・。 どうかアドバイスお願いします。

    • ベストアンサー
    • Java
  • JAVA2 Platform Standardって何者?

    当方JAVAは全然詳しくないのですが、最近ネット上のフリーソフトで「JAVA2 Platform Standardをインストールしてください」といったものを見かけるようになりました。 Windowsの場合、オンラインソフトといえば、VC、VB、Delphiといった言語で開発されているものと決めつけていました。JAVAといえば「ネットワークプログラミング言語」という認識だったのですが、この「JAVA2 Platform Standard」というのは.NET Frameworksみたいなものでしょうか? つまりこれをインストールした環境でなら、OSの違いを超えてJAVAアプリケーションが実行できるということですか? また「JAVAアプレット」という用語も昔から耳にするのですが、これはネットワーク上のプログラムを区別して「アプレット」と呼んで、ローカル上のプログラム「アプリケーション」と言い分けてるのでしょうか? どうも自分の認識に自信がないのですが……詳しい方、ぜひうんちくを聞かせてください。

    • ベストアンサー
    • Java
  • JAVAアプレットの仕組みについて

    HTMLに埋め込まれたJAVAアプレットが画像を表示するように記述されている場合、JAVAアプレットは画像をサーバーからダウンロードして表示しているんですよね? JAVAアプレットがサーバーからファイルをダウンロードできるように、 JAVAアプレットがサーバー上にファイルを作り出すこともできるのですか? 今、計算プログラムをダウンロードで配布して、実行して得られた計算結果を投稿してもらう仕組みを作っているのですが、 JAVAアプレットにサーバー上のファイルを操作する能力があるのなら、JAVAアプレットを読み込み実行するだけで配布と投稿の作業が一まとめにできてしまうと思いました。 JAVAアプレットはサーバー上のファイルをどこまで操作できるのでしょうか?

    • ベストアンサー
    • Java
  • Java (ジャバ)

    Java とは、使っているパソコンの機種に依存しないプログラム言語のこと。 ネットで扱われているJavaは、大きく分けてJavaスクリプトとJavaアプレットの2種類。 script・・・手書き、筆記、台本、原稿 applet・・・別のアプリケーションを動かしているときに呼び出せる小さなアプリケーションプログラム なのだそうですがよくわかりません。 素人でもわかる説明となるとどうなるでしょうか? お願いします。

  • Javaでこんなことは出来る?

    Javaを使ってあるプログラムを開発したいのですが、気になることがあります。 イ:携帯電話のボタンで操作して発言を書き込むプログラムを作りたいのですが、Javaアプレットでそのようなことは可能でしょうか? ロ:JavaアプリではなくBREWアプリのみ対応の携帯電話でも出来れば使えるようにしたいのですが、大丈夫でしょうか? ハ:Javaでダメな場合、ほかにいいプログラム方法はありますか?

  • JAVAアプレットが動かない

    JAVAの勉強がてら「JAVAアプレット入門」という本をかって勉強をはじめようとおもったのですが、サンプルCDについているJAVAアプレットのサンプルプログラムが全く動きません。 そのまま使っているので動かないはずないと思うのですがうごきません。 そこで、不意に思ったのですが、ひょっとして現在ではJAVAアプレットは過去の技術でドノブラウザもサポートしていないということはありますか? iOSやアンドロイドでは、つかえない(フラッシュと同じような扱いを受けている)という認識があるもので・・・ アプレットという技術は現在もいきているのでしょうか?おとなしくJAVAスクリプトにきりかえたほうがよいでしょうか?

    • ベストアンサー
    • Java
  • Javaアプレットについて

    今、Javaを勉強中なのですが、Javaアプレットとは下記の様なブラウザ上で起動するもののことをいうんでしょうか? http://www.typing.sakura.ne.jp/sushida/ これはJavaアプレットに入るのでしょうか? また、CabosやiTunesはJavaアプレット?? 電化製品店で売ってるようなIEを経由しないタイピングソフト等はJavaアプレットではないですよね?

  • JAVAアプレットの商用利用について

    初めまして、質問させて頂きたいのですが JAVAを使って自分で制作したJAVAアプレットで 1枚の画像を色々と変形させました その変形させた画像を1枚1枚キャプチャーしてアニメーションにして それをそのままゲーム製作に使っているのですが そのゲームを販売する事は可能でしょうか? 要するに、途中で画像をアニメーションさせるために 手で編集するのが面倒だったので、JAVAアプレットを使用したのですが JAVAのライセンス問題に詳しい方いましたらご返送ください、よろしくお願いします

    • ベストアンサー
    • Java
  • java plug-in警告

    先ほど「java」というワードの入ったアプリケーションをアンインストールして、javaのサイトで新しくインストールしたのですが、javaがうまく動作しません。 例えばYahoo!のゲームを開こうとすると、 『java plug-in警告  このHTMLページのアプレットでは、現在ブラウザで使用されているものとは異なるバージョンのjavaが必要です。アプレットをこのHTMLページで実行するには、新しいブラウザセッションが必要です。Netscapeブラウザセッションをすべて閉じ、新しいブラウザセッションでHTMLページを実行してください。』 と表示され、「はい」を選択するとウインドウには 「JAVA Plug-inがJRE衝突を検出しました。」と表示され、新しいウインドウが出ます。 新しいウインドウにはゲームの部屋が表示されるのですが、 「ユーザーIDの認証に失敗したためYahoo!ゲームにログインできません。」と表示されゲームをすることはできません。 javaを使ったチャットでも入室などは出来るものの、同じような(警告が出て、「はい」を選択すると新しいウインドウが出る)現象が起きます。 これはどうすれば改善できるでしょうか? OSはWindowsXPで、アンインストールしたものの名称は忘れてしまったのですが、「java」というワードの入ったものを2つアンインストールしました。 Java Plug-inの問題なのかなとは思うのですがどうすればいいのかわかりません。 何かアドバイスお願いします。

    • ベストアンサー
    • Java
  • jAVAダウンロード!?

    ヤフーゲームのゲームを選択したのに Yahoo!ゲームのJavaアプレットを起動中。少しお待ち下さい。 が,出て15分くらいしても そのまんまです たぶんJavaをダウンロードするんだと思うんですが どうやってダウンロードすればよいのでしょうか? ちなみに使っているOSはウィンドーズ95です

専門家に質問してみよう