- 1 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 12:16:11 ]
- Visual C++入門者・初心者からの質問を、
お兄ちゃんお姉ちゃん達が優しく、時には厳しく回答してくれるスレッドです。 ■質問するにあたって ・エラーや警告のときはエラーメッセージを書きましょう。 ・開発環境も書きましょう、特にWindowsForm、MFC、Win32アプリケーションの区別。 ・できるだけ具体的に。 質問の仕方については次のページが大変参考になります。 www.hyuki.com/writing/techask.html ■回答するにあたって ・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。 (MSDNのどの項目だとか、何のキーワードでGoogleするとか) ・ネタや煽りは軽く流しましょう。 過去スレ、関連スレなどは>>2-5辺り。
- 296 名前:デフォルトの名無しさん mailto:sage [2008/12/10(水) 12:18:44 ]
- >>294
文字列の比較に直接 == は使えません。
- 297 名前:デフォルトの名無しさん mailto:sage [2008/12/10(水) 12:29:10 ]
- >>291
コンパイルエラーなのか動作が変なのか エラーメッセージがあればそれを書いてもらうと何かわかるかもしれません >>294 argvの型はTCHARですか
- 298 名前:デフォルトの名無しさん mailto:sage [2008/12/10(水) 12:39:28 ]
- またどこの言語からの転向者だろ
VSつながりでVBかC#あたりか
- 299 名前:デフォルトの名無しさん mailto:sage [2008/12/10(水) 12:40:19 ]
- template <typename Foo, typename Bar> class Baz : public Bar { なんたら
void Qux( const Quux<Foo,Bar> & foobar ) {...}; }; class Bar { なんたら }; // (1) VC2008で上のをもう少し複雑に書くと Baz::Qux での引数の型 Quux<Foo,Bar> が (1) の Bar と解釈されてコンパイルエラーになってしまう GCCだと通るんだけどなあ
- 300 名前:デフォルトの名無しさん mailto:sage [2008/12/10(水) 12:40:36 ]
- >"argv[2]"
この書き方はPerlかPHPだろう
- 301 名前:デフォルトの名無しさん [2008/12/10(水) 12:52:34 ]
- もともとCとVBAをやってました
>>296 やっぱりstrcmpを使わないとだめですか? >>297 int _tmain(int argc, _TCHAR* argv[]) こう宣言してます
- 302 名前:デフォルトの名無しさん [2008/12/10(水) 12:53:27 ]
- もともとCとVBAをやってました
>>296 やっぱりstrcmpを使わないとだめですか? >>297 int _tmain(int argc, _TCHAR* argv[]) こう宣言してます
- 303 名前:デフォルトの名無しさん [2008/12/10(水) 12:57:44 ]
- >>302
はい。
- 304 名前:デフォルトの名無しさん mailto:sage [2008/12/10(水) 12:59:15 ]
- if( _tcscmp(argv[1],"-o") == 0 ) {
では
- 305 名前:デフォルトの名無しさん [2008/12/10(水) 13:00:32 ]
- if( _tcscmp(argv[1],_T("-o")) == 0 ) {
では
- 306 名前:デフォルトの名無しさん [2008/12/10(水) 13:01:43 ]
- if (_tcsicmp(argv[1],_T("-o")) == 0) {
では
- 307 名前:デフォルトの名無しさん [2008/12/10(水) 13:03:35 ]
- >>304さんの方法でやってみたところ
エラー 1 error C2664: 'wcscmp' : 2 番目の引数を 'const char [3]' から 'const wchar_t *' に変換できません。(新しい機能 ; ヘルプを参照) というようなことを言われました。 どうもこの変換できないというところが理解できないです。代入しているわけでもないのに何故?って感じです。
- 308 名前:デフォルトの名無しさん [2008/12/10(水) 13:04:55 ]
- #include "stdafx.h"
#include "string.h" #include "stdlib.h" int _tmain(int argc, _TCHAR* argv[]) { FILE *fp; if(argc == 3){ if( _tcscmp(argv[1],"-o") == 0 ){ if((fp = fopen("argv[2]", "w")) == NULL){ printf("出力ファイルをオープンできません.\n"); exit(1); } fclose(fp); } else{ printf("USage :\n"); printf("-o : **********\n"); } } else{ printf("引数の数が違います"); } return 0; } これが全文です。
- 309 名前:デフォルトの名無しさん mailto:sage [2008/12/10(水) 13:14:00 ]
- 通常 "-o" の文字リテラルは char で構成される
文字セットがユニコードの場合 _tsccmp は _wcscmp にマップされる _wcscmp が要求する型は const wchar_t * だからエラーになる _T マクロは文字セットにあわせてユニコードの場合には "-o" を L"-o" と変える L"-o" はワイド文字 wchar_t で構成されるリテラルだから通る すまん思いきり間違えた 304は俺
- 310 名前:デフォルトの名無しさん mailto:sage [2008/12/10(水) 13:18:33 ]
- UNICODEに拘らなければANSI Cで十分なんだよな
- 311 名前:デフォルトの名無しさん [2008/12/10(水) 13:21:00 ]
- >>309
解決しました!ありがとうございます
- 312 名前:デフォルトの名無しさん mailto:sage [2008/12/10(水) 13:47:31 ]
- >>291で質問した者です
再現可能なソースを作っていて気がつきました。 chcp 65001やchcp 437としても動作が同じで、文字列リテラルが強制的にSJISに内部変換されていることが分かりました。 UTF-8のソースファイルなのですが、「BOM」を付けると、このような動作になるようです。 BOMを付けないUTF-8だと、warning C4819 が山ほど出て、化ける文字までありますが、何とかなりそうです。 今回作った下の再現プログラムも、BOMありのUTF-8と、BOM無しのUTF-8では、動作が違ってきます。 #include <iostream> int main() { std::cout << "項目" << std::endl; return 0; } 一応解決したことにします。ありがとうございました。
- 313 名前:デフォルトの名無しさん [2008/12/10(水) 15:35:09 ]
- すみません>>294で質問したものですが、
同じソースで _tcscat(argv[2],L".txt"); という処理を入れ、作成ファイルをテキスト形式にしようと思ったのですが 出力されたファイルが、テキストではなくファイルで出力されてしまいます。 画面表示させるとちゃんと****.txt となっているのですが・・・
- 314 名前:デフォルトの名無しさん [2008/12/10(水) 15:49:13 ]
- >>313はスルーしてください
アホくさい間違いでしたので(汗
- 315 名前:デフォルトの名無しさん [2008/12/10(水) 22:29:54 ]
- Visual C++を使用していて、ちょっと困ってしまったので助けてください。
下記画像のようにスペース部分に色つき矢印やらドットやらが表示されて消えなくなってしまいました。 どこかでキーボード押し違えたみたいで・・ この設定の解除の仕方を分かる方いたら教えてください>< ↓ imepita.jp/20081210/770880
- 316 名前:デフォルトの名無しさん mailto:sage [2008/12/10(水) 22:38:27 ]
- メニュー > ヘルプのキーボード何とかに一覧がある
- 317 名前:552 [2008/12/10(水) 23:45:14 ]
- ヘルプで見ても、そもそもコレが何なのか解らないので検索できないので
教えていただけませんか?
- 318 名前:552 [2008/12/11(木) 00:19:36 ]
- 質問に答えてくれなかったからってこんなこと言うのもなんだけど
なんか、プログラマーって陰湿な性格の人が多いよね。 解るんなら教えてくれればいいじゃん。初心者用のスレだった気がするけど。 ついでに、編集→詳細→スペースの表示で自己解決しました。 だれも教えてくれんかった。
- 319 名前:デフォルトの名無しさん [2008/12/11(木) 00:47:38 ]
- 今MIDIファイルを開くっていうプログラムを作りたいのですが、
よろしければ教えてください。 バージョンはVC++2005 AEです。
- 320 名前:319 [2008/12/11(木) 00:53:28 ]
- 319ですがGETFILE関数を使いたいです。
よろしくお願いします。
- 321 名前:デフォルトの名無しさん mailto:sage [2008/12/11(木) 02:15:04 ]
- >>318
君が質問したのは3、4時間前だろ? 誰もが同じスレをずっと監視してサポートセンターのように対応してくれるとでも思ってんのか? 自分で解決したならそれでいいし、自分で色々やってもできなかったらまた質問すりゃいいだろ 陰湿なのはちょっとレスがない程度でふてくされる君の思考回路だよ
- 322 名前:デフォルトの名無しさん mailto:sage [2008/12/11(木) 02:29:37 ]
- >>318
オマエみたいなパーデンネンを弾くために、みな時間置いてから答えるようにしてるからね。 ゴクローサン。
- 323 名前:デフォルトの名無しさん mailto:sage [2008/12/11(木) 07:33:14 ]
- >>315
[編集]→[詳細]→[スペースの表示]
- 324 名前:デフォルトの名無しさん mailto:sage [2008/12/11(木) 09:53:49 ]
- >>318
つーかその質問、定期的に出るんでうんざりなんだけど。 過去レス調べることもできないのかよ。 あと質問なんか1日くらい待てや、答える人が24時間張り付いてるわけじゃないぞ。
- 325 名前:デフォルトの名無しさん [2008/12/11(木) 10:10:52 ]
- こんにちわ。Visual C++でOPENGLを用いてゲームを作ろうと思うのですが、
ウィンドウを振動させるやり方がわかりません。。 何かコマンドややり方があるのならアドバイスください。よろしくお願いします。 ※JAVASCRIPTでウィンドウを振動させるみたいな感じです。
- 326 名前:デフォルトの名無しさん [2008/12/11(木) 10:18:59 ]
- >>325
SetWindowPos APIとrand関数を使え
- 327 名前:デフォルトの名無しさん mailto:sage [2008/12/11(木) 10:28:02 ]
- もの凄く気軽に「こんなソフトありませんか?」
pc11.2ch.net/test/read.cgi/software/1218808744/331 331 名前:名無しさん@お腹いっぱい。[] 投稿日:2008/12/11(木) 09:50:07 ID:mvBU1EDM0 こんにちわ。 アクティブウィンドウを振動させるようなフリーソフトってありますか? OPENGLで実験中にウィンドウを揺らしたいのですが・・・コマンドも分からないし、出来ないので外部のツールで強引にしようかと。。 よろしくお願いします。
- 328 名前:デフォルトの名無しさん mailto:sage [2008/12/11(木) 10:45:36 ]
- >>315
Ctrl+R、 Ctrl+Wを続けて入力
- 329 名前:デフォルトの名無しさん mailto:sage [2008/12/11(木) 10:58:16 ]
- >318
試験勉強みたいに頭の中に全部記憶する必要ない。 というか情報量多すぎるからその都度自分で調べて解決していかないとだめ。 初心者の場合はどうやって調べたらいいかわからないから 調べ方を教えてあげるのが重要。 答えだけ教えたんじゃ、いつまでたっても自分で調べられようにならない。
- 330 名前:M [2008/12/11(木) 11:35:21 ]
- 今、VC++でMFCを用いたプログラムを作成中で、そのプログラムでRS232C通信を行いたいのですが、RS232c通信のプログラムの部分だけAPIを用いて記述したいのですがどのようにすればいいのでしょうか?
方法があれば教えてください。お願いします。
- 331 名前:デフォルトの名無しさん [2008/12/11(木) 11:42:17 ]
- >>330
ここなんかどうだろ? www.ee.fukui-nct.ac.jp/~yoneda/text/other/C/A_06.htm
- 332 名前:デフォルトの名無しさん [2008/12/11(木) 11:43:59 ]
- >>326
2つともよく分からないまま検索したらMOVEWinfowというのもあるみたいで、if関数を用いて頻繁に座標をずらし振動させることにしました。 こんなんでいいのかな?? マルチすいません。ありがとうございます。
- 333 名前:M [2008/12/11(木) 11:48:46 ]
- >>331
ありがとうございます。 このプログラムをMFCのプログラムにどのように組み込めばいいのでしょうか? あほな質問ですみません。。
- 334 名前:デフォルトの名無しさん [2008/12/11(木) 12:55:47 ]
- >>333
WM_COMMANDメッセージでコマンドを受け取ったら、main関数の中身を実行すれば?
- 335 名前:デフォルトの名無しさん mailto:sage [2008/12/11(木) 14:11:02 ]
- ファイルの読み書きとほとんど同じだな
やってる内容が理解できれば使えるだろ
- 336 名前:M [2008/12/11(木) 14:27:45 ]
- >>334
それでやってみようと思います。ありがとうございました。
- 337 名前:デフォルトの名無しさん [2008/12/11(木) 16:38:53 ]
- VC++2008使ってます
LogItemという独自クラスを作り、 LogItem item; ListBox.add(item); といったことしてます(単なるリストボックスへの追記)。 表示を変更する際に、 ListBox.add(〜.format("{1}・・・",item.name,・・・)) 等とすると、今度は削除時にいろいろ面倒です。 表示を適切に変更できるものの、削除時は、 ListBox.remove(item)でいけるような (追記時の表示に依存しないような) 簡単な方法はご存じありませんか? 参考になりそうなサイトやキーワードを 教えていただければ幸いです。
- 338 名前:デフォルトの名無しさん [2008/12/11(木) 16:41:26 ]
- 16ピンのPIC16F819のPICを利用してサーボモータや光電センサー、ディスプレイを制御したいのですがBASICのプログラムが分かりません
サーボモータは Futaba S3002 を使用 ・計7個のサーボモータ使用 ・ボタンを押して入力したものをサーボモータに出力〔右に90度⇒左に90度〕 光電センサーは鏡とセンサーの間を通過するのを検出するもので omron E3R-R2E4 を使用 ・コインを検出してカウントする ・6個使用 ディスプレイは数字と文字の両方を表示したいです まとめると、コインを光電センサで検出してその検出したコインをディスプレイに表示する。たまボタンを押すとサーボモータが回転 するものを作りたいです。 この動作をBASICのブログラムで制御させるには、どのようなプログラムにすればいいですか
- 339 名前:デフォルトの名無しさん mailto:sage [2008/12/11(木) 16:43:58 ]
- >>338
ここはBASICのスレでもPICのスレでもない。
- 340 名前:デフォルトの名無しさん [2008/12/11(木) 19:13:55 ]
- 337です。
自己解決しました。単なる調査不足&ありがちな混乱、でした ※ToStringをオーバーライドすればいいんですね・・・。 ってか。 質問の大半も意味不明でした。正確には「リストボックスにオブジェクトを そのまま追加した時に、表示のみを変更できるようにしたい。」とすれば よかったんでしょうね・・。 お騒がせいたしました。ほかに困っている人の助けになれば幸いです^^;
- 341 名前:デフォルトの名無しさん [2008/12/11(木) 21:14:25 ]
- Visual C++ 2008 Express Editionについての質問です。
Windowsフォームアプリケーションプロジェクトを作成し、 フォームにボタンとpictureBoxを配置しました。 ボタンを押すと、pictureBoxのプロパティで設定した画像の画素値を取得したり 描きこんだりしたいと思い、画像にアクセスする手段を模索することにしました。 どうもpictureBoxクラスから直接画像にアクセスすることはできず、 いったんBitmapクラスに移さないといけないことが分かりました。 これでSetPixel関数を使って、画素値を書き換えることができるようになったのですが、 これをまたpictureBoxに戻して表示することができません。 コードは以下の通りです。(ボタンを押したときの処理関数) Bitmap bmp = pictureBox1->Image; bmp.SetPixel( 10, 10, Color::Red ); pictureBox1->Image = bmp; ← これで型が合わないというようなエラーが出る どのようにすればpictureBoxの画像を加工し、それを表示することができるのでしょうか?
- 342 名前:デフォルトの名無しさん mailto:sage [2008/12/12(金) 16:23:46 ]
- pictureBox1->Image = Image::FromHbitmap(bmp.GetHbitmap());とかでどう?
- 343 名前:デフォルトの名無しさん [2008/12/12(金) 17:44:23 ]
- すいません。C++でint型の変数ををchar型の配列にキャストして入れる方法ってどうやるのですか?
int iAnswer = 0; int i = 0; char ChAnswer[256]; ChAnswer = (char)i; とやっているのですが、変換できないといわれます。
- 344 名前:デフォルトの名無しさん mailto:sage [2008/12/12(金) 17:46:28 ]
- ChAnswer[0] = (char)i; じゃないの?
- 345 名前:デフォルトの名無しさん [2008/12/12(金) 17:51:27 ]
- >>344
それだと、例えば123を変換した場合、1だけ変換ということになりそうな気がするのですが・・・違いますか?
- 346 名前:デフォルトの名無しさん mailto:sage [2008/12/12(金) 18:00:16 ]
- >>345
何でそう思うのか、、もっと基礎からやり直すか 具体的にやりたいこと書いて手取り足取り教わるしかないと思うよ。
- 347 名前:デフォルトの名無しさん [2008/12/12(金) 18:02:26 ]
- >>346
すいません。よく考えてたら頭の中にあったものが2次元配列でした・・・それにしても変な考えですけど。 逝ってきます。
- 348 名前:デフォルトの名無しさん mailto:sage [2008/12/13(土) 00:30:18 ]
- エスパー回答で言わせてもらえばsprintf()使えばいいと思うよ
- 349 名前:341 mailto:sage [2008/12/13(土) 07:31:03 ]
- >>342
それでできました! ありがとうございました!! しかし、.NET環境でもWin32apiレベルのビットマップハンドルを意識した記述をしないと いけないのはどうなのかと思いました・・・ C++ Builderはもっとシンプルになりますし・・・
- 350 名前:デフォルトの名無しさん mailto:sage [2008/12/13(土) 09:01:26 ]
- >>341
たぶんこうすればいける。 Bitmap^ bmp = gcnew Bitmap(pictureBox1->Image); bmp->SetPixel(10, 10, Color::Red); pictureBox1->Image = bmp; Imageプロパティの型はImageへのハンドル。 にもかかわらず、341ではコード上Bitmapそのものを渡すようになっている。 本来、BitmapはImageの派生なので、Bitmapのハンドルなら渡せるというわけ。
- 351 名前:341 mailto:sage [2008/12/14(日) 00:49:49 ]
- >>350
.NETでのハンドルという概念があるんですね。 勉強になりました。 ありがとうございました。
- 352 名前:デフォルトの名無しさん mailto:sage [2008/12/14(日) 03:25:51 ]
- VC2008EEで↓がコンパイルできるようにする
やり方を教えてください。 #include <windows.h> int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR pCmdLine, int showCmd) { return 0; }
- 353 名前:デフォルトの名無しさん mailto:sage [2008/12/14(日) 03:28:02 ]
- エラーは↓です
1>.\a4.cpp(4) : error C2146: 構文エラー : ';' が、識別子 'WinMain' の前に必要です。 1>.\a4.cpp(4) : error C2065: 'HINSTANCE' : 定義されていない識別子です。 1>.\a4.cpp(4) : error C2146: 構文エラー : ')' が、識別子 'hInst' の前に必要です。 1>.\a4.cpp(4) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1>.\a4.cpp(4) : error C2059: 構文エラー : ')' 1>.\a4.cpp(5) : error C2143: 構文エラー : ';' が '{' の前にありません。 1>.\a4.cpp(5) : error C2447: '{' : 対応する関数ヘッダーがありません (旧形式の仮引数リスト?)
- 354 名前:デフォルトの名無しさん mailto:sage [2008/12/14(日) 03:36:58 ]
- >>353
WINAPIが定義されてないっぽい感じのエラーメッセージだけど、 windows.hはインクルードされてるしなぁ。
- 355 名前:デフォルトの名無しさん mailto:sage [2008/12/14(日) 03:49:57 ]
- >>352
普通にコンパイル通ったよ プロジェクトの作成の仕方じゃないの? ファイル→新規作成→プロジェクトの種類→Win32→Win32プロジェクト
- 356 名前:デフォルトの名無しさん [2008/12/14(日) 12:25:43 ]
- Vc++2008でプロジェクトを開いた時に、
▲ InteliSenseデータベースファイル C\......\Visual Studio\Projects|\ソリューションフォルダ\ソリューション.ncb を書き込み用に開けなかったため、 InteliSense 情報は VC++プロジェクトにりようできません。 ソリューションディレクトリが読み取り専用である場合、他の機能にも影響を及ぼします。 ってダイアログ出て、関数の引数とかが表示されなくなってしまいました。 フォルダの属性変えてみようとしたんだけど読み取り属性外せなくなったんですが、対処方ありますか? 他のソリューションでは問題ありません。ファイル壊れた?
- 357 名前:デフォルトの名無しさん mailto:sage [2008/12/14(日) 17:24:46 ]
- メッセージの通りだろ
- 358 名前:デフォルトの名無しさん mailto:sage [2008/12/14(日) 18:02:51 ]
- ncb ファイル消せばいい。
- 359 名前:デフォルトの名無しさん mailto:sage [2008/12/15(月) 09:28:10 ]
- ボタンを二つ作ってサブクラス化しています。
DefStaticProcA = (WNDPROC)GetWindowLong(hBTNa, GWL_WNDPROC); SetWindowLong(hBTNa, GWL_WNDPROC, (LONG)TestProc); DefStaticProcB = (WNDPROC)GetWindowLong(hBTNb, GWL_WNDPROC); SetWindowLong(hBTNb, GWL_WNDPROC, (LONG)TestProc); if(DefStaticProcA == DefStaticProcB) MessageBox(NULL, _T("同じ"), _T("button"), MB_OK); ボタンのプロシージャはみんな同じアドレスに成るのでしょうか? プロシージャを一つにまとめたいです。
- 360 名前:デフォルトの名無しさん mailto:sage [2008/12/15(月) 10:48:05 ]
- HWND HBTNv6[1000];
WNDPROC DefStaticProcBTN[1000]; void MakeButtonV6(HWND hWnd){ int i; for(i = 0; i < 1000; i++){ HBTNv6[i] = CreateWindow(_T("BUTTON"), _T("A"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 30, 30, 20, 20, hWnd, NULL, hInst, NULL); if(HBTNv6[i] == INVALID_HANDLE_VALUE){ MessageBox(NULL, _T("Error"), _T("CreateWindow"), MB_OK); break; } DefStaticProcBTN[i] = (WNDPROC)GetWindowLong(HBTNv6[i], GWL_WNDPROC); if(DefStaticProcBTN[i] == 0){ MessageBox(NULL, _T("Error"), _T("GetWindowLong"), MB_OK); break; } if(i > 0){ if(DefStaticProcBTN[i] != DefStaticProcBTN[i -1]){ MessageBox(NULL, _T("違う"), _T("ぼ"), MB_OK); break; } } } MessageBox(NULL, _T("終了"), _T("m"), MB_OK); } 保障されているのかな〜。誰か教えて。
- 361 名前:デフォルトの名無しさん mailto:sage [2008/12/15(月) 10:52:55 ]
- 何がしりたいのかわからん。
登録したウィンドウクラスにプロシージャも入ってるだろう。 でも同じプロセス内で差し替えできるから作った時期で違うようにはできる。
- 362 名前:360 mailto:sage [2008/12/15(月) 11:38:13 ]
- ごめん、無かったことにして。
- 363 名前:デフォルトの名無しさん mailto:sage [2008/12/15(月) 17:35:59 ]
- >>359
さらに別のだれかがサブクラス化しているなどといったこともあるから、 一般に同じと仮定することは危険。 ウィンドウハンドルと元のウィンドウプロシージャのどれとどれが対応するのか 分かるように保存しておけば、それぞれのアドレスが異なっていても 同じウィンドウプロシージャでサブクラス化できるはずだ。
- 364 名前:デフォルトの名無しさん mailto:sage [2008/12/15(月) 22:35:59 ]
- 3×n行のCSVファイルを読み込んで内部テーブル(?)にして、
後からそれを1行ずつ抽出してその項目を使って別の処理をするように今あるプログラムを書き換えたい。 VC++2005、WindowsXPで作業してます。 かなりの初心者ですがどうぞよろしくお願いします。
- 365 名前:デフォルトの名無しさん mailto:sage [2008/12/15(月) 22:41:01 ]
- 宿題なら宿題スレで一発ですよ。
そうでないなら、どこは分かるけどどこが分からないというのをもっとはっきりさせてください。
- 366 名前:デフォルトの名無しさん mailto:sage [2008/12/15(月) 22:53:16 ]
- 宿題じゃないんす・・・仕事なんですw
CArrayとか使ってみたんだけど、なかなかうまくいかず・・・ あと、内部テーブルを1行ずつ読み込んでループさせる方法がよくわからん。 レベル低い質問で申し訳ないです
- 367 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 00:18:30 ]
- 誰か来てくれると信じて書いてみるw
INT CLogFileConditions::LoadAllSearchInfo() { CCSVFile file; CFileException fError; CString sSearchListFile; m_iResID = 0; m_iConditionStatus = 0; sSearchListFile = g_CurrentDir; sSearchListFile += LOG_SEARCH_LIST_FILE; if( file.Open( sSearchListFile, CFile::modeRead, &fError) ) { CString strLogKind, strServerName, intSearchLength, sVal ; m_LogKindToPath.RemoveAll(); while( file.ReadString() ) { if( file.GetFieldCount()>=3 ) { strLogKind = file.GetField(0); strServerName = file.GetField(1); intSearchLength = file.GetField(2); }
- 368 名前:つづき mailto:sage [2008/12/16(火) 00:20:27 ]
- }
file.Close(); if( !m_LogSearchCondition.GetCount() ) { m_iResID = IDS_ERR401; m_iConditionStatus = 401;//ErrorIDNumber } } else { m_iConditionStatus = -1; MsgBoxBySystemErrID( m_hwndParent, fError.m_lOsError,fError.m_strFileName ); } return m_iConditionStatus; } みたいな感じで処理条件を読み込む処理をまず作りたい。 ひとつめのレスの最後の方の処理をCSVを読み込む二次元配列にしたいんだ。 どうぞお力をお貸しください。。
- 369 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 00:38:08 ]
- 普通に配列をnewして入れてけばいいじゃんか
- 370 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 00:46:41 ]
- ありがとう。
でもほんと全然わかんないんだw もうちょっと詳しく書いてくれると助かります。 ごめんな
- 371 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 00:53:34 ]
- コレクションクラスが使えるようになったほうがいいと思うけどねぇ・・
まずどこに入れたいのか、入れ物を定義しなさいよ。
- 372 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 01:04:47 ]
- すまんコレクションクラスがわからん・・・
まあ定義もよくわかんないんだけどw ネットで見ようみまねで public: CArray<double, double> GetLogSearchCondition(){ return &m_LogSearchCondition; } CDoubleArray& operator=( CDoubleArray& src ) { for( int n = 0; n < src.GetSize(); n++ ) { this->Add( src[n] ); } return *this; } }; こんなん書いたらエラーが270個くらい出ました。。
- 373 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 01:14:20 ]
- 二次元配列にしたいって書いてるけど3つのフィールドは文字列文字列整数なんだよね?
とりあえずその3つが入るクラスを定義して、それの配列なりArrayなりつくって入れてけばいい。 長さわからんなら、数える手段を考えるか随時伸びるようにすればいい。
- 374 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 01:19:27 ]
- そう、そうなんだけどそのやり方がわかんないんです。
ほんとすいません。。
- 375 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 01:30:52 ]
- クラスの定義ってこういう感じ?
public: void SetLogKindForSearch( CString sLogKindForSearch ); void SetServerNamesForSearch( CString sServerNamesForSearch ); int SetSerachLength( INT sSearchLength ); だが、配列にしていく方法はさっぱりだぜ・・・
- 376 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 02:56:10 ]
- CArrayを先頭につければいいのかな?
だかフィールド3つで下に続いていくようにする方法がわからぬ・・・
- 377 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 04:03:43 ]
- CMapStringObからCArrayに引数を変換できないっていうエラーが出るんだが、
意味が全くわからん・・・ 誰も起きてないかこんな時間・・・
- 378 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 05:59:41 ]
- 言語の文法をろくに知らずにプログラムを書こうなんて、普通に不可能。
まず入門書を一通り読め。
- 379 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 07:01:34 ]
- そんな時間がないのでご助力をお願いしているのです。。
- 380 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 08:54:27 ]
- >>363
d。 ボタンのプロシージャはどれでも良いからボタンに返せばいいんですね。
- 381 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 11:50:08 ]
- >>379
みんな冷たいよな。 まずはここを見て書き方を勉強する。 2hyo.com/
- 382 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 14:18:46 ]
- 仕事の話を2chで聞くとか信じられんわ……。
- 383 名前:デフォルトの名無しさん [2008/12/16(火) 15:04:12 ]
- 文字をドラッグで選択するとその部分が反転するプログラムを作りたいのですが、
マウスのクリックで範囲のポジションを取得して選択範囲は取得できたのですが、 反転をどうやればいいのかがわかりません。アドバイスお願いします。
- 384 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 15:05:18 ]
- まあ自分でコード書いて出してくれてるから対応はしやすいんだが、
出してくるコードが頓珍漢すぎてどこから説明したもんかわからんのだよ。 自分で理解してる範囲で書いてくれればいいんだが、適当にあちこちから断片集めてみました というコードじゃ直しようもない・・・ 仕様書いて0から起こしたほうがまだましだな・・
- 385 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 15:08:07 ]
- >>383
反転する前の表示はどうやってんのさ。 TextColorとBackColor入れ替えて書いてみるとか、 システムの標準の色から持ってきてそれで書いてみるとか。
- 386 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 15:16:20 ]
- >>385
元描画がいじれないとして、上から被せるような、CWndまでおおげさじゃなくてもいいんですが、 レイヤー的なもので半透明領域をかぶせられる関数は用意されていないでしょうか?
- 387 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 15:27:11 ]
- >>386
そんなのないと思うけど、、、再描画とかどうすんのさ。 いんちきだが、PatBlt()でDSTINVERTで反転とかどうよ。
- 388 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 16:48:52 ]
- なるどほ、元が動くと四角が付いてこないので被せるのは厳しいですね。
元をハッキングする方向にきりかえようとおもいます。ありがとうございました。
- 389 名前:デフォルトの名無しさん [2008/12/16(火) 17:51:24 ]
- C++でint型変数の値をchar型に変換したいのですが、普通にキャストしてもエラーが出ます
どうしたらいいのでしょう?
- 390 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 17:55:03 ]
- char配列の文字列にしたいと言っているのであれば、
ostringstreamか何かでstringにしてc_str()で取り出すとか、 あるいはsprintfなど。
- 391 名前:デフォルトの名無しさん [2008/12/16(火) 18:03:23 ]
- ありがとうございます。試してみます
- 392 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 20:00:10 ]
- 林晴比古氏のVisualC++のビギナー編を買ったのですが、自分の開発環境がexpress editionなのでMFCがありません。
サンプルがほぼMFCなので無駄な買い物をしてしまった…と見ていいのでしょうか? 他に手があるのでしょうか?
- 393 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 20:43:46 ]
- かわいそう・・・
仲間だからわかる・・・
- 394 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 20:47:06 ]
- やはり無理でしたか…
VisualStudioの基本的な操作を覚えるには役に立ちますよね? お互いがんばりましょう。
- 395 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 21:29:59 ]
- まったく役に立たないと思います。
MFCが使えるようになってからも役に立たない本でした。 林晴比古のC++シニア上下は、ぼろぼろになった今でも時々読みます。 www.kumei.ne.jp/c_lang/ 自分はMFCからなのですが、ここのWinAPIの最初の方だけ読んで一日でMFC使わないソフトも作れました。
- 396 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 21:45:26 ]
- 最近の林本は.netのサンプルものってたような気がしたけど
|

|