★初心者にVisual C++を教えるスレ★ Part30at TECH
★初心者にVisual C++を教えるスレ★ Part30 - 暇つぶし2ch175:デフォルトの名無しさん
08/05/22 17:47:34
>>173
プロパティのPasswordCharの項目に*

176:175
08/05/22 17:48:21
ああ、半角英数字か・・・
ゴメンゴメン。忘れて

177:デフォルトの名無しさん
08/05/22 18:46:22
IMEをOFFにするか自分でキー入力読む

178:デフォルトの名無しさん
08/05/22 19:46:30
作りたいプログラムがあり、何か言語を習得しようかと考えています
過去にまともなものをプログラムした経験はほとんどなく
HSPでぷよぷよの模写を遊びで作ったことがある程度です
言語としてはCOBOLやC++をかじった程度ポインタなどは概念を踏まえて
あるていど辞書を引きながら書くことはできます。
プログラムに関する技量などは自分で調べたりしながら向上させていこうと思っているのですが

何を本格的に勉強しようか悩みTurbo DelphiかVC++で行こうと考えて
とりあえずVC++2008無償を入れてみたのですが
初めて扱う上に初めての開発環境でソフトの機能や基本的な使い方を習得するだけで挫けそうです
VC++の勉強サイトなどをみても2008の環境で説明されている所が見つけられず
新規ファイルを作る段階でさえCLTとWin32の詳細な意味を調べてテンプレート形式もそれぞれ調べて…
書こうと思ってもサイトで提示されている項目が無いたびに色々調べたり
プログラムを書く時間よりもやりたいことをする手順なんかで悩んでる時間のほうが長いです

開発環境2008で勉強できるところは無いでしょうか_| ̄|○ il||li



179:デフォルトの名無しさん
08/05/22 20:29:33
何を作りたいの?
HSPでぷよぷよ作れたなら結構スキルはあるんじゃない?

180:デフォルトの名無しさん
08/05/22 20:54:02
おとなしくVC++2005とかBC++にしておけば?
今なら腐るほど解説ページあるぞ

181:デフォルトの名無しさん
08/05/22 21:00:43
対象ウィンドウ内の詳細なデータを調べて
仮想でウィンドウの模写的なもの(できるだけの機能を残して)を作ることは出来ないかなと
ただ深く追求していくとプロセスメモリへのアクセスなどクラックの分野になってくるのかな?と思って…

CでもC++でもDelphiでもjavaなんでも他に使いやすい初心者向きのテキストエディタあるやろって話なんですが
覚えたころにはもう使われてませんでしたでは話にならないのでVc++にしようかなぁ…と…
ごめんなさい取り説よめでFAでしたね_| ̄|○ il||li


182:178
08/05/22 21:12:22
↑178です

>>180
レス感謝 win32API使うならCやC++がよさそうなので他のバージョンなりなんなり探してきます
そしておとなしくします!

