[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 10/16 01:02 / Filesize : 178 KB / Number-of Response : 657
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

★初心者にVisual C++を教えるスレ★ Part30



1 名前:デフォルトの名無しさん [2008/05/07(水) 23:33:53 ]
Visual C++入門者・初心者からの質問を、
お兄ちゃんお姉ちゃん達が優しく、時には厳しく回答してくれるスレッドです。

■質問するにあたって
・エラーや警告のときはエラーメッセージを書きましょう。
・開発環境も書きましょう。
・できるだけ具体的に。

質問の仕方については次のページが大変参考になります。
www.hyuki.com/writing/techask.html
myu.daa.jp/osiete/

■回答するにあたって
・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。
 (MSDNのどの項目だとか、何のキーワードでGoogleするとか)
・ネタや煽りは軽く流しましょう。

過去スレ、関連スレなどは>>2-5辺り。


182 名前:178 mailto:sage [2008/05/22(木) 21:12:22 ]
↑178です

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

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

183 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 21:34:20 ]
物凄く不適切な回答を見た。

184 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 23:17:07 ]
VC++2008EEとVC++2005EEってそんなに違うものなの?

185 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 23:35:40 ]
両方使ったけど、ほとんど何も変わってない。

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

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

よろしくお願いします。

187 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 23:50:39 ]
いえいえこちらこそよろしくお願いします。

188 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 23:52:24 ]
>>169

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

189 名前:186 mailto:sage [2008/05/23(金) 00:07:38 ]
すません。ぐぐったら出てきました。

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

190 名前:173 mailto:sage [2008/05/23(金) 00:35:01 ]
>>177
IMEをDisableにしたら狙った通りに動いてくれました。
ご指摘ありがとうございました。



191 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 02:29:00 ]
>>186
トレースでもしりゃわかるよ

192 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 02:41:05 ]
>>188
templateでかけば普通インライン展開されるんじゃなかったけ

193 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 08:24:12 ]
VC++2003EEとVC++2005EE は結構違うよね

194 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 09:04:21 ]
エンタープライズだろ

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

ja.wikipedia.org/wiki/Microsoft_Visual_C%2B%2B
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 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 09:14:23 ]
・言語の仕様
・Windowsの仕様
・IDEの使い方
結局これらがわからないとダメなんじゃない?

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


198 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 10:58:15 ]
>>197
知らんかった

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

200 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 14:59:45 ]
ライセンス的にどうなのよ



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

209 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 18:29:57 ]
いや、、、それを決めるのは君のプログラムでしょ

210 名前:204 [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 18:41:11 ]
絶対パスでも相対パスでもいいよ。
カレントディレクトリがどこかわからないなら、とりあえず絶対パス入れとけば。

212 名前:204 [2008/05/23(金) 19:09:13 ]
>>211
絶対パスでやっても

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

となるんですが

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


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

215 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 19:23:28 ]
うまくいかない→質問
じゃあ進歩しないぜ

216 名前:デフォルトの名無しさん [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 01:21:53 ]
>argc!=1じゃないのか?なんでargc!=2にしてあるのかよく知らんけど。そこは、コマンドライン引数の個数をかくんだから
>1個しか実行プログラムに引数を与えないなら、argc!=1ってしなきゃならん。

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

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

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

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



221 名前:デフォルトの名無しさん [2008/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版もあるし。
ttp://www.resedit.net/

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

223 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 13:27:50 ]
ATL7.1がWDKの方に入ってるよ。

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

225 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 14:06:23 ]
support.microsoft.com/kb/943126/ja

226 名前:221 [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 17:06:31 ]
だからWDKに入ってるつーの。

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

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

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

229 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 18:34:13 ]
>>226
Windows Driver Kit
www.microsoft.com/japan/whdc/DevTools/WDK/WDKpkg.mspx
サインインはいるが、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 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 18:41:28 ]
>>228
szはsが文字列、zがナル文字終端を表す。
いわゆるシステムハンガリアンというやつ。詳しくはググれ。

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

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



231 名前:228 mailto:sage [2008/05/24(土) 18:44:44 ]
>>230
どうもありがとうございます。よくわかりました。sが文字列でzがナル文字なるほろ。。

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

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

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

この文章の示す個人情報とは何なのでしょうか。
ttp://privacy.microsoft.com/ja-jp/default.aspx
を読んでも特定出来ず、不安で登録出来ません。

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

234 名前:デフォルトの名無しさん [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 22:27:35 ]
>>234
textBox1->Textが""ならdouble::Parseしないで、
入力を求めるMessageBoxでも表示すればいい。

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

237 名前:234 [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 23:38:55 ]
>>237
全然内容読んでないけどAが入力されていなければexitすれば良いんじゃないかな?

239 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 23:56:19 ]
>>237
return


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



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

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

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

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

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

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

C/C++→コード生成

244 名前:241 mailto:sage [2008/05/25(日) 14:57:31 ]
>>242-243
レスサンクスです。

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

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

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

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

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

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



248 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 22:43:50 ]
>>247
振り向いたら負け

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

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

250 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 03:52:45 ]
単純にB,Aの順番で描画すればいいんじゃない?



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

252 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 07:52:02 ]
だから板違いだっつーの。

253 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 08:17:17 ]
なんだ 同じかww

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

255 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 17:02:58 ]
日本語で質問お願いします。

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

257 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 18:24:22 ]
>>254
__outは/analyzeオプション用

258 名前:デフォルトの名無しさん [2008/05/29(木) 00:35:26 ]
すみません、教えてください。

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

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

259 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 08:43:43 ]
ctrl+a

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



261 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 23:41:08 ]
どう書いて、どううまくいかなかったのか書け。

262 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 23:46:42 ]
GetWindowTextW→CString→doubleのどの段階でうまくいかないのだ?

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


263 名前:デフォルトの名無しさん [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 23:56:48 ]
うにコードで(const char*)がマズイ


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

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

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

よろしくお願いします。

266 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 00:13:57 ]
遅延読み込みはスタティックリンク
LoadLibraryはダイナミックリンク


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

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

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


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


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

270 名前:デフォルトの名無しさん [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 12:17:48 ]
>>268
dllをスタティックにリンクするにはdllimportを使う。externだけじゃ呼べないよ。といってみる。
自作dllを作ったならdllexportを使ってると思うからその逆の使い方だ。

272 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 12:18:40 ]
またmemset()厨か。

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

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


275 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 14:09:04 ]
CHAR chStr[128];

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

wisdom.sakura.ne.jp/system/winapi/win32/win5.html
これやると

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

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

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

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

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

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

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

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

280 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 17:46:47 ]
とりあえず、.NET Frameworkについて勉強しようか。



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

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






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<178KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef