★初心者にVisual C++を教えるスレ★ Part33at TECH
★初心者にVisual C++を教えるスレ★ Part33 - 暇つぶし2ch832:デフォルトの名無しさん
09/06/07 10:46:35
Win32アプリケーションとWindowsフォームアプリケーションでは、何が違いますか?


833:デフォルトの名無しさん
09/06/07 10:48:55
>>832
フォームの使用・非使用

834:デフォルトの名無しさん
09/06/07 11:46:45
WinMain/main

835:デフォルトの名無しさん
09/06/07 12:38:05
VisualStudio 2008 EEのVC++で公開ソースをビルドしようとしたのですが、
afxwin.hがないとエラーが出たので”Visual C++ 2005 Express Edition と Microsoft Platform SDK を一緒に使う”
を見て設定しました。そして、ビルドをしたら
error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
というエラーがでます。ソースは

_AFXWIN_INLINE CMenu::operator==(const CMenu& menu) const
  { return ((HMENU) menu) == m_hMenu; }
_AFXWIN_INLINE CMenu::operator!=(const CMenu& menu) const
  { return ((HMENU) menu) != m_hMenu; }
_AFXWIN_INLINE HMENU CMenu::GetSafeHmenu() const
  { ASSERT(this == NULL || m_hMenu == NULL || ::IsMenu(m_hMenu));
    return this == NULL ? NULL : m_hMenu; }

となっており、2行目と4行目でエラーがでます。
どう書き換えればエラーが直るでしょうか。

836:デフォルトの名無しさん
09/06/07 12:45:37
MFCはEEじゃ使えないからダメ。

837:835
09/06/07 13:03:46
>>836
ということはソースを修正しても無駄ということですね。ありがとうございました。

838:デフォルトの名無しさん
09/06/07 13:57:38
>>829 の質問別スレで聞いて見ます。

839:デフォルトの名無しさん
09/06/07 14:10:05
実体がないのにコンストラクタは働かない。

840:デフォルトの名無しさん
09/06/07 14:53:27
小生、昨日、サッカーを久しぶりにテレビ観戦して
試合後、ニュー速で試合を見て思ったことを、色々書いたら
ぼっこぼこ馬鹿にされたなりよ。やっぱ小生がそこそこ偉い発言できるのはMFCしか無いと思ったなりよ。

841:デフォルトの名無しさん
09/06/08 10:00:06
DLLなど複数プロジェクトが含まれるソリューションを開発する時、
ソース内のincludeパスの指定どうしてますか?
VC++の場合はProjectDirとSolutionDirの2つがデフォルトで
使えると思いますがこれの使い分けとか気にしてます?

842:デフォルトの名無しさん
09/06/08 11:21:47
VS2008で、Cのプログラムをコンパイルするとき、CとしてコンパイルするかC++として
コンパイルするかというのは、自分で決められますか?

843:デフォルトの名無しさん
09/06/08 11:27:48
できる。
IDE内ならオプションにあるべ。
コマンドラインでも指定できるし、何も指定しないと拡張子から区別される。

844:デフォルトの名無しさん
09/06/08 12:40:49
>>843
ありがとうございます。
別ファイルにある
double func();
というのをmain()から呼んでる時、main()のすぐ上でint func();という宣言があるので
C++では呼び出せてたのですが、ふとこれがCだったら呼び出せてなかったっけ、と気になった
ので…。


845:デフォルトの名無しさん
09/06/08 14:15:29
ソースを書いてる時のコメントの色が見づらいので変更したいのですが色とかはどうやって変更したらいいですか?

846:デフォルトの名無しさん
09/06/08 14:19:03
ツール - オプション - 環境 - フォントおよび色

847:デフォルトの名無しさん
09/06/08 14:36:58
>>846
ありがとうございます!!

848:デフォルトの名無しさん
09/06/08 19:17:07
VC6 いまだに使ってますけど
ゲーム作成にしか使わないんですがバージョンアップする必要ってあります?

値段とファイルサイズだけがバージョンアップされあまり期待できないのですが

849:デフォルトの名無しさん
09/06/08 20:00:50
>>848
VC6はもうC++対応じゃないと思った方がいい。VC6言語だと思った方がいいくらい、標準と違う。

それを踏まえると、標準C++を学びたいわけでもなく、
現状のゲーム作成で困ってないなら変えない方がいいんじゃないかな?


850:デフォルトの名無しさん
09/06/08 20:02:05
Microsoft Visual C++ 2008 Express Edition
無償で公開されているから体験してみるもよかれ!

851:デフォルトの名無しさん
09/06/08 20:08:53
便乗質問・・・