さようなら2008 ( ´・ω・`)ノ~

183:デフォルトの名無しさん
08/05/22 21:34:20
物凄く不適切な回答を見た。

184:デフォルトの名無しさん
08/05/22 23:17:07
VC++2008EEとVC++2005EEってそんなに違うものなの?

185:デフォルトの名無しさん
08/05/22 23:35:40
両方使ったけど、ほとんど何も変わってない。

186:デフォルトの名無しさん
08/05/22 23:40:54
すみません。今Win32API勉強してるんですが、
WM_INITMENUが呼ばれるタイミングっていうのはどういうタイミングで呼ばれるのですか?

たとえばWM_PAINTは、Windowが隠れたりして再描画が必要なときに呼ばれるみたいですが
WM_INITMENUの呼ばれるタイミングがわかりません。

よろしくお願いします。

187:デフォルトの名無しさん
08/05/22 23:50:39
いえいえこちらこそよろしくお願いします。

188:デフォルトの名無しさん
08/05/22 23:52:24
>>169

Releaseビルドでやってるっす。最適化オプションはO2ですね。
vectorのヘッダーを丸ごとコピーして適当に名前を変えてクラスにしたら、
ちゃんとインライン展開されてるようで。どこがキーなのか分かりません。

189:186
08/05/23 00:07:38
すません。ぐぐったら出てきました。

自己解決です。スレ汚しすません。

190:173
08/05/23 00:35:01
>>177
IMEをDisableにしたら狙った通りに動いてくれました。
ご指摘ありがとうございました。

191:デフォルトの名無しさん
08/05/23 02:29:00
>>186
トレースでもしりゃわかるよ

192:デフォルトの名無しさん
08/05/23 02:41:05
>>188
templateでかけば普通インライン展開されるんじゃなかったけ

193:デフォルトの名無しさん
08/05/23 08:24:12
VC++2003EEとVC++2005EE は結構違うよね

194:デフォルトの名無しさん
08/05/23 09:04:21
エンタープライズだろ

195:デフォルトの名無しさん
08/05/23 09:10:18
なんだ2005よりインストール楽になってるじゃないか
これで挫折するんじゃ救いようがないな

URLリンク(ja.wikipedia.org)
Visual C++ 2008 Express Edition
Visual C++ 2005 Express Editionに続き2007年12月18日から公開されている。
ATLやMFCが付属しない点はVisual C++ 2005 Express Editionと同じであるが、
Windows Platform SDKが標準で同梱されるようになり、
Win32アプリケーションの開発に必要なWindows SDKを別途用意する必要がなくなった。

196:デフォルトの名無しさん
08/05/23 09:14:23
・言語の仕様
・Windowsの仕様
・IDEの使い方
結局これらがわからないとダメなんじゃない?

197:デフォルトの名無しさん
08/05/23 09:17:37
2005と2008だと、細かなところで2008の方が使いやすいな。
俺はInteliSenceで隠れたところがCtrlキーを押すと半透明になるのが一番
便利だな。


198:デフォルトの名無しさん
08/05/23 10:58:15
>>197
知らんかった

199:デフォルトの名無しさん
08/05/23 13:18:18
VC++2005AE購入・インストール済みで、2008EEを入れたんですが、
VC++2008版のATL・MFCは、2005の時のものと大きな差がありますか?
2008EEから2005のMFC・ATL使うと何か弊害が考えられるでしょうか?

200:デフォルトの名無しさん
08/05/23 14:59:45
ライセンス的にどうなのよ

201:デフォルトの名無しさん
08/05/23 16:25:09
VC++2008EEでウィンドウを作成した際にタイトルバーのアイコンが正常に表示されず困っています。

例えばIDI_ICON1と言うアイコンをWNDCLASSEX構造体で

WNDCLASSEX wc;
(中略)
wc.hIconSm = LoadIcon(NULL, MAKEINTRESOURCE(IDI_ICON1));

などと指定しても、実際に表示されるのは吹き出しの中に"?"が書かれたアイコン(TTI_INFOと同じ)になってしまいます。
色深度に制限があるのかと思い24bitカラーのアイコンを使ったり実行ファイル用のアイコンをそのまま指定したりもしましたが症状は改善されません。
何が原因でしょうか。

202:デフォルトの名無しさん
08/05/23 16:38:42
>>201
LoadIcon の仕様を確認するんだ。
1つめの引数NULLはWindows標準のアイコンだぞ。

203:デフォルトの名無しさん
08/05/23 17:13:43
>>202
確かめてみたら追加のアイコンはインスタンスハンドルを指定するんですね…見落としていました。

4bit透過色使用アイコンは作成するソフトによっては色抜けしなくなるようです。
GIMP2で漸く色抜けするアイコンが作成出来ました。
本当にありがとうございました。

204:デフォルトの名無しさん
08/05/23 18:02:03
Windows XP、 visual studio .NET(ver2003)でCを勉強し始めたものですが
コマンドライン引数を指定するようなプログラムのソースを書いて実行しても

ファイル名の指定がありません
Press any ker to continue

と出て、うまく行きません。
どうしたらいいですか?

205:デフォルトの名無しさん
08/05/23 18:08:27
プロジェクトのプロパティのデバッグにコマンドライン引数の指定できるとこないか?

206:デフォルトの名無しさん
08/05/23 18:09:13
>>204
デバッガの使い方の話だよね?
プロジェクトのプロパティの「デバッグ」→「動作」→「コマンド引数」が、
デバッガが動かすプログラムに与えられるコマンドライン引数。

デバッガで動かしてるんじゃないなら、コマンドライン引数を与えてあげてください。

207:デフォルトの名無しさん
08/05/23 18:11:07
>>204
それはなあ、おまえのパソコンがハング恩してるんだよ

208:デフォルトの名無しさん
08/05/23 18:28:18
>>205
>>206
コマンドライン引数を指定する場所は見つかりました。
当のプログラムが、コマンドライン引数で指定したテキストファイルの内容を表示するプログラム
何ですが、引数はテキストファイルの絶対パスでいいんですか?

209:デフォルトの名無しさん
08/05/23 18:29:57
いや、、、それを決めるのは君のプログラムでしょ

210:204
08/05/23 18:36:28
こういうプログラムです。

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
FILE *fp;
char ch;
if(argc!=2) {
printf("ファイル名の指定がありません\n");
exit(1);
}
if((fp = fopen(argv[1], "r"))==NULL) {
printf("ファイルを開くことができません\n");
exit(1);
}
if((fp = fopen(argv[1], "r"))==NULL) {
printf("ファイルを開くことが出来ません\n");
exit(1);
}
while((ch==fgetc(fp)) != EOF) putchar(ch);
fclose(fp);
return 0;
}

211:デフォルトの名無しさん
08/05/23 18:41:11
絶対パスでも相対パスでもいいよ。
カレントディレクトリがどこかわからないなら、とりあえず絶対パス入れとけば。

212:204
08/05/23 19:09:13
>>211
絶対パスでやっても

ファイル名の指定がありません

となるんですが

213:デフォルトの名無しさん
08/05/23 19:20:55
>>212
ひょっとして hoge c:\(途中略)Program Files\xxx の様になってないか?
上記例だと、"Program" と "Files\xxx" の間の空白がパラメータ区切りとみなされて
argc=3になってしまう。


214:デフォルトの名無しさん
08/05/23 19:21:58
まず argc の値を出してみろよ。
っつーか、VC++使ってんならそのままブレークポイント置いてargvの中身見てみろよ。

215:デフォルトの名無しさん
08/05/23 19:23:28
うまくいかない→質問
じゃあ進歩しないぜ

216:デフォルトの名無しさん
08/05/23 22:29:09
>>204
あれだ!そのプロジェクトと同じフォルダにテキストファイル置いてるか?なら、相対パスでOkだ。

それか、C:\に適当にテキストファイル作ってたとえば、C:\test.txtだったとすると
それで、hoge C:\text.txtってやってみな。それで表示がおかしかったら、if(argc!=2) ←これがおかしい。
argc!=1じゃないのか?なんでargc!=2にしてあるのかよく知らんけど。そこは、コマンドライン引数の個数をかくんだから
1個しか実行プログラムに引数を与えないなら、argc!=1ってしなきゃならん。

まあ、初心者のうちはそうやって七転八倒しながら覚えるって紋だ!!!!!!!!!

がんばりな。俺も、最初はコピー&ペーストすらしらないような人間がプログラムをやろうとしてたんだ。

いまじゃ、7年目で色々できるようになった。まあ、あれだ。がんがれ。

217:デフォルトの名無しさん
08/05/24 01:21:53
>argc!=1じゃないのか?なんでargc!=2にしてあるのかよく知らんけど。そこは、コマンドライン引数の個数をかくんだから
>1個しか実行プログラムに引数を与えないなら、argc!=1ってしなきゃならん。

いやいやいやいやいやいやいや

218:デフォルトの名無しさん
08/05/24 01:31:40
Express Edition には、リソースエディタがないようですが、
これってなくて大丈夫なんでしょうか?

219:デフォルトの名無しさん
08/05/24 02:01:49
リソースファイルを全部手書きしないといけないってだけで、プログラム事態には支障はない。
可能か不可能かってのなら可能。リソースコンパイラはWindowsSDKにも入ってるから。

220:218
08/05/24 02:54:55
>>219
なるほど、そういうことですか。
じゃあ、書き方さえ分かってればいいわけですね。
ありがとうございました。

221:デフォルトの名無しさん
08/05/24 10:13:58
Windowsアプリ作るにはWTLがないと氏ねるそうですが、VC++2008EEでWTL8.0を使おうにもアプリウィザードに組み込めません。
アプリウィザードを使わなくてもWTLは使えますか?
またWikipediaの解説を見るとATLがないとWTLは使えないようですが、これはWindows SDK for Windows Server 2008 and .NET Framework 3.5に含まれていますか?
選択画面を見る限りなさそうですが…。
因みに当然今は全てWin32APIでゴリゴリ書いています。

>>220
ResEditおすすめ。
IDEに関連付ければソリューションエクスプローラからダブクリで呼び出せるよ。
Unicode版もあるし。
URLリンク(www.resedit.net)

222:デフォルトの名無しさん
08/05/24 10:37:36
>>221
そんなオサレ気なものなくたって、Win32APIがあればまだ5年は戦えるね。

223:デフォルトの名無しさん
08/05/24 13:27:50
ATL7.1がWDKの方に入ってるよ。

224:デフォルトの名無しさん
08/05/24 13:41:13
ちなみに、setup80x.js内の8.0を全部9.0に置き換えて実行すれば、
2008EEでも、WTLのウィザード使えるよ。

225:デフォルトの名無しさん
08/05/24 14:06:23
URLリンク(support.microsoft.com)

226:221
08/05/24 16:50:33
>>222-225
ありがとうございます。
取敢えずヘッダーとx86ライブラリをインスコしてからJScriptのファイルを書き換えて実行し、ウィザードが正常に動作する事を確認しました。
しかしその生成されたコードをそのまま実行してみたら、

fatal error C1083: include ファイルを開けません。'atlbase.h': No such file or directory

となってしまいました。
WTLとWindows SDKのインスコ先を見てもatlbase.hはありません。
WinSDKでまだ何か足りないものがあるのでしょうか。

227:デフォルトの名無しさん
08/05/24 17:06:31
だからWDKに入ってるつーの。

228:デフォルトの名無しさん
08/05/24 18:31:23
すみません。Win32APIっていうのを勉強してるんですが、文字列変数というか
char型の配列名にszなんたらかんたらっていう変数名が多いです。たとえば
szClassName[] とかszText[]とか。。szってなんですかね??

あと、int型の整数を宣言するだけで、初期値を代入せずにいきなり使ってるんですが、
こういうのってありなんですか?なんか、大昔C言語を勉強したときはint i=0;と初期化してからじゃないと
コンパイルエラーが出た覚えがあるんですが。。

すみませんが、おしえてちょんまげ。

229:デフォルトの名無しさん
08/05/24 18:34:13
>>226
Windows Driver Kit
URLリンク(www.microsoft.com)
サインインはいるが、Microsoft Connect Web サイトから無料で、isoイメージをダウンロードできる。

インクルードファイルパスに、"(DDKフォルダ)\inc\crt\atl71"
ライブラリファイルパスに、"(DDKフォルダ)\lib\atl\i386"を追加。

ExpressでのWTLウィザードは、そのままだとATL3.0用になるので、
stdafx.hの中の
#define _WTL_SUPPORT_SDK_ATL3
をコメントアウト。
なぜかATL7.1は、atlthunk.libがライブラリ指定されてないので、
リンクでエラーが出るなら、
リンカの追加の依存ファイルに、atlthunk.libを付ける。

いちいち、書き換えるのが面倒だったら、
WTLテンプレートファイルの方のstdafx.hを書き換えるか、
default.jsの
// Use ATL3 from SDK for VS2005 Express
の項をコメントアウトするといい。

// Linker settingsのところに、
LinkTool.AdditionalDependencies="atlthunk.lib";
で、atlthunk.libをリンク指定できる。




中途半端でほったらかしなWTLなんか使うより、
ATLだけでゴリゴリやった方がいいと思うけどね・・

230:デフォルトの名無しさん
08/05/24 18:41:28
>>228
szはsが文字列、zがナル文字終端を表す。
いわゆるシステムハンガリアンというやつ。詳しくはググれ。

初期値を書かない変数は、あとで使うときに代入しているはず。
うっかりその代入を忘れたときには、
下手に0などで初期化しておくよりも、未初期化のままのほうが検出しやすいとされる。
そのため、(Win32プログラムに限らず)Cでは、
むやみに0初期化するべきでないというのが最近の傾向のはず。

もちろん、適切な値で初期化できるときはするべき。
未初期化変数はバグの温床だから、できればないほうがいい。

231:228
08/05/24 18:44:44
>>230
どうもありがとうございます。よくわかりました。sが文字列でzがナル文字なるほろ。。

初期化についてもよくわかりました。

本当にどうもありがとうございました。

232:デフォルトの名無しさん
08/05/24 19:23:22
> 個人用に設定されたコンテンツやベータ プログラムへの参加の機会をご提供するために、Microsoft Connect 上での皆様の活動がモニターされ、個人情報にアクセスされる場合があることについても同意するものとします。

この文章の示す個人情報とは何なのでしょうか。
URLリンク(privacy.microsoft.com)
を読んでも特定出来ず、不安で登録出来ません。

233:デフォルトの名無しさん
08/05/24 20:02:29
こんなところで聞かなくても
電話かメールで問い合わせできるはず

234:デフォルトの名無しさん
08/05/24 21:35:42
すみません質問なんですが、VC++で、

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e){
double A,B,C;
A = double::Parse(textBox1->Text);
B = double::Parse(textBox2->Text);
C = A + B;
textBox3->Text = "答えは" + Convert::ToString(C) + "です";


こんなプログラムを作ったのですが、textbox1と2に何も入れないでボタンをクリックすると
エラーが出てしまいます。textbox1と2に0をあらかじめ代入する方法も試したのですが、見栄えが悪いので、
何も数字が入力されていないとき、「入力してください」などのダイアログを表示する方法を教えてください。

235:デフォルトの名無しさん
08/05/24 22:27:35
>>234
textBox1->Textが""ならdouble::Parseしないで、
入力を求めるMessageBoxでも表示すればいい。

236:デフォルトの名無しさん
08/05/24 22:28:43
>>232
実際に何かやろうとすれば、
メールアドレスとか住所氏名を入力する欄が現れる。

237:234
08/05/24 23:21:55
>>235
素早い回答ありがとうございます。

if(textBox1->Text == ""){MessageBox::Show("数字を入力してください");}
else{A = double::Parse(textBox1->Text);}

if(textBox2->Text == ""){MessageBox::Show("数字を入力してください");}
else{B = double::Parse(textBox2->Text);}

こんな感じで出来ましたが、結局Cを計算しようとしてしまいます。
Aが入力されていない時点で、プログラムを停止させることは出来るのでしょうか?

238:デフォルトの名無しさん
08/05/24 23:38:55
>>237
全然内容読んでないけどAが入力されていなければexitすれば良いんじゃないかな?

239:デフォルトの名無しさん
08/05/24 23:56:19
>>237
return


240:デフォルトの名無しさん
08/05/24 23:59:21
>>239
return 0; でやってましたw
大変参考になりました。また機会があればご指導お願いします。

241:デフォルトの名無しさん
08/05/25 04:19:54
すみません、とあるライブラリを使用してプログラムを組んでいるのですが、
_ASSERTを使おうと思ったら
LNK2019: 未解決の外部シンボル _CrtDbgReport が関数 "void __cdecl ほにゃらら"(ちょめちょめ)で参照されました。
というようなリンクエラーが出てしまいました。

crtdbg.hはインクルードしてます。
ためしに新規で作成してみたプロジェクトでは_ASSERTが使えました。

何が原因なのでしょう?
エラーの詳細内容を読んでも理解できませんでした。

ライブラリを使用する際にリンクの追加など、
プロパティを何箇所か変更しています。
環境は Microsoft Visual Stdio. NET 2003 です。

242:デフォルトの名無しさん
08/05/25 08:25:43
原因は分からないけど、リンクの問題っぽいから
リンクの設定をうまくいったのと同じにしたら?

243:デフォルトの名無しさん
08/05/25 08:28:18
>>241
ランタイムライブラリがデバッグ版になってないんじゃないの?

C/C++→コード生成

244:241
08/05/25 14:57:31
>>242-243
レスサンクスです。

>243
>ランタイムライブラリがデバッグ版になってないんじゃないの?

まさしくこれでした。
プロパティをいじっている時に構成を「すべての構成」にしていたので、
ランタイムライブラリをマルチスレッドに変えた時にも
リリース版のマルチスレッド設定にしてしまってました。

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

245:デフォルトの名無しさん
08/05/25 16:54:36
eMbedded Windows CE Visual C++を入れたら
「Virtual PC/Windows CE エミュレータ」で、 Windows が不安定になるのが発生します。
ってメッセージが起動のたびに出るようになって、修復する方法を書いてあるページを見つけたんですが、
URLリンク(support.microsoft.com)
日本語の意味が分かりません。ここの解決方法をどなたか翻訳してください。

246:デフォルトの名無しさん
08/05/25 19:31:08
boot.iniに/executeオプション足せ、って書いてある。

247:デフォルトの名無しさん
08/05/25 19:52:03
C++を最近始めたんですが、何度プログラムを組んでも言葉の意味がなかなか分からなくてこのままで大丈夫かなぁと思っています。
最終的にはゲームを作ることを目標にしてるんですが、このままで大丈夫でしょうか…不安で仕方がないです。



248:デフォルトの名無しさん
08/05/25 22:43:50
>>247
振り向いたら負け

249:デフォルトの名無しさん
08/05/26 00:36:56
ある画像A.bmpと、その背景にあたるB.bmpが別々にあって、
A.bmpを上に、B.bmpを下にして1枚の絵に表示させる

といった内容のモノを作りたいのですが(画像処理?)何か参考になるソース、もしくはHPがあったら教えていただけませんか?

250:デフォルトの名無しさん
08/05/26 03:52:45
単純にB,Aの順番で描画すればいいんじゃない?

251:デフォルトの名無しさん
08/05/26 07:40:58
すみません、質問は「リストのインデックスが範囲を超えています(0)」というエラー
が出るのですが。この(*)の*の数字の詳細が知りたいのですが。(-1とか6とかいろいろある)
よろしくお願いします。

252:デフォルトの名無しさん
08/05/26 07:52:02
だから板違いだっつーの。

253:デフォルトの名無しさん
08/05/26 08:17:17
なんだ 同じかww

254:デフォルトの名無しさん
08/05/28 16:01:46
引数のところで書かれてる__outの目的がよくわかりません。
OUTというマクロはプリプロセッサで無かったことにされてるみたいですが・・・
検索してみても、日本語で解説してあるページを見つけられませんでした。
どなたかお願いします。

255:デフォルトの名無しさん
08/05/28 17:02:58
日本語で質問お願いします。

256:デフォルトの名無しさん
08/05/28 18:08:23
エスパーすると、その引数のところに結果を返しますよ
ということをプログラマに知らせるだけの記号。

257:デフォルトの名無しさん
08/05/28 18:24:22
>>254
__outは/analyzeオプション用

258:デフォルトの名無しさん
08/05/29 00:35:26
すみません、教えてください。

win32環境で作ったVC++プロジェクトをマネージ環境に移行するためにはどうすればいいのでしょうか。

.NET用プロジェクトを作ってソースを1つずつ移していくしかないのでしょうか?

259:デフォルトの名無しさん
08/05/29 08:43:43
ctrl+a

260:デフォルトの名無しさん
08/05/29 23:15:29
質問です
2008VC++で、GetWindowTextWで取得したCStringをdoubleに変換したいのですが、うまくいきません
コードの書き方を教えてください

261:デフォルトの名無しさん
08/05/29 23:41:08
どう書いて、どううまくいかなかったのか書け。

262:デフォルトの名無しさん
08/05/29 23:46:42
GetWindowTextW→CString→doubleのどの段階でうまくいかないのだ?

CStringよりもstd::stringにしとけ


263:デフォルトの名無しさん
08/05/29 23:50:39
double AA,BB,CC;
CString str,AAA,BBB,CCC;

GetDlgItemText(IDC_EDIT1,AAA);
GetDlgItemText(IDC_EDIT2,BBB);

AA = atof( (const char*)AAA.GetBuffer(0));
BB = atof( (const char*)BBB.GetBuffer(0));
CC = AA + BB;
CCC.Format(_T("%f"),CC);
str = CCC +_T("が表示されます。");
SetDlgItemText(IDC_EDIT3, str);

こんな風にしたんですが、EDIT1に11.11、EDIT2に22.22を入力すると
"3.000000が表示されます。"と表示されてしまいます

264:デフォルトの名無しさん
08/05/29 23:56:48
うにコードで(const char*)がマズイ


265:デフォルトの名無しさん
08/05/30 00:07:49
すみません。何度も申し訳ありません。質問させてください。

自作のdllを遅延読み込みしたいのですが、
「LNK2001: 外部シンボル xxxx は未解決です。」となってしまいます。
具体的な手順が理解できなくて、
以下の手順でやってるんですが、何か勘違い、抜けなどありますでしょうか。

①dllはexeが作成されるディレクトリに先に作成されます。
②dllの関数のプロトタイプを列挙しているヘッダファイルを、
 exe側でプロパティでパスを追加した上でincludeする。
③リンカの「遅延読み込み」に自作のdll名を入れる
④exe側で「LoadLibrary(dll名)」を行う
⑤exe側でdll内の関数を呼び出す。

よろしくお願いします。

266:デフォルトの名無しさん
08/05/30 00:13:57
遅延読み込みはスタティックリンク
LoadLibraryはダイナミックリンク


267:デフォルトの名無しさん
08/05/30 00:35:27
>>264
ありがとうございます。解決しました

268:デフォルトの名無しさん
08/05/30 00:53:42
>>266
ありがとうございます。
ヒントを頂き、ちょっと調べてみました。
①LoadLibraryを消す
②「追加の依存ファイル」に xxx.lib を追加
  ③呼び出し側「#pragma comment」とかする必要がありそう
    ⇒"遅延読み込み"モードだからいらない???
④肝心の.libが見つからない
  ⇒それくらいはどうにか自分で解決します。。。

早めに間違い・勘違い指摘いただけましたら
すごく助かります。。。


269:デフォルトの名無しさん
08/05/30 01:26:44
6月にマネージャパン、月刊アスキー、週刊アスキーの3誌が賞金総額2000万円の「シストレFXグランプリ」を開催
URLリンク(system-trading.jp)
5月22日より登録受付開始、6月2日よりグランプリ開始の予定。


URLリンク(www.fx-gp.com)
●社長特別賞(シストレソフト買取価格) 10,000,000円
●シストレソフト部門賞 1位300万円 2位100万円 3位50万円
●トレード部門賞 1位300万円 2位100万円 3位50万円
●前期MVP賞 50万円
●後期MVP賞 50万円
URLリンク(www.click-sec.com)

270:デフォルトの名無しさん
08/05/30 10:47:51
VC++ 2005 を利用しています。OS は XP Pro SP2 です。
次のコードを書くと、Debug ビルドでは問題なく動きますが Release ビルドでは
アプリケーションが強制終了することがあります。なぜでしょうか?

// ゼロでクリアされた構造体を用意する関数
template < typename T >
T zeroStruct() { T t; memset( & t, 0, sizeof( T ) ); return t; }

void main() {
 A a = zeroStruct< A >(); // A は構造体の型
}


271:デフォルトの名無しさん
08/05/30 12:17:48
>>268
dllをスタティックにリンクするにはdllimportを使う。externだけじゃ呼べないよ。といってみる。
自作dllを作ったならdllexportを使ってると思うからその逆の使い方だ。

272:デフォルトの名無しさん
08/05/30 12:18:40
またmemset()厨か。

273:デフォルトの名無しさん
08/05/30 13:20:30
>>270
それだけの用途なら、そんな滓みたいなテンプレート関数作る必要なんてさらさらないじゃん。
A a = {0}で充分。

274:270
08/05/30 13:52:27
>>273
 A a = {0} なんて書き方があったんですか。ありがとうございます。
 わざわざ関数呼ばずとも、こちらを使った方が断然良いですね。


275:デフォルトの名無しさん
08/05/30 14:09:04
CHAR chStr[128];

wsprintf(chStr , "インスタンスハンドル : %d" , hInstance);
MessageBox(NULL , chStr , TEXT("Kitty on your lap") , MB_OK);

URLリンク(wisdom.sakura.ne.jp)
これやると

'MessageBoxW' : 2 番目の引数を 'CHAR [128]' から 'LPCWSTR' に変換できません。(新しい機能 ; ヘルプを参照)指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。

っていわれるんだけど・・。なんか昔やってたソースを2008でやろうとしても同様にエラーがでる・・。
関数にcharのlong pointerの引数があったらそこに単純に"abc"ってやってもpointerわたしてるんだよね?

276:デフォルトの名無しさん
08/05/30 14:27:35
作者じゃないから TCHAR じゃなくて CHAR を使う意図がわからない
下の方ではTCHAR 使ってるし

277:デフォルトの名無しさん
08/05/30 14:31:29
だからそんな間違いや過去の遺物だらけのサイトで勉強しちゃダメだって。

278:デフォルトの名無しさん
08/05/30 15:57:13
初心者には良いか悪いか分からないし(´・ω・)

279:デフォルトの名無しさん
08/05/30 17:43:44
VC++ 2008で、windowsフォームアプリケーションのスケルトンを作成したところ、

LRESULT CALLBACK WndProc(HWND, UINT , WPARAM, LPARAM){

みたいなメインループ部分が見当たりません。
メインループさせたい場合、どのように書けばよいですか?

280:デフォルトの名無しさん
08/05/30 17:46:47
とりあえず、.NET Frameworkについて勉強しようか。

281:デフォルトの名無しさん
08/05/30 17:59:23
>>279
Win32アプリケーションのプロジェクトを作ればいいと思うよ。

282:デフォルトの名無しさん
08/05/30 19:07:50
charとかLPSTRとかstrcmpとかstrcatとか_atoi_sとか
C#から入ってきたので文字列周りの処理が死ぬほどムズイ
文字列処理に特化して説明してるHPとかありませんか

283:デフォルトの名無しさん
08/05/30 19:12:31
ソース読んでデバッガでトレースすれば理解できるよ

284:デフォルトの名無しさん
08/05/30 22:41:49
lexical_castで。

285:デフォルトの名無しさん
08/05/31 00:34:25
VBAの処理時間短縮のためVC++でDLLを作って処理させようと思ってます。
VC++はいじったことないのでお勧めの書籍あるいはURL等ありましたら
教えて貰えませんか。

286:デフォルトの名無しさん
08/05/31 00:42:18
>>285
とりあえず本屋で適当に選んできなよ

287:デフォルトの名無しさん
08/05/31 07:57:34
>>282
std::stringを使えばいい

288:デフォルトの名無しさん
08/05/31 11:49:37
>>279
CLR使わなきゃいい

289:デフォルトの名無しさん
08/05/31 12:33:09
リソースキットツールってのは必要なの?

290:デフォルトの名無しさん
08/06/01 01:31:59
gccの拡張機能のweakシンボルと同等のことを
VCでするにはどうすればよいでしょうか?

291:デフォルトの名無しさん
08/06/01 19:13:16
2008なんですがコマンドラインからの引数を受け取って
動作をデバッグするにはどうしたらいいんでしょう?
具体的には

int main( int argc, char** argv ){

の引数をいろいろ変えながらデバッグしたいんですが・・・。

292:デフォルトの名無しさん
08/06/01 19:16:26
と、思ったんですが、すごい勢いで解決しました。
すごいよMSDNむすどんむすどん。

293:デフォルトの名無しさん
08/06/01 20:01:16
Thumb.dbのフォーマットを解説してるサイトとかって存在しますか?

294:デフォルトの名無しさん
08/06/01 23:59:57
VC++ 2005 でsprintfを使うと警告が出るのですが。
sprintf(msg1,"%d:%s",no,str);
警告 1 warning C4996: 'sprintf' が古い形式として宣言されました。 c:\_将棋\fj-sai\fai001\fai001\メッセージ送信1.cpp 33
この警告を出さなくする方法ありませんか?

295:デフォルトの名無しさん
08/06/02 00:07:29
日本語ファイル名かよw

296:デフォルトの名無しさん
08/06/02 00:14:43
>>294
#pragmaで抑制できたはず。
詳しくはググれ。

297:デフォルトの名無しさん
08/06/02 00:15:09
>>294
sprintfを使わずに、boost::formatを使う。

298:デフォルトの名無しさん
08/06/02 00:21:24
>>296
出来ました.ありがとうございます。
>>297
調べてみます。ありがとうございました。

299:デフォルトの名無しさん
08/06/02 00:42:52
>>291

300:デフォルトの名無しさん
08/06/02 00:47:04
>>291

メニュー[プロジェクト] -> プロパティ -> デバッグ -> コマンド引数

を変更すればおkなはず。

面倒なときはイリーガルだけど、

#ifdef DEBUG
char* argv_[2] = { "application", "" };

argc = 2;
argv = argv_;
#endif

みたいにでばっぐしてみればどう?



301:デフォルトの名無しさん
08/06/02 06:42:55
>>292

302:デフォルトの名無しさん
08/06/02 07:12:08
>>299
できるよ。
以上。
はい、次。

303:MFC始めて2日目
08/06/02 10:42:54
ファイルの読み込みをやろうとして
void CDeepPurpleDoc::Serialize(CArchive& ar)
{
CString ss;
// CEditView は、すべてのシリアル化を処理するエディット コントロールを含んでいます。
reinterpret_cast<CEditView*>(m_viewList.GetHead())->SerializeRaw(ar);

if(ar.IsStoring())
{
ar << ss;
}
else
{
ar >> ss;
}
}
既存のテキストファイルを開こうとしたら
予期しないファイル形式
というエラーが出た。
シリアライズってなんだ?

304:デフォルトの名無しさん
08/06/02 11:12:43
URLリンク(www.vipper.org)
VC++2008で、BとCの下のスピンボタンの値を足し算して、Aの下の部分に表示したいんですが
どのように記述すれば値を取得して計算・表示できるのでしょうか?

305:デフォルトの名無しさん
08/06/02 12:21:03
スピンボタンの値を取得するサンプルならそこらじゅうにあるだろ

306:デフォルトの名無しさん
08/06/02 15:37:34
>>304
Bの下、Cの下、それぞれのスピンボタンの値を取得し、それらを加算してから文字列に変換し、
Aの下に直接書き込むか或いはAの下に配置したスタティックテキストを書き換えれば宜しい。

307:デフォルトの名無しさん
08/06/02 20:37:05
シリアライズってのは、「専用形式」で「なるべく簡単に」
オブジェクトを保存・読み込みする、みたいなコンセプト。
そこいらにあるファイルをデシリアライズするのは大変。

308:デフォルトの名無しさん
08/06/02 23:28:04
>>271
遅くなりましたが、今、無事できました!
コンパイルもリンクもうまくいき、
ちゃんとdll内の関数も呼び出せました!
本当に、ありがとうございました。

309:デフォルトの名無しさん
08/06/03 21:41:31
CStringってすごいな。これを使えば2バイト文字の扱いが楽だな。
これはMFCなのか、ATLなのか。

310:デフォルトの名無しさん
08/06/04 00:57:20
今は共用になってる

311:MFC始めて3日目
08/06/04 14:32:28
void CDeepPurpleDoc::Serialize(CArchive& ar)
{
reinterpret_cast<CEditView*>(m_viewList.GetHead())->SerializeRaw(ar);

BYTE* pByteBuff;
CEditView* pEditView = ((CEditView*)m_viewList.GetHead());

if(ar.IsStoring())
{
CFile* pFile = ar.GetFile();
UINT size = (pEditView->GetEditCtrl()).GetWindowTextLengthA();
pByteBuff = new BYTE[size + 1];
UINT len = (pEditView->GetEditCtrl()).GetWindowTextA((LPTSTR)pByteBuff,size + 1);
pByteBuff[len] = 0;
pFile->Write(pByteBuff,len);
}
else
{

}
delete pByteBuff;
}
とやってファイルに書き込むと2回書き込まれる。
MFCがなにかやってるのか。


312:デフォルトの名無しさん
08/06/04 14:42:10
SerializeRaw したあと同じものを自分でも書いてんの?

313:MFC始めて3日目
08/06/04 15:07:56
SerializeRawの1行を削除したらエラーになった。
(ソースコードの else の行に矢印がついてプログラムがストップ)

314:MFC始めて3日目
08/06/04 15:16:44
うまくいった。
(313 はデバッグの機能が働いただけだった)

>>307
>>312
ありがとう。

315:デフォルトの名無しさん
08/06/04 19:30:51
VC++使い始めて間もないのですが、質問させてください

現在MSVC++2005ProのMFCを用いてソフトを作ろうと考えております
一次元での温度分布をグラフィック表示するものを作ろうと考えていて
物体の二点の温度を入力した際に、その間を一次関数的に温度が増減すると仮定した上で
その温度分布をモノクロの色の濃さで表現するようなものを作りたいと思っています

このようなグラデーション表示を描画するためにはどのようにすればよいのでしょうか?
よろしくお願いいたします。

316:デフォルトの名無しさん
08/06/04 19:58:18
static void CALLBACK TimerProc(UINT uTimerID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2){}
の中で、同クラス内のフィールドを参照したい場合どうすればいいの?
ふつーに参照しようとすると、
関数呼び出しには引数リストがありません。
って言われるんだけど・・・

317:デフォルトの名無しさん
08/06/04 20:57:54
非staticメンバにアクセスしたいなら、クラスのインスタンスをどうにかして得る。

318:デフォルトの名無しさん
08/06/04 21:17:41
そのためのDWORD dw1とDWORD dw2

319:デフォルトの名無しさん
08/06/04 22:01:21
使用環境VC++2008 Expressで、win32コンソールアプリケーションのプロジェクトです
下記のコードをビルドして実行すると点数の表示が-184563みたいに変な数字になってしまいます
どうすればちゃんとしたのを作れるでしょうか?
Visual Studio 2008 コマンドプロンプトからコンパイルすれば思ったとおりの結果になります
#include<stdio.h>

int main(void)
{
int score;
printf("点数を入力してください:");
scanf_s("%d",&score);
if (score > 100) score = 100;
printf("あなたの点数は %d 点です。");
return 0;
}

320:デフォルトの名無しさん
08/06/04 22:18:11
printf("あなたの点数は %d 点です。",score);


321:デフォルトの名無しさん
08/06/04 22:58:10
>>320
できました
ありがとうございます

322:デフォルトの名無しさん
08/06/04 23:10:32
C言語なら俺に聞け(入門篇) Part 29
スレリンク(tech板)

323:デフォルトの名無しさん
08/06/05 11:29:24
>>317 どうやるの?

324:デフォルトの名無しさん
08/06/05 20:28:29
CStringってATLでも使えるようになったんだ
MFCじゃなくてもOkになってたとは

325:デフォルトの名無しさん
08/06/05 21:41:55
>>323
CALLBACK関数には、クッキーと呼ばれる自由に使っていいパラメータが用意されている場合が多い。そこにインスタンスのポインタを乗せて渡したりする。



326:デフォルトの名無しさん
08/06/05 22:13:37
textBoxに内部処理で得たchar型の2次元配列を表示させるにはどうしたらよいのでしょうか?

textbox->text = 配列変数名

だと型がcharをstringにできないとコンパイルエラーが出てしまいます。
環境は.Net2008です。
よろしくお願いします。

327:デフォルトの名無しさん
08/06/05 22:19:44
>>326
どんな風に出したいのか詳細に決めたら、一気にプログラムを書く

328:326
08/06/05 22:42:30
今思いついたんですけど、
ループで1文字ずつstring型変数に入れて文字列にしてからtextBoxに
入れるしかないんですかね?

329:デフォルトの名無しさん
08/06/05 23:56:16
整形しなくてよければまとめて出せるだろ
文字列だって配列なんだし

330:デフォルトの名無しさん
08/06/06 00:58:38
そもそもなんで二次元配列なんだよ

331:326
08/06/06 01:07:32
読み込むデータが最大64個で
4ビット区切りの16進数が12個並んでるからです。
EE000FF00002みたいな。

それをテキストボックスに1行ごとに表示させたいんです。

332:デフォルトの名無しさん
08/06/06 02:02:58
VC++っていうよりも、C/C++の話なのかもですが。

自作のクラスを.cpp/.hで作って、
それらのファイルをプロジェクトには追加せずに、
.hをインクルードするだけで使うことはできませんか?

イメージは、stdio.hをインクルードしてprintfを使う、みたいな感じで。

ツール→オプション→VC++ディレクトリ、でパスは通してあります。

宜しくお願いします。

333:デフォルトの名無しさん
08/06/06 02:09:07
ライブラリにする

334:デフォルトの名無しさん
08/06/06 06:28:07
全部hに書けばいいじゃんw

335:デフォルトの名無しさん
08/06/06 07:39:01
URLリンク(www.auction.co.jp)

336:デフォルトの名無しさん
08/06/06 09:29:31
>>332
printfと同じようにするなら>>333のいうとおりライブラリにする
ついでに、pragmaいれとけばlibのファイル名指定はいらなくなる
適切な場所にlibをおく必要はあるが。

337:デフォルトの名無しさん
08/06/06 09:38:52
VC++で作ったexeファイルをネットワークドライブに置き、
繋いである他PCから起動するとエラーが発生します。
HDDにコピーせず直接起動させるのにはどうしたら良いでしょうか?
パソコン自体に設定するのではなく、ファイル自体に設定したいので
よろしくお願いします。


エラー内容
問題が発生したため、.exeを終了します。
ご不便をおかけして申し訳ありません。

338:デフォルトの名無しさん
08/06/06 11:12:33
URLリンク(deki.psv.org)
みたいなツールを作ろうと思い、keybd_eventでキーイベントを発生させてみたのですが、
MHFでキーイベントを認識してくれません.(JoyToKeyは認識する.)
どうすればよいでしょうか?

339:デフォルトの名無しさん
08/06/06 11:22:08
ここって何でも相談室だっけ?

340:デフォルトの名無しさん
08/06/06 13:54:47
>>333
>>336
ありがとうございます。
やっぱりライブラリにするべきなんですね。

なるべくならライブラリにはしたくなかったんですが、
とりあえずその線で行くことにします。

341:デフォルトの名無しさん
08/06/06 18:35:45
>>339
答えられるものだけ答える側が判断して答えればおkなんじゃないの?

342:デフォルトの名無しさん
08/06/06 19:07:01
遠まわしにスレ違いを指摘してやってるだけだろ

343:デフォルトの名無しさん
08/06/06 19:21:30
MinGWにて作成したDLLをVC++にて呼び出そうと下記のようなソースをコーディングしました。
DLL作成側で生成したポインタのハンドラを呼び出し側に渡そうと
引数にて受け渡ししようとしていますが、
呼び出し側で確認をすると、ハンドラの値は0のままです。
DLL連携をすると引数受け渡しは不可能なのでしょうか?

■DLL作成側(MinGW)
●cpp
extern "C" __declspec(dllexport) int __stdcall GeoOpen(char* chrLicence, char* chrGeoDBDir, char* chrNormalize, long* lngHandler) {
Geo *geo = new Geo();
lngHandler = (long*)geo;
return 1;
}

■DLL呼び出し側(VC++)
●h
typedef int (__stdcall *GEOOPEN)(char*, char*, char*, long*);
●cpp
GEOOPEN geoOpen = (GEOOPEN)GetProcAddress(hGEOCODERDLL, "GeoOpen@16");
long* lngHandler;
if (geoOpen != NULL) {
int intRes = (*geoOpen)(chrLicence, chrGeoDBDir, chrNormalize, lngHandler);
}

344:デフォルトの名無しさん
08/06/06 19:59:22
そもそもDLL側で作成したポインタのハンドラ貰っても
またDLLに渡す頃には消失されてる・・・のかな?


345:デフォルトの名無しさん
08/06/06 20:05:56
>>343
int型の値を引数で返すには、引数をint*やint&にするだろ。
それと同じで、long*型の値を引数で返すには、long**やlong*&にしないといけない。

346:デフォルトの名無しさん
08/06/06 20:41:03
>>340
プロジェクトに属するcppファイル内で使用したいcppをインクルードするという方法を
ときどき使ってる。

347:346
08/06/06 20:42:35
プロジェクトに属するcppファイル内で、
使用したいcppをインクルードするという方法をときどき使ってる。

// CppIncluder.cpp
#include "included.cpp"

348:デフォルトの名無しさん
08/06/07 08:20:23
>340
DOS時代はコンパイルだけしといて
バッチファイル内のリンカのコマンドラインにobjファイル追加してた。

今はVCなのでプロジェクトに追加するだけ。

349:デフォルトの名無しさん
08/06/07 14:02:41
まあそのうちprintfがどこに入ってるかを知ることになるだろう

350:デフォルトの名無しさん
08/06/07 14:36:34
Visual Studio 使ってる場合で、ちょっとした言語仕様とか
確認するために簡単なプログラムを書いて試したい時、
どうしてますか?

351:デフォルトの名無しさん
08/06/07 14:58:15
コマンドラインから cl してるな。俺は。

352:デフォルトの名無しさん
08/06/07 15:06:16
テスト用に使ってるプロジェクトがある

353:350
08/06/07 15:31:37
>>351
>>352
ありがとうございます。

コマンドラインで cl することにしました。
こりゃいいですね。こういうの無いと辛いです。


354:デフォルトの名無しさん
08/06/07 19:15:40
const int size = (int)pow( (double)2, (double)10 );
int ary[size];

上記のようなコードを書いたところ、コンパイルエラー
error C2057: 定数式が必要です。
となりました。
sizeはconst指定なので問題ないように思ったのですが、
何か解決策はありますでしょうか?

355:デフォルトの名無しさん
08/06/07 19:40:36
vector じゃだめ?

356:デフォルトの名無しさん
08/06/07 19:46:54
>>354
pow

357:デフォルトの名無しさん
08/06/07 19:48:44
>>354
#define POW2_10 (1024)

358:354
08/06/07 19:56:24
そうですね。おとなしくvectorを使うことにします。
gccでは通ったのでVCでもと思ったのですが…。
ありがとうございました。

359:デフォルトの名無しさん
08/06/07 20:40:22
int main()
{
CoInitialize(NULL);

// 内部でCOMを使うクラス
COMClass cClass

CoUninitialize();
return 0;
}
ってやった場合先にCoUninitialize();が呼ばれそうですが
cClassのデストラクタでRelease()出来ますか?


360:デフォルトの名無しさん
08/06/07 20:44:41
>>358
一応言っておくが、VCではなぜダメかというと
C99に対応してないので可変長配列が使えないから。

361:デフォルトの名無しさん
08/06/07 20:52:21
>>360
可変長配列が普通の配列と同じように宣言できるの?
それってヤバくね?

362:デフォルトの名無しさん
08/06/07 21:01:18
>>359

int main()
{
  class inner_
  {
  public:
    inner_() { CoInitialize(NULL); }
    ~inner_() { CoUninstialize(); }
  }

  inner_ in;

  COMClass cClass;
  return 0;
}



363:デフォルトの名無しさん
08/06/07 21:03:21
>>362
なるほど!ありがとうございます!

364:デフォルトの名無しさん
08/06/07 21:45:55
>>358
可変長配列の話じゃなくて、constつけてるのになぜ定数にならないかという話だと思う。

365:デフォルトの名無しさん
08/06/07 21:52:15
>>364
関数呼び出しは静的じゃないからな。
constexpr を待ってくれとしか。

まあ、2の累乗ならビットシフトでできるから
そっちでやればいいけどね。

366:デフォルトの名無しさん
08/06/08 03:25:26
strcat(a, b);

ってやると aのサイズが1で
bのサイズが1を超えててもおKみたいなんだけど
勝手にaのサイズをかえてくれるってことでつか?
勝手にサイズ変えてくれるならどんなサイズでも問題ないよね?
って思ってどんどんstrcatしつづけるとそのうち原因不明のエラーが
で、aのサイズを増やすとエラーでなくなる

367:デフォルトの名無しさん
08/06/08 03:28:08

バッファを超える文字列入れると
他の変数の置いてあるメモリを破壊するぜ。

368:デフォルトの名無しさん
08/06/08 08:43:30
>>366
たまたまエラーにならなかっただけでしょう。

369:デフォルトの名無しさん
08/06/08 13:09:28
>>367 368
トンクス やっぱりそれなりのサイズを用意しないとだめですか
そろそろstd::stringかCStringあたりを使うのを検討したいと思います

C#からきたのでString型でたいがいのことが済んでしまう環境に慣れてて
辛いです


370:366
08/06/08 16:16:52
最初はつらいでしょうね。使える環境であればstd::stringの使用を勧めます。

371:デフォルトの名無しさん
08/06/08 16:17:35
370は366でなく368

372:デフォルトの名無しさん
08/06/09 11:01:21
visual studio 2005のWindowsフォームアプリケーションで作成中です。

String^ str = "12345";

この文字列を数値に変換する方法を教えていただけませんか?


373:デフォルトの名無しさん
08/06/09 14:24:24
int num = int::Parse(str) ;

374:デフォルトの名無しさん
08/06/09 16:10:37
ありがとうございます。
無事解決しました。

375:デフォルトの名無しさん
08/06/09 17:20:01
質問させて下さい。
以下のような2つのクラスを作成しました。
目的は clbBクラス を clsAクラス に包含させるためです。
これをコンパイルすると C2061 エラーが発生します。
どなたか問題点とその対応を御教授いただけると幸いです。

//--------------------------------
// clsA.h
//--------------------------------
#include "clsB.h"
class clsA
{
public:
clsA();
virtual ~clsA();
private:
clsB m_b;
}

//--------------------------------
// clsB.h
//--------------------------------
#include "clsA.h"
class clsB
{
public:
clsB();
virtual ~clsB();
private:
clsA m_a;
}


376:デフォルトの名無しさん
08/06/09 17:23:43
>>375
勉強しなおすことをお勧めするよ。(マジデ)

377:デフォルトの名無しさん
08/06/09 17:36:24
無限に巨大なクラスインスタンスを作成しようとしている人がいると、飛んで来ました。
クラスが無限ループしている…ブルブルガクガク…

378:デフォルトの名無しさん
08/06/09 19:00:30
【初心者歓迎】C/C++室 Ver.54【環境依存OK】
スレリンク(tech板)

C++相談室 part62
スレリンク(tech板)


379:デフォルトの名無しさん
08/06/09 19:09:09
恥ずかしながら375です。
これではどうなのでしょうか?だめなら↑に行きます・・・
よろしくお願いします。
//--------------------------------
// clsA.h
//--------------------------------
#include "clsB.h"
class clsA
{
public:
clsA();
virtual ~clsA();
private:
clsB m_b;
}

//--------------------------------
// clsB.h
//--------------------------------
class clsA;
class clsB
{
public:
clsB();
virtual ~clsB();
private:
clsA m_a;
}


380:デフォルトの名無しさん
08/06/09 19:19:14
逝ってこい

381:デフォルトの名無しさん
08/06/09 19:51:18
>>379
スレで聞いて解決というレベルの話ではなく>>376の言うとおりだと思うよ

382:デフォルトの名無しさん
08/06/09 20:38:23
AはBを持っていて、そのBはAを持っていて、そのAはBをもっていて、そのBは(ry

383:デフォルトの名無しさん
08/06/10 01:33:13
関数の中で文字列の長さを取得しようとしているのですが、
どんな文字列を入れても「4」しか返ってきません。
関数は
int func(char*strName, char strValue[])
の様にして、関数内で
int intValue1 = (int)sizeof(strValue1);
としています。
関数の外で(int)sizeof(strValue1)する分には正しい数値が得られます。
どうしたら関数内で正しい文字列の長さを取得できますでしょうか?


384:デフォルトの名無しさん
08/06/10 02:48:04
strValue1って何を指してるんだか
strValueのことだとしても、関数の外(呼び出し元ってことだよね?)だろうが中だろうがsizeofでは文字列長は取れない
文字列の長さなら素直にstrlenでも噛ませばよかろう

つーか、VC++じゃないよね
>>378の方が勉強になるんじゃない?

ついでなので
>関数の外なら正しい数値が得られる
文字列長ではなくて多分配列長(文字列長+終端文字の1バイト)が取得できていると思われる


385:デフォルトの名無しさん
08/06/10 12:55:43
>>384
ありがとうございました。

strlenでうまくいきました。

配列長が関数の引き数からは

うまくとれないのは渡し方の問題

ですかね?初心者スレで検索・質問

してみます。

386:デフォルトの名無しさん
08/06/10 13:33:12
つくづく思うんだが、なぜ先に質問しようとか考えるんかね?
俺だったら自分で調べようと思うが

387:デフォルトの名無しさん
08/06/10 13:58:00
ググったりすると、それに関連した事も書いてあったりして
知りたい情報に関連する知識も得られたりするよね。

388:デフォルトの名無しさん
08/06/10 14:00:00
sizeofはコンパイル時に確定するが、
その関数じゃ実行時にしか長さわからんだろ。

389:MFC始めて2週間目
08/06/10 14:58:06
CEditView で
Rect を指定してテキストを印刷するとき
行間値の調整はどうするの?

390:デフォルトの名無しさん
08/06/10 15:08:20
vs2005 使ってるんですが、デバッガ変数ウィンドウで
配列の全要素を並べて表示することは出来ないのでしょうか?
変数一個一個しか確認できないので配列の全要素の値を追いたいときにすごく面倒なんです


391:デフォルトの名無しさん
08/06/10 15:09:47
配列名だけ書いておいたら勝手にツリー表示されないか?

392:デフォルトの名無しさん
08/06/10 15:17:07
ああ勘違いしてました。
配列じゃなくて、ポインタにnewした複数個のデータの表示法でした。
某CWだとツリー表示することが出来るので、VSでも出来ないのかなと・・・

393:デフォルトの名無しさん
08/06/10 15:20:26
最近答えたんだけど、このスレじゃなかったかな。
ウオッチ式のとこ、ポインタ,要素数 でやってみ。
p,100 とか

394:デフォルトの名無しさん
08/06/10 15:25:48
すみません。何をしろと言ってるのかわかりません

395:デフォルトの名無しさん
08/06/10 15:27:57
自分が何やってるのか書き出してみろよ

396:デフォルトの名無しさん
08/06/10 15:32:08
>>393
言ってることがやっとわかりました。
ポインタ変数の名前の後に ,100 と追加すればいいんですね
いや、ポインタ、要素数でググれってことか勘違いしました
見れました。ありがとうございます。
しかし、これってただvc使ってるだけだと気付かないですよね?
ヘルプも見たんですけど、載ってなかったような・・・
こういう機能ってどこで知ったんですか?

397:デフォルトの名無しさん
08/06/10 15:34:10
オレはヘルプたどってってみつけた。

398:デフォルトの名無しさん
08/06/10 15:39:36
ありがとうございました。
自分の調査能力が足りないみたいです

399:デフォルトの名無しさん
08/06/10 15:45:10
ちょっとわかりにくい位置かもね。
この話出たの2008のスレだった。
そこで出たリンクに↓があるのでみてみて。
URLリンク(msdn.microsoft.com)

400:デフォルトの名無しさん
08/06/10 15:49:17
書式指定のところかあ
書式指定でどうこう出来るもんだとは全然思わなかったのでスルーしてました
ありがとうございました

401:デフォルトの名無しさん
08/06/10 20:38:31
VisualC++の頂点を極めあらゆる質問に答えて下さる皆さんに質問があります。

VS2003のVC++のGDI+なんですが、
Font font = new Font(dc, &logfont);
とするとフォントをインスタンス化できますけど、logfontのフォント名に
"@MSゴシック" のように横に傾くフォントを指定すると、うまく指定され
ないように思われます。

たとえば

LOGFONT lf1, lf2;
lf1.lfFaceName = "@MS ゴシック"
Font* font = new Font(dc, &lf1);
font->GetLogFontW(&graphics, &lf2);

というように確認してみると、lf1には確かに"@MS ゴシック"がセットされて
いるのに、lf2には"@"が外れて"MS ゴシック"がセットされてしまいます。

私は何を勘違いしてるでしょうか?

402:デフォルトの名無しさん
08/06/10 21:54:05
ぐぐったらサンプルいっぱい見つかるから
動くの使えばいいんじゃないか?

403:デフォルトの名無しさん
08/06/10 22:25:47
@が付くフォントと付かないフォントって何が違うんだっけ?^^;

404:デフォルトの名無しさん
08/06/10 22:28:47
@が付くと90度振られる

405:401
08/06/11 09:30:19
>>402
何というキーワードでググったんですか?

406:デフォルトの名無しさん
08/06/11 09:59:41
名前よりも優先度の高い項目のセット忘れとか?

407:デフォルトの名無しさん
08/06/11 10:08:30
つーか、変な省略しないできちんと検証したときのコード書けよ。

408:ごー
08/06/11 14:49:52
Visual C++ (2003) のデバッグモードで、
プログラム側からコールスタックの情報を取得することってできる?
__FILE__ と __LINE__ だけでは、その場所の情報しか取れないのが不満。

409:デフォルトの名無しさん
08/06/11 15:34:23
できなきゃプログラム動いてない

410:デフォルトの名無しさん
08/06/11 20:33:26
URLリンク(www.codeproject.com)
こういう話か?

411:デフォルトの名無しさん
08/06/12 22:14:37 BE:280248454-2BP(380)
class test {
public:
test(void){};
~test(void) {};
};


#include <stdio.h>
#include "test.h"

int main() {
test x = new test();
printf("Hello World! \n");
}

1>c:\documents and settings\default\my documents\visual studio 2005\projects\test\test\main.cpp(7) :
error C2679: binary '=' : no operator found which takes a right-hand operand of type 'test *' (or there is no acceptable conversion)
なにこれ?

412:デフォルトの名無しさん
08/06/12 22:16:31
test* x = new test();
にしろといってるんだろ

413:デフォルトの名無しさん
08/06/12 22:35:32 BE:1008893489-2BP(380)
やだ! test x = new test(); にしたいびょん オペレ~タ定義しないといけないにょ?

414:デフォルトの名無しさん
08/06/12 22:41:21
GerDlgIntの戻りがおかしい

unsigned short ss =
(u_short)GetDlgItemInt(
hDlg,
IDC_TBX,
&FLG,
FALSE
);

と書いてるのにIDC_TBXに入力された値と違う値を返すときがある
数値が10000超えたあたりからおかしい


415:デフォルトの名無しさん
08/06/12 23:26:03 BE:672595968-2BP(380)
こういうのって ありびょん?
test x = *(new test());

416:デフォルトの名無しさん
08/06/12 23:37:06
>>415
だめだぴょん

417:デフォルトの名無しさん
08/06/12 23:58:50
>>414
エスパーさんの出番です

418:デフォルトの名無しさん
08/06/13 01:01:42
つーか、65535を越えるとおかしくなるんだろ。

419:デフォルトの名無しさん
08/06/13 11:41:21
>>415
#define test* Test

420:デフォルトの名無しさん
08/06/13 22:28:16
これならおk。
test &x = *(new test());

421:デフォルトの名無しさん
08/06/13 22:36:17
>>411
test x = new test();

test *x = new test();

422:デフォルトの名無しさん
08/06/13 22:41:25
今ずっとURLリンク(www.kumei.ne.jp)これを読んでます。
Visual C++でやってるんですが、ライブラリのファイル?の作り方を教えてください。

423:デフォルトの名無しさん
08/06/13 23:52:05
ライブラリのファイルって?
.libのプロジェクトを作りたいってのなら、
Win32のウィザードでスタティックライブラリを選ぶだけだが。

424:デフォルトの名無しさん
08/06/14 00:20:11
>>423
ごめんなさい。初心者なんで全然わかんないんです。
スタティックライブラリは選びました。プロパティでもスタティックライブラリって
なってるんですが、プロジェクトのファイルの中に.libのついたついたのは
Debugフォルダの中に1つだけあります。それでいいんですか?
.cppのはビルトできたのですが、ライブラリってそれをどこからでも使えるってことですよね?
もしかして新しいプロジェクトではそれをincludeしても使えないんですか?

425:デフォルトの名無しさん
08/06/14 01:03:16
>>424
インクルードするのはlibファイルじゃなくてヘッダ。
ライブラリに入れた関数の、プロトタイプ宣言やらなんやらのヘッダは自分で作らないと駄目。
(あるソースの関数を、別のソースから参照する時と一緒)
libファイルはリンカで結合するものなんで、
VC++のIDEなら、プロジェクトの構成プロパティのリンカ→入力→追加の依存ファイルに
追加しとけばリンクしてくれる。

他にもソース中に、#pragma comment(lib, "hoge.lib") とか書く方法もある (VC++依存)。

426:デフォルトの名無しさん
08/06/14 01:13:34
正直、自分用のプログラムをlib化する意味なんて
ほとんど無いと思うんだが。

427:デフォルトの名無しさん
08/06/14 01:59:09
>>425
すいません。全くできません。上のページの次のページの
#include <time.h>~ return (day_of_week[mytime->tm_wday]);
}を.cppに、int get_time(int *, int *, int *);とchar *get_date(int *, int *, int *);
を.hに、プロジェクト名は1です。構成の種類はスタティックライブラリ。
そしてprivateという別の(構成の種類は実行)プロジェクトのcppに
#include <stdio.h> #include "1.h"~ return 0;}を、(hは空です)とやっている
のですが、1.hをincludeできませんNo file みたいなのになるんです。
そもそもどうなるのかさえわかりません。追加の依存ファイルも候補みたいな感じで
出てきませんし、手打ちで入力してもビルドしても同じ結果です。

428:デフォルトの名無しさん
08/06/14 05:55:24
ライブラリの作り方がわからないんじゃなくて
ライブラリの使い方がわからないんじゃないか?

429:デフォルトの名無しさん
08/06/14 09:26:01
質問です。一応、自分でも調べてみたんですが、分からなかったので・・・
長いので2つに分けます。申し訳ない。

/* windowsapp.h */
class CWindowsApp{
  /* 中略 */
public:
  void Initialize(HINSTANCE,INT,char*,int,int);
  bool CreateWindow(); // 53行目
}
/* windowsapp.cpp */
bool CWindowsApp::CreateWindow() // 48行目
{ // 49行目

  /* 中略 。やってる事は、WNDCLASSを作ってCreateWindowEx()を使って
   ウィンドウを表示させるという流れ */
}
/* script.cpp */
bool initialize(){
  /* 中略 */

  // ウィンドウの作成。成功or失敗をそのまま返す
  // g_WindowsAppInstは、既述したCWindowsAppクラスのインスタンス
  return g_WindowsAppInst.CreateWindow(); // 76行目
}

430:デフォルトの名無しさん
08/06/14 09:26:41
/* エラー */
C:\Program Files\Microsoft Visual Studio\MyProjects\addressbook\windowsapp.h(53) : warning C4003: マクロ 'CreateWindowA' に指定された実引数の数が少なすぎます。
C:\Program Files\Microsoft Visual Studio\MyProjects\addressbook\windowsapp.h(53) : error C2059: 構文エラー : 'constant'
C:\Program Files\Microsoft Visual Studio\MyProjects\addressbook\script.cpp(76) : warning C4003: マクロ 'CreateWindowA' に指定された実引数の数が少なすぎます。
C:\Program Files\Microsoft Visual Studio\MyProjects\addressbook\script.cpp(76) : error C2059: 構文エラー : ','
C:\Program Files\Microsoft Visual Studio\MyProjects\addressbook\windowsapp.cpp(48) : warning C4003: マクロ 'CreateWindowA' に指定された実引数の数が少なすぎます。
C:\Program Files\Microsoft Visual Studio\MyProjects\addressbook\windowsapp.cpp(48) : error C2059: 構文エラー : ','
C:\Program Files\Microsoft Visual Studio\MyProjects\addressbook\windowsapp.cpp(49) : error C2143: 構文エラー : ';' が '{' の前に必要です。
C:\Program Files\Microsoft Visual Studio\MyProjects\addressbook\windowsapp.cpp(49) : error C2447: グローバルスコープで中カッコ ({) が見つかりましたが、対応する関数ヘッダーがありません。

関数のオーバーロードは、引数が異なれば可能というのは調査済みだったのでやってみたら、こんなエラーが・・・
しかし、このCreateWindow()関数の名前を、CreateWndとかCreateWindowCという名前に変更したら、すんなりコンパイルしてくれました。
どうしてこのようなエラーが出るのでしょうか。オーバーロードの条件について、何か勘違いをしているのでしょうか・・・

431:デフォルトの名無しさん
08/06/14 09:33:59
>>430
CreateWindowはマクロでCreateWindowA/CreateWindowsWのどちらかになるが、
さらにCreateWindowAとWの両方ともCreateWindowExAとWを呼ぶ関数マクロになっている。

つまり、関数でないCreateWindowに多重定義は無理だから、ほかの名前にするしかない。
たとえばMFCやATLみたいにCreate()とか。

432:デフォルトの名無しさん
08/06/14 09:42:03
なるほど、そもそも関数のオーバーロードとは少し異なる原因だったのですね。
迅速な対応、ありがとうございました!

433:デフォルトの名無しさん
08/06/14 10:18:12
>>427
プログラミング以前にフォルダとかパスとか判ってなさそう・・・

434:デフォルトの名無しさん
08/06/14 10:24:59
>>433
すいません。
ようするにどうやったら違うプロジェクトで
あるプロジェクトで作った関数を使えるようになるかってことなんですけど。


435:デフォルトの名無しさん
08/06/14 10:57:49
ソースファイルをプロジェクトに追加する。

436:デフォルトの名無しさん
08/06/14 11:06:25
>>435
つまり同プロジェクト内で作った関数のソースファイル、それを
一般化?したヘッダファイルの一対がライブラリってことですか?

437:デフォルトの名無しさん
08/06/14 11:13:07
ヘッダは何のためにあって誰がどこで使ってるかわかってる?

438:デフォルトの名無しさん
08/06/14 11:17:20
>>437
いろんなソールファイル内の関数をメインのソースで使うためのまとめ役?橋架け役?
みたいな感じじゃないんですか?

439:デフォルトの名無しさん
08/06/14 11:21:54
ググれ

440:デフォルトの名無しさん
08/06/14 11:22:25
入門書ぐらいは読め

441:デフォルトの名無しさん
08/06/14 11:26:20
スコープとか理解してるのかな?

442:デフォルトの名無しさん
08/06/14 11:29:17
URLリンク(www.nitoyon.com)
ビルドは何をしている? [VC++の使い方]

443:デフォルトの名無しさん
08/06/14 11:31:50
とりあえず、>>427については、

lib と .h を使うプロジェクトのフォルダにコピーするか、
プロジェクトのプロパティの、
「追加のライブラリディレクトリ」と「追加のインクルードディレクトリ」を設定するか、
#includeと「追加のライブラリファイル」でパスまで指定するか、

好きなの選べ。

最後のは、あんまり推奨しないが・・・

444:デフォルトの名無しさん
08/06/14 12:00:09
>>439めちゃググリましたよ 逆にヘルプでわからなくなった感じです すいません。
>>440入門者のゲームプログラム作る本とか他にも入門書はいくつかやりました。
>>441変数のスコープは知ってますが関数のスコープはわかってないかもしれません。
    ゲームプログラムの本の経験も含めて、1つのプロジェクト内でcppとhを対にしていくつも作る、
    それで各対の関数を引き出す?そしてメインで使うみたいなのはできてるんです。
    要するに疑問というか想像なのは、標準ライブラリみたいにcppとhの対が見えない、タグが無いというか・・
    内部にしまわれてるというか、そうゆう状態で、どのプロジェクトでもhをincludeすれば
    使えるようになる のを作るのがライブラリを作るってことではないのですか?
>>442ありがとうございます!わかりやすかったです。


445:デフォルトの名無しさん
08/06/14 12:10:42
>>443
ありがとうございます。
プロジェクトのプロパティの、「追加のライブラリディレクトリ」に今なにも入ってない状態なんですが、
参照で見ていっても条件に一致するファイルはありません。となります。
そもそもここにどうゆう拡張子のものを追加できるかもわからないので、なぜ、どんな候補が無いかも
全くわからない状態です。

446:デフォルトの名無しさん
08/06/14 12:28:39
なんで候補があるとか思うのか・・・

フォルダの指定だから、ファイルの候補は無くていいんだよ。

447:デフォルトの名無しさん
08/06/14 12:39:48
>>446
今フォルダごと追加のライブラリ ディレクトリに指定しましたが、やっぱり<1.h>をincludeできません。となります。>>427
の状態です。

448:デフォルトの名無しさん
08/06/14 12:52:49
ライブラリとインクルードは別物だし
全然別の場所に置いて使うのが普通

449:デフォルトの名無しさん
08/06/14 12:56:38
釣りじゃないなら、
ライブラリ作成に挑戦するのは、
もうちょっとプログラミングそのものが
判ってからにした方がいいと思うよ。

個人的なライブラリなら、
別にソースファイルのコピーでも十分だし。


ちなみにヘッダをインクルード出来ないのは
ちゃんと.hファイルのあるインクルードディレクトリとファイル名を指定出来て無いだけで、
ライブラリとか関係無いからね。

450:デフォルトの名無しさん
08/06/14 13:04:41
ライブラリとインクルードは全然別の場所に置いてあると考えて下さい。
たまたま同じ場所にあってもいいけど

451:デフォルトの名無しさん
08/06/14 13:20:10
>>448
>>449
>>450
みなさんありがとうございます。ライブラリからincludeしたhの関数を探し出してくる
ぐらいに考えてたのですが、違うようですね。
もうちょっと総合的な本を読んでみたいと思います。

452:デフォルトの名無しさん
08/06/14 13:35:12
いや違わないけど・・
(正確には、includeした関数じゃなくて、
 実際に呼び出しされてる外部関数を探し出す)

君がひっかかってるのは、それ以前の
ヘッダファイルとライブラリファイルの
ディレクトリ指定段階でしょ。

イロハで言えばイ以前だよw

453:デフォルトの名無しさん
08/06/14 14:22:51
>>452
>ヘッダファイルとライブラリファイルのディレクトリ指定段階
こうゆう風に言うんですね。ありがとうございます。

454:デフォルトの名無しさん
08/06/14 15:12:25
#include<1.h>

#include"1.h"
の違い理解してる?

455:デフォルトの名無しさん
08/06/14 15:19:35
高学歴の俺の意見
お前と関わるにおいて高学歴であることが何の意味もなさない(位お前とかどうでもいい)
お前の前で本当の自分(頭がいいこと)でいてもメリットが無い。アホなふりしてるほうがマシ、失敗を笑いにできるから。
お前から吸収できることがないと思われてるってこと。知り合いとしての優先順位の潜在的低さがでてる。
まだ情で関わってもらえるだけ有り難いと思え。

456:デフォルトの名無しさん
08/06/14 15:28:35
コンパイラ・リンカについて勉強するべし。

457:デフォルトの名無しさん
08/06/14 15:32:43
>>454
知りませんでしたが、調べました。自作のhは""で囲むんですね。
ゲーム作りの入門本に似たようなのがあって、
ツール→オプション→ディレクトリを表示するプロジェクトで
ライブラリファイル、インクルードファイルのそれぞれで1のファイルを追加したのですが、
そうすると、未解決のシンボルというエラーに変わりました。

458:デフォルトの名無しさん
08/06/14 15:48:26
>ライブラリファイル、インクルードファイルのそれぞれで1のファイルを追加したのですが、
ディレクトリを指定するところにファイルを追加するというのはどうかと(単なる記述ミス?)。

その関数が記述されてるソースをプロジェクトに追加するのが一番楽。

1.プロジェクト開いてる状態でソースファイルをドロップ。
2.開いたソースウィンド上で右クリック→プロジェクトへファイルの挿入。

これで出来んかな?

459:デフォルトの名無しさん
08/06/14 16:04:55
>>458
ありがとうございます。コマンドプロンプト的なので軽く見た程度
なのでディレクトリ=ファイル=フォルダぐらいな感じの理解しかないんです。

したのやり方ですがもう少し具体的に書いていただけませんでしょうか?
それと既存項目の追加とは違うのでしょうか?

460:デフォルトの名無しさん
08/06/14 16:08:34
いいかげんにしろよ。

461:デフォルトの名無しさん
08/06/14 16:22:57
つーか、ゲームとか作る前にC言語とVCの使い方を習熟するのが先だよチミィ。
そのレベルで教えて君じゃ、ゲーム出来てもバグだらけで遊べんだろうよ。
何のために本やグーグル先生があると思ってるんだね?
味噌汁で顔洗って出直してこい。

462:デフォルトの名無しさん
08/06/14 16:52:50
>>461
わっかりました!みなさんいろいろありがとうございました!

463:デフォルトの名無しさん
08/06/14 16:57:29
習熟までは行かずとも、ある程度使えれば特に問題ないんじゃね


464:デフォルトの名無しさん
08/06/14 17:08:19
>ディレクトリ=ファイル=フォルダ
ダメだこりゃ。

ディレクトリ=フォルダ≠ファイル


465:デフォルトの名無しさん
08/06/14 17:44:33
ディレクトリとフォルダは違う

466:デフォルトの名無しさん
08/06/14 18:04:26
フォルダとは 【folder】 - 意味・解説 : IT用語辞典

省略

WindowsやMac OSではフォルダと呼ぶが、UNIXやMS-DOSでは同様の概念を「ディレクトリ」と呼ぶ。

467:デフォルトの名無しさん
08/06/14 18:05:11
Windows ではシェルから見える物がフォルダ、
シェルを通さず見える物がディレクトリと区別している。

468:デフォルトの名無しさん
08/06/14 18:05:55
してねーよ。

469:デフォルトの名無しさん
08/06/14 18:06:10
してるよ。

470:デフォルトの名無しさん
08/06/14 18:09:29
パスをアイテムIDリストで扱う関数名ではFolderが使われ、
C:\みたいな形で扱う関数名ではDirectoryが使われている。

471:デフォルトの名無しさん
08/06/14 18:10:59
してねーよ。
普通にNTFSフォルダとか言うから。

472:デフォルトの名無しさん
08/06/14 18:11:51
フォルダとディレクトリの違い

一般的な解釈
Windows 95以降 や Mac OS ではフォルダ、 MS-DOS や UNIX ではディレクトリと呼びます。
二つは同義です。

細かく言えば
物理的に存在していて、絶対URI(file:///C:/WINDOWS/ とか)を使って場所を示せるのがディレクトリ。
ディレクトリに、あたかもディレクトリのように見える仮想的なものをあわせたのがフォルダ。
マイコンピュータに入っている「コントロールパネル」などは、フォルダではあるけれど、ディレクトリではありません。


Mac OS: フォルダ、ディレクトリ、パス名について
“フォルダ”とは、ディレクトリを見てわかるように表現したものです。
Finder(図 2 参照)と合わせてフォルダを使うことにより、ファイルシステムを見たり、操作することが理解しやすくなります。
Finder でフォルダからある項目を出したり入れたりすると、基本的なディレクトリが変更されます。
“フォルダ”と“ディレクトリ”という用語は、特に区別する必要がない場合は、同じ意味で使用されることがあります。


面倒だから同じ意味でいいよ。



473:デフォルトの名無しさん
08/06/14 18:13:16
そろそろ>>468=471の弁明が欲しい所だな。

474:デフォルトの名無しさん
08/06/14 18:15:56
>シェルを通さず見える物がディレクトリと区別している。

少なくともこれは間違いだな。

475:デフォルトの名無しさん
08/06/14 18:16:48
この中に意味を理解し、普段から正確に使い分けている人がいるのだろうか…。

476:デフォルトの名無しさん
08/06/14 18:17:32
>>474
シェルって何なのか分かってないんだろうな。

477:デフォルトの名無しさん
08/06/14 18:18:28
>>476>>474がWindowsの言う所のシェルって何なのか分かってないという主張。

478:デフォルトの名無しさん
08/06/14 18:26:40
判ってないのはお前。
ファイルシステムの段階で、フォルダって言ってるんだから、
Windowsシェルは関係無い。

479:デフォルトの名無しさん
08/06/14 19:02:12
こうなると思ったw

480:デフォルトの名無しさん
08/06/14 19:09:52
CreateDirectory
ディレクトリを作成します。ファイルシステムがファイルとディレクトリのセキュリティをサポートしている場合は、
指定されたセキュリティ記述子を新しいディレクトリに適用します。

BOOL CreateDirectory(

LPCTSTR lpPathName, // pointer to a directory path string

LPSECURITY_ATTRIBUTES lpSecurityAttributes

// pointer to a security descriptor

);



481:デフォルトの名無しさん
08/06/14 19:22:22
ディレクトリっていってんじゃん

482:デフォルトの名無しさん
08/06/14 19:23:50
誰もディレクトリとは呼ばないなんて言ってないような。

483:デフォルトの名無しさん
08/06/14 19:33:04
プログラミング環境では慣習や過去からの互換性から、
Directoryを使ってるだけでしょ。
普通は、

>一般的な解釈
>Windows 95以降 や Mac OS ではフォルダ、 MS-DOS や UNIX ではディレクトリと呼びます。
>二つは同義です。

で問題無いよ。

484:デフォルトの名無しさん
08/06/14 19:40:57
マイコンピュータをディレクトリとか言うのはナシだろ

485:デフォルトの名無しさん
08/06/14 19:51:04
みんなオナホのために争わないで!

486:デフォルトの名無しさん
08/06/14 20:34:28
>>484
Macの真似してフォルダにして無かったら、
パネルとか言ってたかもよ。
3.0時代からあった、コントロールのフォルダは
コントロールパネルだし。

487:デフォルトの名無しさん
08/06/14 20:55:49
C++でグラフの描画をしたいんですがなにから手を付けていいのかまったくわかりません
アドバイスまたは参考になるサイトとかあれば教えてください・・・

488:デフォルトの名無しさん
08/06/14 21:04:27
C++にグラフなんてない

489:デフォルトの名無しさん
08/06/14 21:28:11
えーとそれはGUIがどうのこうのって話になってくるのでしょうか?


490:デフォルトの名無しさん
08/06/14 21:32:15
棒グラフ
****************
*******
*************************
************

491:デフォルトの名無しさん
08/06/14 22:24:44
今度 C++ でタイピングゲームを作ることになったのですが、

if,printf,switch,while,int,char

これしかまだ知らないのにできるわけがない。。。


と、いうわけで誰か教えてください(つω・`)

