1 名前:デフォルトの名無しさん [2008/05/07(水) 23:33:53 ] Visual C++入門者・初心者からの質問を、 お兄ちゃんお姉ちゃん達が優しく、時には厳しく回答してくれるスレッドです。 ■質問するにあたって ・エラーや警告のときはエラーメッセージを書きましょう。 ・開発環境も書きましょう。 ・できるだけ具体的に。 質問の仕方については次のページが大変参考になります。 www.hyuki.com/writing/techask.html myu.daa.jp/osiete/ ■回答するにあたって ・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。 (MSDNのどの項目だとか、何のキーワードでGoogleするとか) ・ネタや煽りは軽く流しましょう。 過去スレ、関連スレなどは>>2-5 辺り。
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とかありませんか
283 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 19:12:31 ] ソース読んでデバッガでトレースすれば理解できるよ
284 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 22:41:49 ] lexical_castで。
285 名前:デフォルトの名無しさん [2008/05/31(土) 00:34:25 ] VBAの処理時間短縮のためVC++でDLLを作って処理させようと思ってます。 VC++はいじったことないのでお勧めの書籍あるいはURL等ありましたら 教えて貰えませんか。
286 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 00:42:18 ] >>285 とりあえず本屋で適当に選んできなよ
287 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 07:57:34 ] >>282 std::stringを使えばいい
288 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 11:49:37 ] >>279 CLR使わなきゃいい
289 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 12:33:09 ] リソースキットツールってのは必要なの?
290 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 01:31:59 ] gccの拡張機能のweakシンボルと同等のことを VCでするにはどうすればよいでしょうか?
291 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 19:13:16 ] 2008なんですがコマンドラインからの引数を受け取って 動作をデバッグするにはどうしたらいいんでしょう? 具体的には int main( int argc, char** argv ){ の引数をいろいろ変えながらデバッグしたいんですが・・・。
292 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 19:16:26 ] と、思ったんですが、すごい勢いで解決しました。 すごいよMSDNむすどんむすどん。
293 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 20:01:16 ] Thumb.dbのフォーマットを解説してるサイトとかって存在しますか?
294 名前:デフォルトの名無しさん [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 00:07:29 ] 日本語ファイル名かよw
296 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 00:14:43 ] >>294 #pragmaで抑制できたはず。 詳しくはググれ。
297 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 00:15:09 ] >>294 sprintfを使わずに、boost::formatを使う。
298 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 00:21:24 ] >>296 出来ました.ありがとうございます。 >>297 調べてみます。ありがとうございました。
299 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 00:42:52 ] >>291
300 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 00:47:04 ] >>291 メニュー[プロジェクト] -> プロパティ -> デバッグ -> コマンド引数 を変更すればおkなはず。 面倒なときはイリーガルだけど、 #ifdef DEBUG char* argv_[2] = { "application", "" }; argc = 2; argv = argv_; #endif みたいにでばっぐしてみればどう?
301 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 06:42:55 ] >>292
302 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 07:12:08 ] >>299 できるよ。 以上。 はい、次。
303 名前:MFC始めて2日目 [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 11:12:43 ] ttp://www.vipper.org/vip833994.jpg VC++2008で、BとCの下のスピンボタンの値を足し算して、Aの下の部分に表示したいんですが どのように記述すれば値を取得して計算・表示できるのでしょうか?
305 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 12:21:03 ] スピンボタンの値を取得するサンプルならそこらじゅうにあるだろ
306 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 15:37:34 ] >>304 Bの下、Cの下、それぞれのスピンボタンの値を取得し、それらを加算してから文字列に変換し、 Aの下に直接書き込むか或いはAの下に配置したスタティックテキストを書き換えれば宜しい。
307 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 20:37:05 ] シリアライズってのは、「専用形式」で「なるべく簡単に」 オブジェクトを保存・読み込みする、みたいなコンセプト。 そこいらにあるファイルをデシリアライズするのは大変。
308 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 23:28:04 ] >>271 遅くなりましたが、今、無事できました! コンパイルもリンクもうまくいき、 ちゃんとdll内の関数も呼び出せました! 本当に、ありがとうございました。
309 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 21:41:31 ] CStringってすごいな。これを使えば2バイト文字の扱いが楽だな。 これはMFCなのか、ATLなのか。
310 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 00:57:20 ] 今は共用になってる
311 名前:MFC始めて3日目 [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 14:42:10 ] SerializeRaw したあと同じものを自分でも書いてんの?
313 名前:MFC始めて3日目 [2008/06/04(水) 15:07:56 ] SerializeRawの1行を削除したらエラーになった。 (ソースコードの else の行に矢印がついてプログラムがストップ)
314 名前:MFC始めて3日目 [2008/06/04(水) 15:16:44 ] うまくいった。 (313 はデバッグの機能が働いただけだった) >>307 >>312 ありがとう。
315 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 19:30:51 ] VC++使い始めて間もないのですが、質問させてください 現在MSVC++2005ProのMFCを用いてソフトを作ろうと考えております 一次元での温度分布をグラフィック表示するものを作ろうと考えていて 物体の二点の温度を入力した際に、その間を一次関数的に温度が増減すると仮定した上で その温度分布をモノクロの色の濃さで表現するようなものを作りたいと思っています このようなグラデーション表示を描画するためにはどのようにすればよいのでしょうか? よろしくお願いいたします。
316 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 19:58:18 ] static void CALLBACK TimerProc(UINT uTimerID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2){} の中で、同クラス内のフィールドを参照したい場合どうすればいいの? ふつーに参照しようとすると、 関数呼び出しには引数リストがありません。 って言われるんだけど・・・
317 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 20:57:54 ] 非staticメンバにアクセスしたいなら、クラスのインスタンスをどうにかして得る。
318 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 21:17:41 ] そのためのDWORD dw1とDWORD dw2
319 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 22:18:11 ] printf("あなたの点数は %d 点です。",score);