VC6のStandardでしこしこ
アプリ作ってんだけど、
ぷろになりたいと思ってきた。その場合、Proffessional
editionの方がいいのかえ?


852:デフォルトの名無しさん
09/06/08 20:17:07
VC6のサンプルプログラム見せるよりは、新しいVCのサンプルの方が可能性は高い

853:デフォルトの名無しさん
09/06/08 20:18:38
サンプル -> 自作ソフトのサンプル

854:デフォルトの名無しさん
09/06/08 20:21:19
>>850
EE版だとMFC動かないんだよね
.netFrameworkは開発者のオナニーがたくさんつまった作品
オナニーたくさんやった挙句なにも便利になっていない
相変わらず細かいことをするにはいつもどおりの苦労を迫られるし
今度はやけにネットの情報が少ない

855:デフォルトの名無しさん
09/06/08 21:01:31
.NETで楽するならC#やVB.NETのような新言語でやらないとだめだ。
C++でやったら両方の悪いとこ同士が増幅されるだけ。

>>851
VC6の頃だと、Standardでは作ったものの商用利用が認められていなかった気がする。
そういう意味でProfesionalが必要だった。
あと、Stdでは最適化が使えない。

VC2005 (VC8)の辺りから、エディション問わず商用利用可能になっている。
最適化も基本的なものは全エディションで使えるし。

856:デフォルトの名無しさん
09/06/08 21:05:55
Visual C++ Express Editionにboostを入れようとしています。

(1) boost のダウンロードURLリンク(www.boost.org) のWelcome - Download から
 boost_1_38_0.zip とboost-jam-3.1.17-1-ntx86.zip をダウンロード

(2) boost_1_38_0.zip を展開し、内容をC:¥develop へ展開する。(他のディレクトリでも可)

(3) boost-jam-3.1.12-1-ntx86.zip を展開し、bjam.exe をC:¥develop¥boost_1_38_0 へコピー

(4) コマンドプロンプトを開き、ディレクトリを移動。
CD C:¥develop¥boost_1_38_0

(5) "C:¥Program Files¥Microsoft Visual Studio 9.0¥Vc¥bin¥vcvars32.bat" を実行

(6) bjam --build-type=complete msvc stage を実行

(7) Visual Studio を起動し、[ツール] > [オプション] を開き[プロジェクトおよびソリューション]>[VC++ディレ
クトリ] を開く。
右上の「ディレクトリを表示するプロジェクト」で「インクルードファイル」を選び、新しい行を作って
"C:¥develop¥boost_1_38_0" を追加する。おなじく「ライブラリファイル」に"C:¥develop¥boost_1_38_0¥
stage¥lib" を追加する。

と手順どおりにしているのですが、

fatal error C1083: include ファイルを開けません。'boost/array.hpp': No such file or directory

というエラーがでてコンパイルができません。
どうしたらいいですか??


857:デフォルトの名無しさん
09/06/08 21:17:20
そのエラーメッセージに書いてある通り

858:デフォルトの名無しさん
09/06/08 23:39:12
クリティカルセクションの質問なのですが、
main()でInitializeCriticalSection()やって、その後_beginthreadex()します。
その後以下の処理を行うスレッドを100個起動させます。
EnterCriticalSection()
カウンターをインクリメント
LeaveCriticalSection()
そして、main()関数内でWaitForMultipleObjects()で全スレッドの終了を待ちます。
WaitForMultipleObject()の直後にカウンターの数を表示させているのですが、
これが100になりません。(95とか55とか)
クリティカルセクションの使い方が間違ってるのでしょうか?


859:デフォルトの名無しさん
09/06/08 23:43:40
カウントの処理に問題があるのでは?

860:デフォルトの名無しさん
09/06/08 23:58:22
WaitForMultipleObject()が全スレッドの終了まで待っていないようです。


861:デフォルトの名無しさん
09/06/09 00:12:24
>>858
それ以前に、そのスレッドちゃんと全部生成されていることを確認したか?

862:デフォルトの名無しさん
09/06/09 00:21:34
>>861
確認しました。やっぱりWaitForMultipleObject()がスレッドの完了待ちをしてませんでした。
WaitForMultipleObjects(100, hThreads, TRUE, INFINITE);
この形で呼び出していて、戻り値は-1でした。


863:デフォルトの名無しさん
09/06/09 00:31:03
とりあえず自己解決しました。
main()の最後に
while(count!=100)
;
みたいなループを入れると動きました。なんとか動きそうです。


864:デフォルトの名無しさん
09/06/09 00:39:48
WaitForMultipleObject の第一パラメタ(最大ハンドル数)は 64 まで