492:デフォルトの名無しさん
08/06/14 22:28:21
>>491
ifとwhileが出来れば大丈夫
プログラムなんてどんなえらそうなこと言っても順次・選択・繰り返ししか出来ないんだから。
それが分かってるんなら後はC++独特の方言を覚えるだけ。

C++の簡単な入門書とかサイトでじっくり勉強してみなよ

493:デフォルトの名無しさん
08/06/14 22:31:29
>>491
あと、キーの読み取り方と、文字の表示方法さえ知ってれば何とかなる。

494:デフォルトの名無しさん
08/06/14 22:41:26
できればサイトのURLお願いします!

495:デフォルトの名無しさん
08/06/14 22:48:48
最初に本を買うことを薦めるぞ。


496:デフォルトの名無しさん
08/06/15 00:34:09
>>484
シェル特殊フォルダ

497:デフォルトの名無しさん
08/06/15 13:54:27
フォルダは概念でディレクトリは実装ってことでいいよ、もう。

498:デフォルトの名無しさん
08/06/15 17:47:18
違うからw

499:デフォルトの名無しさん
08/06/15 18:27:08
マイクロソフトがMacに対するコンプレックスを解消するために、ディリクトリをフォルダーに読み替えたり、拡張子の表示を隠してみたりした。

500:デフォルトの名無しさん
08/06/15 21:13:51
シェルネームスペースではフォルダ
ファイルシステムではディレクトリ

