トップページ⇒tech
54コメント20KB

【入門後】C言語WINアプリまでの道のり

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
高橋麻奈さんの本で0から、配列、ポインタ、構造体まで理解できました。
しかし次の段階に移るために何をしたらいいのか分からないのです。
書籍の紹介であってもかまいません。
GUI開発の糸口を見つけたいので、お力を貸していただけたら幸いです。

環境は
WINXP VC++6.0です。
よろしくおねがいします。
0002最凶VB厨房NGNG
VBに移行する。
0003デフォルトの名無しさんNGNG
くだらん。猫プロでも読め。
0004デフォルトの名無しさんNGNG
とりあえず
http://www.kumei.ne.jp/c_lang/index.html
0005デフォルトの名無しさんNGNG
>>1
BCBを買う
0006manko_chinko ◆btr76hqMa6 NGNG
>>1
道は一つ。SDKだ。
0007デフォルトの名無しさんNGNG
VCではGUIは難しい。
IntelのCを買え。
0008デフォルトの名無しさんNGNG
次の段階はC++だ。
と、言うのは半分冗談で、まず、dllの使い方を覚える事だな。
そうすれば、公開されているdllが使えるようになるから自分のアプリに組み込む事が出来る。
で、つぎにいよいよ窓を表示ね。この表示の仕方はまぁ、あれだ、SDKでもMFCでも好きな方といいたいが
俺はMFCの方がいいと思う。なぜかというと・・・・楽。本当に楽。
「その意見、まった〜」と声が聞こえてきそうだが、そうMFCを勉強するにはC++の知識が必要なのだ。
でも、尻込みすることなど無い。ない、ない。ないのだ。クラスの継承と仮想関数の概念あたりちょちょいと勉強すれば
ある程度は使えるようになるから。安心。
で、書籍の選び方なのだがそれぞれの関連スレの>>2〜5あたりに紹介されているから
それらを参考にするのがいいかも。では、健闘を祈る。

と、マジレスしてみたり。暇なんだなこれが。
0009デフォルトの名無しさんNGNG
>>1
貴女がSDKとかMFCとかマスターする頃には次期Windowsが出ていて
Win32APIやMFCなんか時代遅れになってしまっている。
C#の勉強を開始した方が良い。
VC#があればいきなりGUIに取り掛かれる。
0010デフォルトの名無しさんNGNG
C#をマスターする頃には.NETなんか時代遅れになって(ry
0011デフォルトの名無しさんNGNG
>>10
マジレスすると、
WinFX⊃.NET
なので無問題。
0012デフォルトの名無しさんNGNG
時代遅れになるとしてもそれはかなり先の話だろ?
そもそも次期Windowsが出た≠皆がそれを使う だよ。
次期Windowsが出て(2005年以降)から.NETがデファクトスタンダードに
なるまでどのぐらいかかると思う?しかもWindows自体2000→XPと来て
だいぶ枯れてきてるから、安定性を根拠に次期Windowsを求める
人は少ないぞ?

以上の理由から今.NETを始めるのはちょっと次期が早いと思われ。
そもそも作ったプログラムを別のPCで(クライアントサイドで)動かすときに
巨大なランタイムが必要になる時点で*論外*。
そして>>1は別にサーバーサイドアプリケーションを作ろうとしているわけ
じゃないでしょ?
.NETやWinFXはJavaに対抗するために開発されたFrameworkですよ?
その辺を勘違いしてないですか?
0013デフォルトの名無しさんNGNG
VC6が有るのならVC6がいいよ。
VC7が有る今でも、VC6を使う人は多い。
professional以上ならMFCでもSDKでもいいけど、
そうでないなら、SDKが良いと思う。
0014デフォルトの名無しさんNGNG
>>12
10年前に同じことを聞いた気が。
.NETとWin32sが重なるな。
0015デフォルトの名無しさんNGNG
>14
APIが変わるわけじゃあるまい?
001612NGNG
10年前は消防だったのでその辺のことを言われても分からん
0017デフォルトの名無しさんNGNG
>>15
まず一点、仕事ですぐに実戦投入するなら>>12には同意します。
以下は趣味で少しずつ勉強していくということを前提にしたことです。
すぐに広く使われるアプリを作成して配布できるわけもないので
ランタイムうんぬんはあまり関係ないでしょう。

> APIが変わるわけじゃあるまい?
MFCを覚える前にWin32を勉強するべきということであれば
基礎概念は一緒だし(というかMFCは単なるラッパー)同意しますけど、
それと同列にWinFXを持ってくるのは同意しかねます。

.NETでRADで組んでいくのとWin32で地道に組んでいくのとでは
概念が違うのでWin32を省略しても問題ありません。
もちろん今の.NETはWin32の不完全なラッパーなので
ちょっと凝ったことをしようとするとWin32をバンバン使いますし、
そうなるとWin32の知識は必須になってきますが、
WinFXはOSの全機能を網羅したものなのでWin32をパスしても無問題です。