865:デフォルトの名無しさん
09/06/09 00:50:56
>>864
ええーっ、64ですか?
そうか、MAXIMUM_WAIT_OBJECTSですか…

じゃあ65以上のスレッドを待ちたい時はどうすんのかと思ってMSDN見たら、
64個のスレッドを待つまとめスレッドを作って、そのスレッドを待つようにしろ、
と書いてました。そんなの今からかけないよ~

でもありがとうございました。




866:デフォルトの名無しさん
09/06/09 08:26:07
スレッドが100個とかどういうとき必要になるんだろう。


867:デフォルトの名無しさん
09/06/09 10:37:05
HTTPサーバみたいなサーバプロセスを書いているのですが、コネクションが来るたびに
スレッドを生成してWorker Threadパターンでやってます。今朝は100個のコネクション
が一挙にキタ場合のテストをやろうとして、ああなってしまいました。


868:デフォルトの名無しさん
09/06/09 15:53:55
アルゴリズムってなんですか?
分かりやすい例えを教えてください

869:デフォルトの名無しさん
09/06/09 16:17:33
>>868
アルゴリズムすなわち解法
問題と答えをつなぐものがアルゴリズム。

たとえば「1~10の総和はいくら」という問題に

Aさんは 1+2+3+4+5+6+7+8+9+10
Bさんは 11×5

と考えるだろう。
Aさんの解法もBさんの解法も「1~10の総和はいくら」の答えを求めるアルゴリズム。

870:868
09/06/09 16:19:35
当然正しい答えが出なきゃならんし,有限の時間で答えが出なきゃならん。

ってかスレ違いだと思われ。

871:デフォルトの名無しさん
09/06/09 17:44:48
ググれ

872:デフォルトの名無しさん
09/06/09 19:37:15
MFCについて質問があります。
ダイアログ上のボタンを押下したときに、エディットボックスを追加する関数を加えたいのですが、
エディットボックスを追加する関数というのはあるのでしょうか?
また、エディットボックスを追加すると同時にメンバ変数も追加することができるのでしょうか?

873:デフォルトの名無しさん
09/06/09 20:50:02
>エディットボックスを追加する関数
動的に追加するならCEdit::Create();

動的に追加せずとも、非表示でエディットボックスを作成しておき、ボタンをクリックしたときに表示させる
という手法もある。

>メンバ変数も追加することができるのでしょうか
メンバ変数はあらかじめ用意しておく必要がある。

874:デフォルトの名無しさん
09/06/09 20:59:32
CObject は動的生成機能もサポートしています。これは実行時に特定のクラスのオブジェクトを作成する機能です。

875:デフォルトの名無しさん
09/06/09 21:03:27
>>873さん
ありがとうございます。

876:デフォルトの名無しさん
09/06/09 22:09:10
仮想関数やWindowsハンドラをオーバーライドして
基低クラスの関数を最後に呼び出すかどうかってオーバーライドする関数によって違うみたいなんだけど
初心者じゃそこらへんわからないよね(´・ω・`)

877:デフォルトの名無しさん
09/06/09 22:12:00
「非標準の拡張機能が使用されています : 右辺値のクラスが左辺値に使用されます。」って警告ってどうやったら取れるんでしょうか
めっちゃいっぱい出ていて困っています

878:デフォルトの名無しさん
09/06/09 22:12:48
>>876
何を...>>876君、君が何を言っているのか分かんないよ

879:デフォルトの名無しさん
09/06/09 22:14:44
>>877
とりあえず再現するソースを公開しろ

880:876
09/06/09 22:17:22
たとえばPrecreateWindow関数をオーバーライドすると
BOOL CMyNaviView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: この位置で CREATESTRUCT cs を修正して Window クラスまたはスタイルを
// 修正してください。

return CView::PreCreateWindow(cs);
}
って、最後にreturn CView::PreCreateWindow(cs);の一文が入るんだけど、
本を読んでるとこれをreturn TRUE;に変更するとか、初心者じゃわからないよね(´・ω・`)

881:デフォルトの名無しさん
09/06/09 22:30:54
PreCreateWindow()の戻り値の意味を知っていればわかるだろ。

で、君がわからないのか、それとも他人がわからないことを嘆いているのか、どっちだ?

882:876
09/06/09 22:34:36
わしがわからんのじゃけど。

883:デフォルトの名無しさん
09/06/09 22:38:24
PreCreateWindow()が FALSE を返すとウィンドウは作成されない。
じゃ、CView::PreCreateWindow() はどういう時に FALSE を返すのか、オーバーライドした関数ではどうすべきか、
なんてなことを勉強していくしかないな。AAAA