501:デフォルトの名無しさん
08/06/15 22:49:23
ファイルシステムでもフォルダだよ

502:デフォルトの名無しさん
08/06/15 23:02:34
FAT、HPFS、NTFS ファイル システムについて
URLリンク(support.microsoft.com)

フォルダなんかどこにも出てこないけど?

503:デフォルトの名無しさん
08/06/15 23:16:57
ググればNTFSフォルダと言ってる例がいっぱいひっかかるが。

504:デフォルトの名無しさん
08/06/15 23:22:38
マウントはレジストリ使うんじゃなかったかな?
よくトラぶって起動しなくなるらしい

505:デフォルトの名無しさん
08/06/15 23:33:53
DOSやWindows 3.1やWindowsNT → ディレクトリ
Windows95以降 → フォルダ

NTFSはWindowsNTで作られた物だから、
解説ではディレクトリと言う事も多い。

今では、区別なくフォルダと言っている。
例えば、圧縮フォルダはNTFSの機能だけど、
あんまり圧縮ディレクトリとは言わない。

506:デフォルトの名無しさん
08/06/15 23:40:31
つまりディレクトリとフォルダは違うものなんだ

507:デフォルトの名無しさん
08/06/15 23:48:49
>>491じゃないけど作ってみたyo~
#include <stdio.h>
#include <conio.h>
int _tmain(int argc, _TCHAR* argv[])
{
TCHAR sKey[] = _T("test") ;
printf("plz enter [ %S ] \n", sKey) ;
unsigned int nCount = 0 ;
for(;;)
{
if(::_getch() == sKey[nCount])
{
printf("hit! [ %C ]\n", sKey[nCount]) ;
if(_tcslen(sKey) <= ++nCount) break ;
}
else printf("miss\n") ;
}
printf("\(^o^)/") ;
return 0;
}



