Win32APIと.NETの質問

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
神族
記事: 38
登録日時: 7年前
住所: 日本
連絡を取る:

Win32APIと.NETの質問

#1

投稿記事 by 神族 » 7年前

Win32APIと.NET一緒に使ってアプリ作れる事できるんですか?誰か教えてプリーズ!

*追記:たとえばCreateWindowの中にSystem::Windows::Forms::Buttonを入れたいんですけど
最後に編集したユーザー 神族 on 2012年12月02日(日) 12:22 [ 編集 1 回目 ]

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 9年前
住所: 東海地方
連絡を取る:

Re: Win32APIと.NETの質問

#2

投稿記事 by softya(ソフト屋) » 7年前

どう一緒に使うか条件が書いてないので困りますが、出来る出来ないかで言えば出来ると答えるしか無いでしょう。
もっと具体的なことを聞いてもらうと答えやすいです。
C#からWin32APIを使う方法を知りたいとかですね。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

オカピーα
記事: 120
登録日時: 8年前

Re: Win32APIと.NETの質問

#3

投稿記事 by オカピーα » 7年前

神族 さんが書きました: *追記:たとえばCreateWindowの中にSystem::Windows::Forms::Buttonを入れたいんですけど
CreateWindowはWin32APIの関数ですか?それとも自作のウィンドウ作成用関数ですか?
とりあえず後者として話を進めると、神族さんのやりたいことは出来ないと思います。
捉え方によると思うのですが、この文面だと「C言語(Win32API)でC#を使う」というふうに受け取れます。
C言語ではC#は実行できません。しかし、C#からC言語(WIn32API)を使うことは出来るようです。
色々な意味でC言語は不遇の言語です。
C,C++,C#,これらを極めることを「3C政策」と言う

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 9年前
住所: 東海地方
連絡を取る:

Re: Win32APIと.NETの質問

#4

投稿記事 by softya(ソフト屋) » 7年前

追記を見逃していたようです。
過去の内容に追記しても更新メールが届いたりトピックが上に上がるわけではないので返信の形で書いてもらわないと伝わりませんのでお願いします。

>*追記:たとえばCreateWindowの中にSystem::Windows::Forms::Buttonを入れたいんですけど

.NetFrameWorkはフレームワークなので部分的に使うことは不整合を起こします。
なので、環境以前に主をWindowsAPIにして従を.NetFrameWorkにすることは困難です。
これは、.NetFrameWorkを利用できるC#であろうとVB.NETであろうと変わりません。

さて、純粋なC言語から.NetFrameWorkを利用できる環境は今のところ存在しません。
代わりに.NetFrameWorkのC++版であるC++/CLIでCLRフォームアプリのプロジェクトを使えば.NetFrameWorkのフレームワーク記述にC言語的な物を混ぜることは可能ですが、先程も書いた通り主従を逆にすることは出来ません。
それとC++/CLIのCLRフォームに関してはVisualStudio2012から新規に作ることは見た目上はできなくなっていますので、将来性としてマイクロソフト自体がフェードアウトを狙っているようです。
.NetFrameWorkのGUIは、C#かVBで組んでくれという意向だと思います。それに逆らうのは得策と思えませんので、何か別の方法を検討されたほうが良いと思います。
オカピーα さんが書きました:色々な意味でC言語は不遇の言語です。
言語のコンセプトの問題ですからC言語が悪いわけではありません。
まぁ、私も過去の資産を気にせず素早くGUIを組みたいのならC#を使うでしょうから適材適所であり何でもC言語で組むのは間違った選択だと思います。
C言語でもGTK+を使えばWin32APIを直接使うよりもGUIが楽に組めます。つまり、面倒なものであるWin32APIを使う必然はないです。
更にC++ならQtなどいろいろな選択肢がありますので、環境とやりたい事のために言語を選ぶのはプログラマーとして必要なことです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

YuO
記事: 941
登録日時: 9年前
住所: 東京都世田谷区

Re: Win32APIと.NETの質問

#5

投稿記事 by YuO » 7年前

System::Windows::Forms::ButtonはComVisible属性がついていて,引数がtrueとなっていますから,COM扱いで呼び出せるはずです。
茨の道であることがわかっているので,テストコードを書く気にもなっていないのですが……。
Visual Basic for ApplicationsやVisual Basic 6などから.NET Frameworkのクラスを使うには,というような質問に対して使えるという回答がついているのを見るので,可能だとは思います。

神族
記事: 38
登録日時: 7年前
住所: 日本
連絡を取る:

Re: Win32APIと.NETの質問

#6

投稿記事 by 神族 » 7年前

softya(ソフト屋) さんが書きました:追記を見逃していたようです。
過去の内容に追記しても更新メールが届いたりトピックが上に上がるわけではないので返信の形で書いてもらわないと伝わりませんのでお願いします。

>*追記:たとえばCreateWindowの中にSystem::Windows::Forms::Buttonを入れたいんですけど

.NetFrameWorkはフレームワークなので部分的に使うことは不整合を起こします。
なので、環境以前に主をWindowsAPIにして従を.NetFrameWorkにすることは困難です。
これは、.NetFrameWorkを利用できるC#であろうとVB.NETであろうと変わりません。

さて、純粋なC言語から.NetFrameWorkを利用できる環境は今のところ存在しません。
代わりに.NetFrameWorkのC++版であるC++/CLIでCLRフォームアプリのプロジェクトを使えば.NetFrameWorkのフレームワーク記述にC言語的な物を混ぜることは可能ですが、先程も書いた通り主従を逆にすることは出来ません。
それとC++/CLIのCLRフォームに関してはVisualStudio2012から新規に作ることは見た目上はできなくなっていますので、将来性としてマイクロソフト自体がフェードアウトを狙っているようです。
.NetFrameWorkのGUIは、C#かVBで組んでくれという意向だと思います。それに逆らうのは得策と思えませんので、何か別の方法を検討されたほうが良いと思います。
オカピーα さんが書きました:色々な意味でC言語は不遇の言語です。
言語のコンセプトの問題ですからC言語が悪いわけではありません。
まぁ、私も過去の資産を気にせず素早くGUIを組みたいのならC#を使うでしょうから適材適所であり何でもC言語で組むのは間違った選択だと思います。
C言語でもGTK+を使えばWin32APIを直接使うよりもGUIが楽に組めます。つまり、面倒なものであるWin32APIを使う必然はないです。
更にC++ならQtなどいろいろな選択肢がありますので、環境とやりたい事のために言語を選ぶのはプログラマーとして必要なことです。

閉鎖

“C言語何でも質問掲示板” へ戻る