今後もずっとWin32アプリは動くので無問題という意味でしたら、
今でもDOSアプリやWin16アプリが動くというのと同じことですね。
Cの初歩がようやく済んでこれからGUIというのに、
わざわざ将来性のない非RADで頑張るのは徒労でしょう。
まあ、本人が好き好んでやりたいなら止めませんが……。
0018デフォルトの名無しさんNGNG
.NETは遅いし、逆コンパイルも簡単に出来てしまうので
業務用には向いていません。
趣味として少しだけプログラミングする時や、サーバサイド
なら.NETもいいでしょう。
0019デフォルトの名無しさんNGNG
>17
異論は無い。が、
16→32bitの変化は劇的だったけど、
32→64bitの恩恵は今ひとつ実感が無い。

32bitにこだわる理由も無いけどね。
0020デフォルトの名無しさんNGNG
>>18
>.NETは遅いし、逆コンパイルも簡単に出来てしまうので
>業務用には向いていません。
逆コンパイル防止は簡単に対策が出来る。(VS.NET付属Dotfuscator)
遅くて業務用に向いてないのはどうしようもないから、
現段階で業務用に使う酔狂がいないのは同意。
Office 2003でも結局.NETじゃなかったくらいだからね。

もっとも次期Officeは完全WinFXになって2000/XP切り捨てで、
そういう時代になったら結局右に倣うしかなくなるよ。
マシン環境もIA64やx86-64が中心になるから、
32bitネイティブよりJITが利くマネージドの方が速くて単一バイナリで済む。
今すぐ業務で何かするなら関係ない話だけど。
0021デフォルトの名無しさんNGNG
>>19
当時の変化は劇的だったかなー。
Windowsも3.1だったし、16bitCPUの286の方が高速だったし、
少なくともPC分野では登場当時は劇的だったとは言えないと思うな。
0022デフォルトの名無しさんNGNG
>>21
いや、そういう意味じゃなくて、プログラミングの視点からの話。
セグメントに煩わされずに32bitのメモリ空間が……とかそういうの。
00231NGNG
知識が十分ではないため、検索しながらやっとの状態で読んでいます。
そのため、認識に過ちがあるかもしれないのですけれども。

いままでのレスを読ませていただくと、
次期のWINDOWSで新しいAPIのWinFXが登場するため、今のWin32が時代遅れになる事がわかりました。
ですが、現在の状況から2005年以降になると思われる次期Windowsの登場、
普及まで時間を考えると、現行のWin32で開発を行いたいと思うわけです。

学生の身であり、業務などで急を要するわけではありませんが、今の環境でできることをしたいと思っています。
確かにWinFXではまったく変わってしまうようですが、この経験がまったく無駄になるということもないでしょう。

いままでのレスでも、いろいろためになりました。
この付け焼刃の知識にも色々とご指摘をいただけると嬉しいです。
0024デフォルトの名無しさんNGNG
68Kとかは、レジスタ連結して32bit化してたね。
16bit時代でも32bitへのニーズは強かったよ。
0025デフォルトの名無しさんNGNG
>>23
理解は完璧。誤解はまったくないから安心して。
0026デフォルトの名無しさんNGNG
>>1は最初からVC++6.0と言っていた訳だが・・
002725NGNG
>>23
まずはWin32APIを覚えよう。
導入だけ教えるから後は頑張って。

1. VC++を起動
2. ファイル→新規作成
3. Win32 Application
4. 適当なプロジェクト名を付けて[OK]
5. 単純なWin32アプリケーション
6. [終了]
7. [OK]
これでプロジェクトの雛形が作成される。
"プロジェクト名.cpp"というファイルを開く。
0028デフォルトの名無しさんNGNG
>>26
C覚えたての人がWin32APIを自由に使えるようになるまでには
最低でも1年くらいはかかるから念を押したほうが親切ではある。
002925NGNG
ここから先は>>3-4で紹介されてる猫プロのお世話になる。
まずはここを見てみよう。
http://www.kumei.ne.jp/c_lang/sdk/sdk_00.htm

さっき開いたcppファイルの内容を全部消して
上のページに書いてあるコードをコピペする。
[F5]でビルド・ランしてみよう。
このページはVC++4の時代のものなので内容が古くエラーが出るので直す。
0030デフォルトの名無しさんNGNG
エラー> プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
ソースの最初にある
#include <windows.h>
を消して次のように書き換える。
#include "StdAfx.h"

プリコンパイル済みヘッダーというのはコンパイルを速くするための仕組み。
今はあまり深く追求しなくて良いが、後々MFCを使うようになると重要になるので、
とりあえず今のところはおまじないみたいなものだと考えておけば良い。
※今の段階で調べると余計にこんがらがるだけだから。
003125NGNG
書き忘れたけど>>30も俺ね。