508:デフォルトの名無しさん
08/06/15 23:54:19
あれだろ、
昔からDOSやWindowsでプログラミングやってる老人が、
ディレクトリをフォルダって言う事に抵抗感じるって事でしょ。

509:デフォルトの名無しさん
08/06/16 00:14:24
もうフォルダとかディレクトリとかどうでもいいよおまえら
専用スレでも立ててほかでやれ

と思ってるやつが何人いるんだろう
一人もいないのか?

510:デフォルトの名無しさん
08/06/16 00:24:26
どうでもいいよ

511:デフォルトの名無しさん
08/06/16 00:34:16
他人の間違いに一々噛み付くのはアマチュア。
脳内で的確に修正し、さりげなく指摘できるのがプロ。
間違いを訳のわからん理論で正当化しようとするのは厨ニ病。

512:デフォルトの名無しさん
08/06/16 00:49:51
>>511
で、君はそれのどれ?

513:デフォルトの名無しさん
08/06/16 01:30:08
悪いのはいちいち名前を変えて同じ物をローテーションしてるMSだろ
俺たちゃ振り回される被害者だってばよ!

514:デフォルトの名無しさん
08/06/16 07:29:55
Express Edition 使っているんですけど
ソリューションにソリューションを追加できないものでしょうかね
自分は MFC や ATL を使わないので
この機能のためだけに Standard 買うのもちょっと…