884:デフォルトの名無しさん
09/06/09 22:39:33
うう、すまぬ。最後のAAAAは無視してくれ。
Shiftキーと同時に押しちまった。

885:876
09/06/09 22:42:07
わかりました。ありがとう。

道は長そうだけど、そういうふうに意識して勉強していきます。

ありがとう。

886:デフォルトの名無しさん
09/06/10 01:08:54
_beginthreadex()で作ったWindowsのスレッドに、各スレッドごとに独自のデータを
保持させることはできますか?


887:デフォルトの名無しさん
09/06/10 01:18:39
>>886
つTlsAlloc, TlsFree 等

888:デフォルトの名無しさん
09/06/10 01:34:25
>>886
生成するスレッドにはパラメタを1つ渡せるので、スレッドの単位で作成したクラスや構造体の
インスタンスアドレスを渡せば良い

889:デフォルトの名無しさん
09/06/11 23:29:45
フォルダごとコピーしてデスクトップに持ってきてデバッグしようとしたらデバッグ情報が読み込めません、シンボルが一致しません
って警告が出るんですけどどういう意味ですか?

890:デフォルトの名無しさん
09/06/11 23:39:29
>>889
デバッグ情報にはソースファイル位置などがフルパスで格納されているから
フォルダを移動すると正常にデバッグできない

891:デフォルトの名無しさん
09/06/11 23:40:12
>>890
じゃあ、どうすればいいんです?

892:デフォルトの名無しさん
09/06/11 23:42:49
元の位置でデバックする

893:デフォルトの名無しさん
09/06/11 23:47:20
それじゃ意味ねええええっうぇwっうぇえww

894:デフォルトの名無しさん
09/06/11 23:52:43
シンボルサーバ作ればいいだけだろ

895:デフォルトの名無しさん
09/06/12 00:02:50
    /::::::::::::::::::(  /::::::::::ヾ ヽ ヽゞ::::::::::::::::ヽ
   /::::::::::::::::::::::::::::::::::ヾ  i i ソ::::::::::::::::: ヽ
  /:::::::::::::::::::::::::::::::::::::ゞ ! i ゞ::::::::::::::::::ヽ
 /:::::::::::::::::::::─< ̄● ̄>─ | i |─< ̄● ̄>─:::::::ヽ
 |:::::::::::::::::::::/    ̄   ̄    ─ 、   ̄  ̄   ヽ::::::::|
. |:::::::::::::::::::/            /   ヽ         ヽ:::::::|
..|::::::::::::::::::/              i       |          \:::::|ぶぁぁか
.|:::::::::::::::::/              ヾ     丿        _ \::::|
..|::::::::::::::::/       ̄ ─ _    ` ─ ̄ '      ─ ̄    ヽ:::|
 |::::::::::::::::             ─ ー  | |  ー─ ̄        ヽ:|
 ヽ:::::::::::::: |     ━ ─ ─ ー ─ - | |  ─  ー ⌒ ─     |
  ヽ:::::::::::::|          _ _─ ─││ ─/ヽ_ヽ      |
   ヽ::::::::::::|      ─ ̄           _─ ̄  ノ  /─    |
    ヽ:::::::::::|          _ _ ─  ̄      / 丿     |
     ヽ::::::::::|        ヽ ̄    / ̄ - -_    / /      /
      \:::::::::|        \   ノ    -_ _ ) / /     /
       \:::::::|          \      ノ ─' ノ       /
         \:::::|            ─ _ __ ー '       /



896:デフォルトの名無しさん
09/06/12 00:06:23
リモートログインしちゃえよ

897:デフォルトの名無しさん
09/06/12 02:02:02
MFCのために¥15000だしたいんだけど、金無いなりよ。

898:デフォルトの名無しさん
09/06/12 02:03:59
>>897
学生ならドリスパでタダでVS2008プロを落とせる

899:デフォルトの名無しさん
09/06/12 09:55:20
VC++eeなんですけど
プロジェクトフォルダで、自分の書いたソースファイルとかプロジェクトの設定が書いてあるファイルなどと、
ビルドした時の中間ファイル?とかビルドファイルとフォルダを変える事ってできますか?

どこでも参照できるように自鯖のサブバージョンに入れてみたんですけど、容量がどんどん肥大化していく・・・

900:デフォルトの名無しさん
09/06/12 10:01:52
ドリスパって何?

901:デフォルトの名無しさん
09/06/12 11:19:53
サッカーのチーム

902:デフォルトの名無しさん
09/06/12 13:22:13
>>899
プロジェクトのプロパティの全般カテゴリに中間ディレクトリ指定できんだろ。
んまーそこで困ってるならsvnの無視プロパティ活用しろよとは思うが。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch