07/02/20 12:48:37
第2日●リソースを扱うる
2時限目 アイコンリソースを操作す
3時限目 オリジナルビットマップを作る ~ Delphi 版
ごきげんよう。
時間を選ばない挨拶は便利ですが、時と場合と身分を選びます。
私の場合は身分が低いので、上の挨拶ではダウト。残念です。
などと考えている間に、ほとんど何もしないまま朝は過ぎ去り、
手元に残ったのは、1時間でちゃちゃっと調べてちゃっちゃと組んだアイコンとビットマップの表示コードのみ。
Delphi で .rc ファイルを作ってコンパイルすれば、 .res ファイルが自動生成されるって聞いていたのですが、
私の環境でできなかったのは Turbo Delphi だからでしょうか。
Image Editor も見つからなかったので、そういうものかと自己完結です。
しかし、無料で強力な開発環境付きコンパイラが数十分でネットから落とせて、
入門者用のウェブページを見ながら、本の一冊も買わずに言語の基礎を覚えられるって…
本当にありえないありがたさです。
コタツにミカンで好きな時に好きなプログラムをコーディング。天国ってこんな場所に違いない。
URLリンク(a-draw.com)
28:非表示用コテハン
07/02/20 17:32:56
第3日●ダイアログボックスリソースを扱う
1時限目 ダイアログとコントロールのプロパティ操作
2時限目 ビットマップを組み込む
第4日●API関数を使う
1時限目 ウィンドウに文字列を表示する
2時限目 メッセージボックスを使う ~ Delphi 版
「いやー、デバッグの動きが難しくてさー。なんかメモリ?とか表示してるしー。
変数の追跡がもっと簡単に終われば10分でできちゃったんだけどねー。
デバッグのせいだから、俺なーんも悪いことやってないから。あとよろしくー。ガハハー」
結論: 当然自分が悪い。
さて、デバッガを上手く使いこなせていないこととは、全く関係のないところでつまづきまして
Row := Trunc(x / WIDTH); //列を求めるために(x = 128, WIDTH = 32 なら 4 を割り出したい)
Row := x mod WIDTH; //こんな式を書いてました。(mod は剰余を返します)
x は WIDTH の倍数なので、下の式だと常に 0 が返されます。
という、理系ならおままごとをしながらでも間違えなそうなところに2時間掛かりました。
勘に頼って非常に適当にGUIやクラスを組んでますが、VBとJavaしか触ったことがないので、
メモリやGCまわりの知識がボロボロです。
道は険しく歩みは遅い。しょんぼりしてきたので今日はここまでです。
URLリンク(a-draw.com)
URLリンク(a-draw.com)
29:非表示用コテハン
07/02/21 10:43:49
第5日●マウスのメッセージを使う ~ VC++版 / 失敗編
ぷいぷいにゅー。 ←あいさつ
……5日目です。
VC2005で「Windows フォームアプリケーション」プロジェクトを新規に立ち上げると、
どうやら .net フレームワークが使われるらしいことに、今日初めて気付きました。
仕方がないので、いつものように勘とVBの経験を生かして、なんとか下のコードで
フォームの背景色を変えることに成功しました。
if(e->Button == System::Windows::Forms::MouseButtons::Left) {
this->BackColor::set(System::Drawing::Color::Aquamarine);
} else {this->BackColor::set(System::Drawing::Color::AliceBlue);
}
でも、フォームにビットマップを描画する方法が分からず、お腹が減ってきたので
ここで断念してご飯を食べてからMFCに移ることにします。
30:非表示用コテハン
07/02/21 14:28:26
第5日●マウスのメッセージを使う
1時限目 マウスボタンで図形を描画する
2時限目 マウスを動かして図形を描画する ~ VC++版
大発見。
ようやくVC2005でのイベント自動生成の方法が分かりました。
遅いよと言われれば、全く以てその通りなのですが。
マウスでのお絵かきは、あまりに定番の学習題材なので、参考にするサイトが豊富でわかりやすいものです。
なので、基本はソースを横目に手打ちです。
デバイスコンテキストやらafx_msgやら、分かったような分からないような呪文の森の中を突貫します。
<ひどい妄言>
思うに、多くの初心者にとっての第三の壁が、この辺りの「ライブラリの利用」なのではないでしょうか。
・最初の壁がインストールからコンソールの表示(設定周り、誤字などのケアレスミスでつまづく)
・次の壁が変数、型、演算子などの暗記と、先の見えない反復練習(ファイルI/Oも分かり易いGUI表示もなし)
で、飽きてきた or 分かった気になってきたところで出てくるのが、原理も分からず関数や定数の
山ほどついたGUIライブラリ。引数の意味をおぼえる気にならず、応用もできない。
これだけ時間をかけて、できたものがFFでもエクセルでもなく、1ピクセルの線を引くだけのツールだった日には…。
と、初心者自身が偉そうな講釈を垂れるほど、マンネリ化が進む時期でありましょう。
</ひどい妄言>
見習いは、口を動かさず手を動かせ。
真理です。次に進みます。
URLリンク(a-draw.com)
31:非表示用コテハン
07/02/21 19:22:37
第6日●メニューとペイント・描画処理
1時限目 メニューで塗りつぶし色を選ぶ
2時限目 メニューでペンを操作する
痛々しい書き込みが連続してしまいました。
普段はミミズよりもオケラよりもアメンボよりも頭を使っておらず、
しかも飽きっぽい性質なのに無理をしている疲れが、文章にあらわれたのでしょうか。
しかし、喜ばしいことにVC2005の操作や、MFCの作法に少しずつ慣れてきました。
最初は本当にIDEの操作+コードの写経に終始して、言語規則自体は完全に放置でしたが、
なんとか独自クラスを作って include してSTLで動的配列を利用してと、
「C++のプログラミングを勉強する」時間が増えてきました。
その分、バグフィックスに時間がかかり、目標達成が遅くなるわけですが。
2時限目の「メニューでペンを操作する」ことがどういった機能か分からなかったので、
Turtleクラスを作って、上下左右に動かしてみました。
そして、getter作成やconstを使った引数、ポインタの利用など、もっとも燃えるところで
今日はもうコーディングが面倒になって、全部むき出しの変数にして値渡し!
…OOPLが…台無しです。
今日で折り返し、あと5日。なんとか、いけるかな?
明日は午後から用事があるので、時間を割けるのは午前だけです。
…うぐぅ。
URLリンク(a-draw.com)
32:非表示用コテハン
07/02/22 11:00:17
第7日●カスタムダイアログの作成
1時限目 ダイアログとスタティックテキストの操作
2時限目 ダイアログコントロールとプログラムの連携処理
おはようございます。
あと2時間ほどしか、時間を取れないのでサクサクいきます。
カップ麺のテンプラは、後乗せサクサクのCMが流れる前から、後乗せでサクサクさせてました。
ことほどさように、予想外の文章の展開や、人生のエラーはどこにでも潜んでいるものでございます。
ここまでくればMFCでのクラスの利用は、ほとんどが今までのちょっとした応用で、
基本的な使い方をネットからさらってきて、すぐに2日分進めるだろうと甘く考えていたのです。
が、ちょっと調子に乗ってコンボボックスを使ってみたら、なぜか固まる。
すぐに解決しそうかな。解決しそうかな。と、カチカチやって、結局直らないまま1時間半経ったので
ばっさり切り捨てました。
後日再挑戦すべきことが、どんどんどんどん増えていきます。
後悔は先に立たないので、後回しにして突進です。
URLリンク(a-draw.com)
33:非表示用コテハン
07/02/22 13:10:57
第8日●テキストエディタの作成
1時限目 エディットボックスの実装
2時限目 ファイルを保存する ~ VC++版 / またも失敗編
//「読込」ボタン押下時の関数。 m_text1 : IDC_EDIT1 の文字列
CString ss;
UpdateData(true);
CStdioFile fin(CString("C:\\test.txt"), CFile::modeRead);
m_text1 = "";
while(fin.ReadString(ss) != NULL) {
m_text1.Append(ss);
m_text1.Append(CString("\r\n"));
}
UpdateData(false);
結局、日本語が文字化けしてしまい、文字化けを直せないまま時間切れです。残念。
でも、問題解決能力の低い初心者プログラマにとっては、このくらいの壁が
難易度的にちょうど良さそうで、解決に時間を割くのが今から楽しみです。
…そして、何日かけても解くことができず、暴れだすこともありがちなことですが。
URLリンク(a-draw.com)
34:非表示用コテハン
07/02/23 10:29:08
第5日●マウスのメッセージを使う
1時限目 マウスボタンで図形を描画する
2時限目 マウスを動かして図形を描画する ~ Delphi版
おはやう。
あ~るくんネタが通じなくなってきたかのように見えて、
しかしネットの文字ネタ伝播力によって、潰えることなく浸透し続けております。
このように、過去の遺産のアーカイブでもあるネットは、今日も Delphi と VCL
についての情報を、未来まで語り続けてくれるのであります。
何がいいたいのかというと…Delphiが簡単すぎるあまりに感涙にむせび、
入門サイトの分かりやすさに戦慄しました。びっくり。
調子に乗って、ずんたかぽこてん、ずんたかぽーんと進みます。
URLリンク(a-draw.com)
35:非表示用コテハン
07/02/23 12:49:35
第6日●メニューとペイント・描画処理
1時限目 メニューで塗りつぶし色を選ぶ
2時限目 メニューでペンを操作する ~ Delphi版
昔から、不思議なことがありました。
なぜでしょうか、私のようなプログラミング初心者が「ゲーム作るぜ!」と言い放った後、
製作にHSPを選んだ方は、(単純であるにせよ)自らのアイディアをちりばめた、
ゲームの完成品を持ってくる率が高いように見受けられ、
JavaやC言語を選んだ方は、作っても既存のゲームの焼き直しが多く、
あまり完成した例を見た覚えがありません。
もちろん短時間で面白いゲームを作り上げる方もいらっしゃいますし、
こちらの場合は1週間以上の時間をかけて、実に完成度の高いゲームを作り上げる率が
より高いと感じます。
見識の狭い(しかもHSPに触ったことがない!)一個人の、単なる印象でしかないのですが…
Delphi でプログラムを組んでみて、なんとなく納得してしまいました。
ここまで言語自体の敷居が低く、簡単に「ゲームが作れそう」なコードが書けるならば、
これならゲームの一つも作りたくなるってもんです。
2つの言語を平行して習得するのは、息もつかせぬほどに絶え間ない驚嘆の連続です。
URLリンク(a-draw.com)
36:非表示用コテハン
07/02/23 18:02:24
第7日●カスタムダイアログの作成
1時限目 ダイアログとスタティックテキストの操作
2時限目 ダイアログコントロールとプログラムの連携処理
第8日●テキストエディタの作成
1時限目 エディットボックスの実装
2時限目 ファイルを保存する
第9日●タイマーを使う
1時限目 タイマー関数を使う
2時限目 アイコンアニメーションの作成 ~ Delphi版
ここまで来ると、IDEの使い方にもなんとなく慣れ、情報の探し方もなんとなく分かってきた気になり、
実際に適当に機能を推測しながら、補完機能を使ってコーディングしても上手く動き出してきます。
まだまだ言語の構文も使いこなせているわけではなく、大きな事故も起こしやすい
「自称中級者」の一歩手前ではあるのですが、一番習得が楽しい時期でもありましょう。
そんなこんなで、後はデジタルクロックの作成を残して Delphi でのカリキュラム実装は終了です。
…偉そうに言いながら、実際は既存のページの既存のコードの劣化コピーな訳ですが。
カスタムダイアログは3日目に作ってあったものの再利用です。
Jpegでは分かりませんが、下図では右下のアイコンがアニメーションしています。
進み具合に満足しながら、今日はここまで。
明日は8日目。VCとも仲良くなれるよう、襟を正し、脇をしめて。でも楽しんで勉強です。
URLリンク(a-draw.com)
37:非表示用コテハン
07/02/24 12:18:37
第8日●テキストエディタの作成
1時限目 エディットボックスの実装
2時限目 ファイルを保存する ~ VC++版
で、ででで、できたーっ!!!文字化けしない「超簡易テキストエディタ」ができたー!
なんだか転げまわりたい気分です。裸で走り出したアルキメデスの気持ちが分かりました。
大げさですか。私もそう思います。
実は昨日の夕方から今朝の3時ごろまで、ずっと今回の文字化けについてネットで調べてました。
そして、VS2005からUnicodeがデフォルトになったのを知り、MSDNに記載されているCStdioFileの
サンプルコードをコピペしても動かない(char*型を使っているのでエラーが出る)ことに
動揺する気持ちを必死で抑え、TCHAR、Longプレフィックスの存在を今になってはじめて知り、
ようやく「ファイルへの文字列保存、読込」に成功です。
C/C++の本を一冊も持たず、型キャストすらも良く分かっていないまま、勢いだけでコーディング
していると、到る所穴だらけです。
今回の文字列操作は、とても良い経験になりました。
URLリンク(a-draw.com)
URLリンク(a-draw.com)
38:非表示用コテハン
07/02/24 17:32:02
第9日●タイマーを使う
1時限目 タイマー関数を使う
2時限目 アイコンアニメーションの作成
3時限目 デジタルクロックの作成
第10日●デバッグ操作
1時限目 デバッグ操作 ~ VC++版
今回の書き込みを持ちまして、VC2005を用いての全てのカリキュラムを終了とさせていただきます。
デバッガは、ブレークポイントを設定して変数を覗き込むくらいのことはしていましたし、
独学ではとてもゴールが見えませんので、今回の学習に含むということで。
文字コードについて軽く学習したことで、文字列の変換エラーなどがずいぶん減り、
ようやく、ようやく半人前程度に IDE を操作し、ネットと書籍の力を借りれば、
よろよろとプログラミングできる、基本中の基本の入り口に足を踏み入れた気がします。
C++の知識を深めようとすれば深めようとするほど、今自分のやっていることの浅さが分かってきました。
同時に、この言語の懐の広さが実感として湧いてきて、そのあまりの自由さに
「血沸き肉躍るけれど眩暈がする」感じです。
総括は次の書き込みか、その次辺りで。
URLリンク(a-draw.com)
39:非表示用コテハン
07/02/24 19:08:04
第9日●タイマーを使う
3時限目 デジタルクロックの作成
第10日●デバッグ操作
1時限目 デバッグ操作 ~ Delphi版
Delphi でのカリキュラムも含め、以上で『10日でおぼえるVisual C++ 6.0入門教室』の
目次に書いてある機能全ての実装は終了です。多分。
今回のデジタルクロックは、ラベルとタイマーを貼り付けて、イベントをちょめちょめしただけの、
小さな小さなアプリですが、迷うことなくスムーズにポトペタして、コードを書いて、実行することも、
数日前にはできなかったことです。
エラー処理にも、独自クラスオブジェクトの連携にも手を付けませんでしたが、それらの学習も
今までの延長線上にきっとあるものでしょう。
8日という短い間でしたが、飽きっぽい私が2つの言語を平行して学び通せたのも、
スレ住人のみなさんの目を意識して、投げ出しそうなところで自分に活を入れることができたからに他なりません。
ニヤニヤしながら静かにヲチし続けて下さった方も、そうでない方も、どうもありがとうございました!
URLリンク(a-draw.com)
40:非表示用コテハン
07/02/24 19:50:03
まとめ:
・既習言語とやる気と時間とネット環境があれば、言語は4日で「入門」できるハズ。
・でも、能力が低い上にまとまった書籍がないと、結局基礎がおろそかなままノルマの達成に追われる。
・完全なプログラミング初心者がVCを買ってきて覚えるのは、思わぬエラーにめげない忍耐力と最新の書籍の両方を持たないと厳しいかも。
・入門書は、できるだけ自分の環境を再現したものの中から、じっくり立ち読みして分かり易いものを選ぶべきだと思う。
・だけど、学習を始める前から躊躇して、万全の本探しや最強の言語探しをするよりも、さっさと学習を始めたほうが絶対に良い。
・最初のうちのエラーは、きっと誰かの通った道なので、エラーメッセージを切り出してgoogle検索で大体解決。
・google先生は偉大。でも、解決に到るまで芋づる式に何十個もページを読まなければいけない時もある。
・C++の入門について言いたかったことは、この板の「C++の効率的な勉強方法」スレで大体言い尽くされてた。
・「Delphiすげー」とか言いながら、実はC++に魅了され続けてた。この言語は、圧倒的だ。
・「淡々と言語学習の進捗を報告するスレ」とか、回答に期待せずに学習の進んだページ数などを報告して、自らを奮起させるスレがあっても面白いかも。
・今なら言える!このスレ、リアルタイムでヲチしてた人っているの?
・Happyプッチンプリン、うめぇ。
41:デフォルトの名無しさん
07/02/24 21:10:34
リアルタイムでヲチしてました。
いつも楽しみにしてましたよ
42:デフォルトの名無しさん
07/02/24 21:12:15
リアルタイムでヲチしてました。
いつも楽しみにしてましたよ
43:非表示用コテハン
07/02/24 22:42:45
>>41-42
ありがとうございます!!
この暖かい言葉で、なんだかとても救われました。
44:デフォルトの名無しさん
07/02/27 14:30:54
俺も見てたぜ。
なんか目標があるとこういうのって頑張れるよな。
45: ◆QbMRH4Nmr6
07/02/28 09:38:46
>>17-40 です。
誰も見てなさそうだと思って、どんどんエスカレートしていった自分の書き込みが恥ずかしかとです。
今回は単元に沿ってお題をこなして進捗を書き込むことで、モチベーションを維持しましたが、
「何か作りたい!」ではなく「プログラミングを覚えたい!」だと、なかなか頑張るのが難しいですよね。
『10日でおぼえるVC6』を立ち読みしたら、書いてあることは大体できるようになってました。
よかったよかった。
46:デフォルトの名無しさん
07/03/01 16:11:17
>>17->>40に刺激を受けて俺も無料のVC++をインスコしたぜ!
初日の今日はHello Worldに2時間かかった
使い方難しいなこのソフト
新規プロジェクト作ったときに自動でcppファイル作ってくれるんだが、
これをcに保存しなおしたのがまずかったらしい
俺は日記は書けそうにないががんがるよ
47: ◆QbMRH4Nmr6
07/03/02 10:25:13
>>46
がんがれ。
でも、壁にぶつかった時に無理にがんがりすぎると飽きる原因になったりするので、
適度に迂回や後回しを繰り返しつつ、楽しみながら学習するのが良いと思う今日この頃。
草葉の陰から応援してます。