515:デフォルトの名無しさん
08/06/16 09:54:43
Stdにだってそんな機能はありませんよ
異なる言語のプロジェクトをひとつのソリューションで扱えるだけ
なんでそんな要求が出るのかしらないけど
MSBuildあたりを調べればなんか代替案出てくるんじゃない?

516:デフォルトの名無しさん
08/06/16 10:19:18
>>461
>何のために本やグーグル先生があると思ってるんだね?

何のために2chに初心者質問スレがあると思ってるんだね?
という発想。

517:デフォルトの名無しさん
08/06/16 11:06:46
EEには無いがSEには有るというなら多分ソリューションフォルダのことだろう。

518:デフォルトの名無しさん
08/06/16 18:21:37
VS2008 MFC使用です

CStaticオブジェクトに絵を描いています。
OnPaint()でLineTo()等を組み合わせて絵を描いているのですが、
ウィンドウの大きさを変えたとき、OnSize()で描画領域の大きさも変えて、絵も拡大縮小するような処理を行っています。
しかし、絵を拡大したとき、新たに描画されるところは拡大されて表示されるのですが、
既に表示されている部分の再描画が行われません。

これが処理を早くするための工夫(仕様?)であるところまでは調べられたのですが、
実際にどのように対処したらいいかがわかりません。

