Win32SDKだけでメールプログラムを作ってきましたが、あまりにも
C++のソース(たいていはMFCだと思う)で書いてあるのが多いので
C++に書き直そうかなぁ・・・と考えていたりするのですが、C++で
Windowプログラムを書くときはやっぱりMFCか.NET Frameworkしか
ないのでしょうか?
そのままは無理だとしてもWin32SDKをそのまま生かした感じで作りたいです。
よろしくお願いします。
Win32 SDKは言語でもなんでもないのですが……。
普通にC++ + Win32 SDKでプログラムを作れますが,何を知りたいのでしょうか。
C++からWin32SDKをそのまま使うことも可能ですし、やったこともあります。
既存のライブラリを持ってこないと今ひとつうまみにかける部分があるのは確かですが、
まずは言語だけC -> C++に移行するだけでも、個人的にはすごーく楽になると思います。
俗にbetter C等と呼ばれるC++の非オブジェクト指向的な使い方でもCよりマシ。
クラス化などすればもっと楽。MFCってのは、結局それを
「MSがある程度クラス化しときました」ってだけのものなので、
中身はSDKのラッパーみたいなものですし。(Win32SDKの知識がないと駆使できない>MFC)
なお、.NET frameworkとなるとまた別物で、純粋な標準C++ベースでは
.NET frameworkで動かないです。
# .NET 1.xの頃は、Managed C++と呼ばれるMS独自拡張C++でしたし、
# .NET 2.0以降は、C++/CLIという「C++とは別の新言語(但しかなり似てる)」になりましたし。
今作っているメールプログラムでC++のクラスをつかったりしたら
もう少しコードがわかりやすくなるのかなぁ・・・と思って
質問してみたのです。
猫でものC++編にはコンソールプログラムしかなくて、Windowの
プログラムはWin32SDK+ノーマルのCで書かれているので
C++で同じような書き方はできないのかなぁ・・・・と
思ったのです。(C++でWindowというとMFCか.NETしか思いつかないので)
とりあえず雛形プログラムの作り方を知りたいです。
→WinMainとWndProcがあってWndProcの中にはWM_CREATEと
WM_DESTROYがあるシンプルなものです。
>→WinMainとWndProcがあってWndProcの中にはWM_CREATEと
>WM_DESTROYがあるシンプルなものです。
これだけだと、あまりC++とC言語との違いは感じられないかと。
ウィンドウをクラスとして(MFCでいうCWndクラス)使うとかであれば、
「WndProc クラス化」
あたりで、Google検索とかしてみればいろんなサンプルが見つかります。
Cの時のコードを,拡張子を.cppにしてコンパイルすれば,
C++のプログラムにおそらくなります。
# キャストとか予約語とかで一部の非互換によるエラーが出る可能性はあり。
発言内容を見てるとC++のことよくわかってなさそうな感じを受けますが…
C++言語の知識に不安があるならそっちから勉強した方が良いです。
文法がわかる事はもちろん必要ですけれど、クラスの概念とか派生、
仮想関数等のオブジェクト指向の部分の知識も必要になります。
で、この辺がわかって無いとMFCを使いこなせません。
なぜならMFCはクラスライブラリだからです。
MFCの作法に則るのであれば、Win32APIのやり方にこだわらない方が良いと
思います。但し、Win32APIでやってきたウインドウメッセージ周りの
ハンドリングとか基本的なメッセージの流れの知識はMFCでも非常に役に立ちます。
最終的にはそこに帰着するので。
この辺はあまりあせらずにきちんと積み上げた方が後々楽が出来ると思います。
Win32APIでやってきたウインドウメッセージ周りのハンドリングが
MFCのフレームワークでどのように実現されているのかを理解できれば、
Win32APIの知識がある分だけ有利になります。
そういう意味では勉強する順番としては良かったのではないかと思います。
学生の頃少し授業でMFCの事はやりましたけれどやっぱりSDKプログラムの方が
直感的な感じがして今でもMFCを使わず作っていたりします。
翔泳社から出ているVC++のプログラムの本(1巻がSDK、2巻がC++、3巻がMFC)の本は
学校の教科書として使ってましたが、もっぱらSDKプログラムで書く事が
多くてこんな感じになってるのかもしれないですね。
やさしいC++第二版(ソフトバンクハプリッシング)を購入してみたのでC++の勉強も
してみて、MFCプログラムにも挑戦してみようかなぁ・・・と思います。
→MFCの本も学校で買ったけれどあんまり使わなかったです
WndProc クラスの方も検索してみて結構いろんなサンプルがある事は確認しました。
まだまだ知識が足りないようで迷惑をかけてしまいすみませんです。
ひとまず解決としてクローズさせて頂きます。
でも、今からMFCを学んでも大丈夫なのでしょうか?
> でも、今からMFCを学んでも大丈夫なのでしょうか?
何を心配しているのかしら?
Document/Viewの概念をCLI/C++とVBまたはC#で実装していくという
やり方を今後しなくてはならなくなると二つの言語を掛け持ち
しなくちゃいけないので結構負担になりそうです。
→ただしC/C++で1からフォーム設計をするのは結構つらいですが。
> えっと@ITのεπιστημηさんのコラム(C/C++の資産を.netになんとか)を
> 見て、今からMFCをやっていたらまずいのかなぁ・・・という感じに
> 思えしまったのです。
まずくはないでしょけどもWin32アプリにこだわる気がないなら
とっととWindowsFormsに寝返ればええです。
> Document/Viewの概念をCLI/C++とVBまたはC#で実装していくという
> やり方を今後しなくてはならなくなると二つの言語を掛け持ち
> しなくちゃいけないので結構負担になりそうです。
全部をC++/CLIでやるのはもっとウザいかもよ?
ツイート | ![]() |