これで[F5]でビルド・ランしようとするとまたエラーが出る。
エラー> 'void*' から非 'void' 型への変換には明示的なキャストが必要です。
このエラーメッセージのファイル名と行番号が書いてある部分をダブルクリックすると
エラーが発生している行に飛ぶので、そこを次のように修正する。
myProg.hbrBackground =(HBRUSH)GetStockObject(WHITE_BRUSH);
※つまり(HBRUSH)を挿入するってこと。

これで[F5]をすれば無事コンパイルが済んで白いウィンドウが出てくる。
今回打ち込んだプログラムはウィンドウを出すだけのものだからこれでOK。
003225NGNG
こんな調子で実際に修正して動かしてみながら猫プロを読み進める。
キャストのエラーは毎回出るから対処法のパターンだけ教えておく。

エラー> 'void *' から 'struct HBRUSH__ *' に変換することはできません。
HBRUSHという部分に注目する。
キャストエラーだから(HBRUSH)を追加すると直るわけ。
HBRUSH__の__は何かとかは今は気にしないこと。

エラーについて詳しいことは↓を参照。
http://www.kumei.ne.jp/c_lang/setvc.htm

あと16ビットがどうたらこうたらという説明は全部無視してOK。
Win16なんてWindows 3.1の時代の遺物。
ただWin32API自体がWinFXによってWin16と同じ道を辿るのは覚悟すること。
プログラムの作り方もここでやるようなものとはまったく違うのでほぼ完全に覚えなおし。
それがどんなものかに興味があればC#をいじってみれば良い。

とりあえずそんな感じで続けて、分からないことは↓のスレで聞くこと。
http://pc2.2ch.net/test/read.cgi/tech/1069339866/

じゃ、頑張って。
00331NGNG
おかげさまで、無事ウィンドウを出すことができました。
ありがとうございます。

無知さゆえにWinFXのことを知ったのも初めてでショックは受けましたが、
得られるものはあったと思うので良かったです。
何事にも疑問を追っていく姿勢は大事ですね。
003425NGNG
>>33
おめでとう。
このやり方だとボタン1つ出すのも大変だけど勉強にはなるので頑張れ。

単にGUIのアプリを作るだけならWinFXを待たなくても
今だってVC#を買って使ってみればびっくりするくらい簡単。
※VC#で使う.NET FrameworkというのはWinFXの前座みたいなもの。

くじけそうになったら気分転換にいじってみると良いよ。
ちょっとしたものを作るだけなら能率が10倍以上違うから。
0035デフォルトの名無しさんNGNG
猫プロ糞だな
0036デフォルトの名無しさんNGNG
Win32が糞
0037デフォルトの名無しさんNGNG
猫プロの悪口言うなー。
たいへんお世話になりました。
0038デフォルトの名無しさんNGNG
http://pc2.2ch.net/test/read.cgi/win/1073197774/

窓板逝け
0039デフォルトの名無しさんNGNG
いやしかし勉強になるな。
>>1じゃないけど、>>25の人ありがとう。
0040デフォルトの名無しさんNGNG
ところで>>1はもう辞めたのかな。漏れもCとC++の文法を覚えたから
次はwinアプリを作る為にMFCでもやってみようかと思ってるんだが。
0041デフォルトの名無しさんNGNG
>>40
MFCやる前にWin32APIをやっとけ。
0042デフォルトの名無しさんNGNG
どうすりゃいいの
0043デフォルトの名無しさんNGNG
javaを覚える
0044デフォルトの名無しさんNGNG
良スレっぽいのに長期間放置されているのは悲しい
よってage
0045デフォルトの名無しさんNGNG
文字列の扱い方とか、TCP/IPとか、データベースとか、をやろうとおもいます。
0046デフォルトの名無しさんNGNG
GUI製作はいきなりコーディングせずに、どんな画面にするか設計してからやらないと、
どこからてをつければいいかわからず、無駄なことで時間かかるよ。
0047デフォルトの名無しさんNGNG
そこでvisioですよ。
0048デフォルトの名無しさんNGNG
>>1じゃないけど>>25の説明のおかげで窓出せるようになった、サンクス!
0049デフォルトの名無しさんNGNG
あげ
0050デフォルトの名無しさんNGNG
このスレの1はどうなったんだろう・・
0051デフォルトの名無しさんNGNG
>>50
たぶん、Javaやってると思う。
0052デフォルトの名無しさんNGNG
このスレの1じゃないけど助けてください!
まじで何から手つけたらいいか全く分からないです。
>>25の読んでも(*´Д`)ハァ?って感じです…。
0053デフォルトの名無しさんNGNG
猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/

VC++でやるSDKのInternet Archiveに保存されてるやつ
ところどころ画像でない
http://web.archive.org/web/20010515015440/http://kerochan.no-ip.com/vcsdk/
0054デフォルトの名無しさんNGNG
>>53
猫の方はさっぱり理解できませんでした('A`)
下のリンク先読んで見ます。
■ このスレッドは過去ログ倉庫に格納されています