OnSizeでサイズを変更したときに全体が再描画されるようにするにはどうしたら良いでしょうか。

519:デフォルトの名無しさん
08/06/16 18:25:46
>>518
Invalidateで全体が無効領域だということをシステムに教えてやる

520:デフォルトの名無しさん
08/06/16 18:26:40
けちけちしないで全体を再描画すればいいだけじゃん。

521:518
08/06/16 18:48:09
>>519
Invalidateを初めて知りました。ありがとうございます。
OnSizeでInvalidate(TRUE)
OnExitSizeMoveでInvalidate(FALSE)
とする事で対処しました。

522:デフォルトの名無しさん
08/06/16 20:43:55
ダイアログクラス間での、構造体データのやりとりで悩んでいます。

[ダイアログA]から、作成した登録ボタンを押して[ダイアログB]を開き、
Typdef struct Data
{
int Number;
char Name[10];
}stDATA;
をそれぞれに用意した2つのエディットボックスで入力して登録するもの
なのですが、UpdateData(TRUE);で取得したデータを、[ダイアログA]の保存ボタンを
押したときにファイルに保存するための処理が作れません・・・。
[ダイアログB]でファイルオープンし、そのまま保存することならできる
のですが、ダイアログAの保存ボタンで保存したい場合は、構造体のデータ
をどのようにやりとりすればよろしいでのしょうか?

もしかしたら、MFC以前の問題なのかもしれないのですが、
C言語とC++を初めて1か月半なので、なにとぞよろしくお願いします。

523:デフォルトの名無しさん
08/06/16 21:06:50
失礼しました。ファイルへの保存は、
FILE *fp でファイルを開いて、fprintfで保存します。

524:デフォルトの名無しさん
08/06/16 21:10:10
fwriteでメンバを一個ずつセーブ
freadで一個ずつロード

525:デフォルトの名無しさん
08/06/17 11:33:24
Visual Studio2005のC++を使っています.
複数のフォルダーを取得するにはどうしたらいいでしょうか?

複数のファイル名を取得するにはCFileDialogを使って、Shift+
マウスクリックで複数ファイルを同時に選択できました.
それと同じようなことをフォルダーに対して行いたいのです。
BROWSEINFOを使って一個のフォルダは選択出来ますが、
同時に100以上のフォルダーを選択したいので、Shiftやcntlなどを
使ってさくっとやりたいです。

なお、フォルダー選択後、各フォルダー内にあるデータファイルを
順番に全て処理していきます.

526:デフォルトの名無しさん
08/06/17 11:36:10
>>522
ダイアログBが生きてるなら、Bのパブリック変数なりゲッタなりで。
Bが消えるなら、消える前に上記。あるいは、AのポインタをBに渡しておいて
BからAのパブリック変数に代入なりセッタなりで。

527:デフォルトの名無しさん
08/06/17 16:14:55
VisualC++2005でMFCアプリケーションをダイアログベースで作成しています。

メイン画面からサブ画面を開くのに
 DoModal();
を使って開いているのですが、
このときサブ画面のエディットボックスなどに初期値を入れたいです。

メイン画面ではOnInit関数内でセットできたのですが、
サブ画面ではどこに記述して良いかわかりません。

初歩的な質問で申し訳ありませんがよろしくお願い致します。

528:デフォルトの名無しさん
08/06/17 16:19:44
サブ画面のダイアログのクラスにOnInitDialog()を作れ。
クラスビューからクラス選択してプロパティでオーバーライドをクリックして
OnInitDialogを探せ。

529:527
08/06/17 16:48:10
>>528
おぉ☆★☆
早速のレスありがとうございました!!

早々に解決できました。
ありがとうございましたm(_ _)m

530:デフォルトの名無しさん
08/06/17 19:24:34
>>524
>>526
まだ完成はしていないのですが、無事解決しそうです。
どうもありがとうございました。

531:デフォルトの名無しさん
08/06/17 20:59:57
すいません。すごく今困ってます。
今先生から内緒でCDに焼いてもらったVisual Stadioなんですが、

#include <stdio.h>

void main(void)
{

printf("Hello");
}

これを実行すると

プロジェクト : error PRJ0003 : 'cmd.exe' の起動中にエラーが発生しました。

ってなるんですが、どうしたら良いですか??
お願いします。

532:デフォルトの名無しさん
08/06/17 21:06:54
とりあえずMSにメールしといた

533:デフォルトの名無しさん
08/06/17 21:07:26
環境変数のpathに %SystemRoot%\system32 を追加。
PCを再起動

コピーは良くない。逮捕されるぞ
Visual studio のアカデミック版は安いんだから、買え。
一番基本的なバージョンは無料ダウンロードできるんじゃなかったっけ?


534:デフォルトの名無しさん
08/06/17 21:11:24
>>533

あの・・・すいませんが
環境変数ってどこですか?;

535:デフォルトの名無しさん
08/06/17 21:18:50
流石にこれにはレスしない方向にしたいな

536:デフォルトの名無しさん
08/06/17 21:21:23
無料で使えるExpressEditionがあるのになぜこの程度の
事をするのにコピーしてもらうのかと、そもそも学校の課題とかなら
EEでも十分すぐる

537:デフォルトの名無しさん
08/06/17 21:36:30
ていうか先生に聞けよw

538:デフォルトの名無しさん
08/06/17 23:04:52
ていうか、学校名晒せよ。

539:デフォルトの名無しさん
08/06/17 23:17:23
>>531 これはさすがにまずいな、まして教職者がやる行為ではないね








TV用

540:デフォルトの名無しさん
08/06/17 23:21:19
内緒って書いてあるな、 約束を破っちゃいかんよ

541:デフォルトの名無しさん
08/06/17 23:26:19
これはすごい釣りですね

542:デフォルトの名無しさん
08/06/18 01:35:27
国際学生証作ればMSから正規にタダでダウンロードできるだろう

543:デフォルトの名無しさん
08/06/18 06:36:00
MouseButtons & Windows::Forms::MouseButtons::Right ;
Noneになるクソワロタ
あれ・・・?

544:デフォルトの名無しさん
08/06/18 10:50:59
こんにちは!
ボタン押しでファイル保存をしたいのですが、エクセルやワードを保存するときのように、
フォルダを選べて、名前をつけて保存したいです。
まず、その画面はどうやって表示したら良いでしょうか??

環境はVisualC++2005のMFCです。よろしくお願いします。

545:デフォルトの名無しさん
08/06/18 10:54:23
CFileDialogで検索

546:デフォルトの名無しさん
08/06/18 12:21:17
クラスについての質問です。

class MakeWindow
{
public:
char Name[256];
int Width;
int Height;
int Bit;
int ScreenMode;
}

MakeWindow mWindow = new MakeWindow("A", 640, 480, 32, SELECT_MODE);

このようにしてオブジェクトを作成したのですが、
エラー 2 error C2661: 'MakeWindow::MakeWindow' : 5 個の引数を伴うオーバーロードされた関数はありません。(Line 6)

と表示されます。
受け取り側の変数も5個で設定しているのですが、何が原因なのでしょうか。

547:デフォルトの名無しさん
08/06/18 12:35:09
コンストラクタでググれよ

548:デフォルトの名無しさん
08/06/18 12:50:11
エラーをよく見ろ
'MakeWindow::MakeWindow'という関数はないと言ってる
そのまんま

549:デフォルトの名無しさん
08/06/18 12:54:28
548はアホ
スレ違いだから終了

550:デフォルトの名無しさん
08/06/18 16:01:45
質問させていただきます。

Microsoft Visual C++ .NET
でアプリケーション (.exe)作成しました。

void main()を実行した所
実行画面が立ち上がりません。
出力の表示は
”XX.exe: ネイティブ' はコード 0 (0x0) で終了しました。”
となっています。

実行画面が表示されれば
Sleep(2000)が入っているの目視できるはずです。

ステップインで実行した所次のようになっていました。
・appmodul.cppの_tWinMainが実行
・crtexe.cのif ( !managedapp )でmanagedapp=0
・exit(mainret)が実行

ここで終了しているようです。
何とかmainの中身を実行させたいのですが何が原因なんでしょうか?

当方のスキル:社内プログラマ1年目
申し訳ありませんが何とかお力を御貸し頂きたいと思います。

551:MFC始めて3週間目
08/06/18 16:12:49
CEditView でフォントを設定するのはどうするの。
ちなみに以下ではできない。

int CDeepPurpleView::OnCreate(LPCREATESTRUCT lpcs)
{
if(CEditView::OnCreate(lpcs) == -1)
return -1;

CDC* pDC = this->GetDC();
CFont screenFont;
screenFont.CreatePointFont(600,"MS ゴシック",pDC);
CFont* pOldFont = pDC->SelectObject(&screenFont);

return 0;
}


552:デフォルトの名無しさん
08/06/18 16:33:42
>>550
MFCのプロジェクトを選んでいないか?main関数から始まるプログラムを作りたいなら、
Win32コンソールアプリケーションのプロジェクトを選ばないといけない。

あるいはMFCを使いたくてそうしているのなら、
プログラムの実行開始はmain関数でないというのがMFCの流儀。

553:デフォルトの名無しさん
08/06/18 16:40:41
フォントの寿命がOnCreate終わるまでなんだろ

554:550
08/06/18 17:10:31
>>552
ありがとう御座います。
MFCを使用しないため
Win32コンソールアプリケーションで
プロジェクトを組みなおした所
問題が解決しました。

ありがとう御座います。

555:デフォルトの名無しさん
08/06/18 17:15:45
URLリンク(mag.autumn.org)
SetWindowsHookExのサンプルをvc++2008でコンパイルしてみたんだけど、
フックされる気配がない・・・どこか間違ってるの?

556:デフォルトの名無しさん
08/06/18 17:25:08
>>554
そういえばvoid main()は普通やらない。int main()にしろ。

557:デフォルトの名無しさん
08/06/18 20:44:35
>555
そのあとに、NyaRuRuセンセが「CLR上でフック動かすとか無謀すぎ」
って書いてるのに、何でコンパイルしたの?

558:デフォルトの名無しさん
08/06/19 01:30:55
>>543
MouseEventArgs^ a = (MouseEventArgs^)e;
a->Button == MouseButtons::Right
こうですか!わかりません><

559:デフォルトの名無しさん
08/06/19 04:09:40
MFCで使われるCrectをCLRでも使いたいんですけど代わりのものってありますか?

560:デフォルトの名無しさん
08/06/19 04:41:04
代わりって言うと微妙かもしれないけどRectangleとかかな?

561:デフォルトの名無しさん
08/06/19 10:37:53
>>551
まず、CFontが破棄されないように自動変数はやめてメンバーにでもして、
↓でどうよ。
int CDeepPerpleView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CEditView::OnCreate(lpCreateStruct) == -1)
return -1;
screenFont.CreatePointFont(600, _T("MS ゴシック"));
SetFont(&screenFont);
return 0;
}

562:デフォルトの名無しさん
08/06/19 17:46:53
TimerProc(UINT uTimerID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2)
のdw1とdw2って、ドキュメントには予約って書いてあるけど、実際には使えないの?

563:デフォルトの名無しさん
08/06/19 18:51:27
そこに値設定する方法無いのに、どうやって使うつもりなんだ。

564:デフォルトの名無しさん
08/06/19 21:38:13
予約領域のある関数や構造体なんてイヤというほど有るぞ。

565:デフォルトの名無しさん
08/06/19 23:02:34
みなさんすみません。5日前からC++を始めた初心者です。
>383さんと関連するのかもしれませんが、下記のコードを実行すると、
期待した結果と異なる(結果は同じになると思うんですが)出力されます。
関数の引数を値渡しすると、初期化と同じとテキストに書かれているので、
こういう結果がなぜ起こるか分からないのです。

Visual Studio 2008 Express Edition
Windows Vista


void Print(char str[])
{
cout << "サイズは" << sizeof(str) << endl;
}

int main()
{
char str[] = "Test";
  cout << "サイズは" << sizeof(str) << endl;
cout << "サイズは" << sizeof("Test") << endl;

Print("Test");
Print(str);
}


結果:
サイズは5
サイズは5
サイズは4
サイズは4

566:デフォルトの名無しさん
08/06/19 23:16:26
>>565
"Test"の文字列を長くしたらどうなるか見てごらん。


567:デフォルトの名無しさん
08/06/19 23:17:31
【初心者歓迎】C/C++室 Ver.55【環境依存OK】
スレリンク(tech板)
C++相談室 part62
スレリンク(tech板)


568:デフォルトの名無しさん
08/06/19 23:18:45
はきだめC/C++下級者の質問箱 2
スレリンク(tech板)

569:デフォルトの名無しさん
08/06/20 09:40:00
>>565
Print関数にはポインタを渡してるに過ぎない。
サイズが4なのはポインタのサイズ(32ビット)

570:デフォルトの名無しさん
08/06/20 11:36:05
>>569
>>566
565です。ありがとうございます。そういうことなんですね。
すっきりしました。


571:デフォルトの名無しさん
08/06/20 11:43:06
こんにちは!

現在VisualC++2005のMFCでプログラムを組んでいます。
Cのstr関数を使用しているのですが、下記のような警告が出ます。

warning C4996: 'strcat' が古い形式として宣言されました。

string.hを見ろって言われて見たのですが、
まだまだ未熟な為、よくわかりません。

一応動作は問題なくできるのですが、気になったので教えて頂けませんか?
自分としてはこの警告を、

問題はありませんが、古い形式で宣言されてるので新しい形式にした方が良いよ。

というニュアンスでとらえています。
それでOKでしょうか?また、OKな場合新しい形式とはどういう形式でしょうか?

よろしくお願いします。


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