1 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 12:16:11 ] Visual C++入門者・初心者からの質問を、 お兄ちゃんお姉ちゃん達が優しく、時には厳しく回答してくれるスレッドです。 ■質問するにあたって ・エラーや警告のときはエラーメッセージを書きましょう。 ・開発環境も書きましょう、特にWindowsForm、MFC、Win32アプリケーションの区別。 ・できるだけ具体的に。 質問の仕方については次のページが大変参考になります。 www.hyuki.com/writing/techask.html ■回答するにあたって ・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。 (MSDNのどの項目だとか、何のキーワードでGoogleするとか) ・ネタや煽りは軽く流しましょう。 過去スレ、関連スレなどは>>2-5 辺り。
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のサンプルものってたような気がしたけど
397 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 21:56:27 ] >>395 そちらを買うか林氏の本を買うかで悩んでたんです。そちらのほうがよかったのですね! >>396 .netのサンプルとは例えばどのようなものでしょう?
398 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 22:22:29 ] ソフトの操作だけなら林本でいいと思う
399 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 22:31:09 ] >>398 そう言ってもらえると助かります! みっちり操作を体に叩き込みたいと思います!
400 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 23:27:36 ] MFCを使えるバージョンってどれですか 無償版では使えないらしいので購入しようと思います MFCを使えるバージョンと購入方法と価格を教えてください
401 名前:M [2008/12/16(火) 23:30:14 ] C++でのラベリングで下のような場合で、簡単なプログラムのやり方を教えてくれませんか? 11111111 11111 1111111111 1111111 11111111 1 1 2222 2222 222222
402 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 23:33:06 ] MFCは全てのバージョンで使える
403 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 23:46:58 ] >>400 kakaku.com/item/37600110112/
404 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 09:30:25 ] 2003以前のバージョンなら確実に使える
405 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 19:36:51 ] 上級者向けの本ってあるんですか?
406 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 20:03:15 ] >>400 です >>403 さん スタンダードバージョンでMFC使えるんですね アマゾンで28000円かぁ 少々きつい出費になりますが どうしても作ってみたいものがあるので思い切って購入しようと思います 詳しくありがとうございました ヤマダ電機では売っていないのかなあ? ヤマダポイント約6000円持ってるんだよね^^; 教えてくれてありがとうでした
407 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 20:09:15 ] VC++2008 Express使ってます。 Windows SDKを最新のものにしようと思い、2005使っているとき以来のPSDKを削除、 ついでにVC++2008も一旦削除して、さてインストールし直すぞ、と意気込んでいるのですが、 VC++2008をインストールすると、Microsoft Windows SDK for Visual Studio 2008とやらが自動でインストールされるそうで。 この場合、一旦これをアンインストールしてからMicrosoft Windows SDK for Windows Server 2008をインストール、でOK?
408 名前:デフォルトの名無しさん [2008/12/17(水) 21:01:49 ] Microsoft Visual C++ 2008 Version 9.0.21022.8 RTM Win32コンソールアプリケーション ビルドの失敗 ソース↓ // test_1.cpp #include "stdafx.h" #include "test_2.cpp" class test_A{ static const int INT_A; static const char *TEXT_A; }; const int test_A::INT_A=1234; const char *test_A::TEXT_A="abcd"; int _tmain(int argc, _TCHAR* argv[]){ return 0; } // test_2.cpp #include "stdafx.h" class test_B{ static const int INT_B; static const char *TEXT_B; }; const int test_B::INT_B=1234; const char *test_B::TEXT_B="abcd";
409 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 21:03:02 ] >>408 のつづき。 ビルトをするとtest_Aは成功、test_Bは失敗します。ただし、一回目のビルドで 両方とも成功しているのに、その後同じ内容で二回目のビルドを行うと やはりtest_Bだけ失敗するようになる、という場合もあります。 ↓ ↓ ↓ fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました。 どこが原因なのか分かりません。
410 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 21:12:24 ] >>406 こうして2005Express Editionからアップグレードできることを知らない情弱が 今日も通常版を買っていくのであった・・・ www.microsoft.com/japan/msdn/howtobuy/vs2008/upgrade/default.aspx
411 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 21:35:52 ] げっ・・・・・・プロジェクト→クラスの追加、でやってみたら、なんとなく やらなければいけないことが分かりました・・・・・・・・orz
412 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 21:42:50 ] >>408 ,409 // test_1.cpp #include "test_2.cpp" // ←LINK1169 "test_2.cpp"をプロジェクトから除外するか、上記をコメントアウトすれば解決する。
413 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 22:53:48 ] >>412 _tmainでtest_Bが使えませんが・・・。
414 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 23:12:06 ] >>413 test_2.cppをプロジェクトから除外すれば使える。
415 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 23:22:12 ] >>414 「プロジェクトの外部」って扱いにしてから、呼び出すんですね?
416 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 23:33:59 ] >>415 そうだよ。どのみち #include "test_2.cpp" してんだから。 もっとも、#include "test_2.cpp"などというよーな書き方のほうを改めるべきだと思うがな。 // test.h class test_A{ static const int INT_A; static const char *TEXT_A; }; class test_B{ static const int INT_B; static const char *TEXT_B; }; // test.cpp #include "stdafx.h" #include "test.h" const int test_A::INT_A=1234; const char *test_A::TEXT_A="abcd"; const int test_B::INT_B=1234; const char *test_B::TEXT_B="abcd"; int _tmain( ・・・・) { // To Do }
417 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 23:51:08 ] ありがとうございました。 初歩の初歩でした。
418 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 04:18:43 ] cppをインクルードする奴ってキモチワルイ あとヘッダに関数の中身定義する奴も同様にキモイ
419 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 05:05:35 ] >>418 template関数全否定ですね、わかります
420 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 09:59:14 ] >>410 というわりにはExpression Blend 2のアップグレードが割引率高くて安いうえに VS2008Stdが入ってるのは教えてあげないのね。
421 名前:デフォルトの名無しさん [2008/12/18(木) 11:45:07 ] Visual Studio 2005 でC++をやっているのですが i = 0; for(i = 5; i < 0; i--){ printf("%d",i); fflush(stdout); Sleep(1000); } この処理を通ってくれません。forの頭までは来ているのですが次の処理でforを抜けてしまっています
422 名前:デフォルトの名無しさん [2008/12/18(木) 11:49:24 ] C++なのにprintfなんだ・・・
423 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 11:52:05 ] >>421 i > 0 にしろ それとi = 0は必要なのかね
424 名前:デフォルトの名無しさん [2008/12/18(木) 11:52:40 ] すみません。書き間違いです コンパイラがC++で、書いてるのはCです
425 名前:デフォルトの名無しさん [2008/12/18(木) 11:55:33 ] おお、いつのまに符号逆に・・・・最初は使えていたのにおかしいと思いました。すみませんありがとうございます i = 0 はなんとなく癖です
426 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 12:00:53 ] 下らないかもしれないけど、助けて下さい・・・。 VS2008でC++作ってます。 Irvineとかそういうダウンローダーでよくあるグリッドの入ったリストを作りたいんだけど、そのパーツ?コンポーネント?の名前さえも全くわからず・・・。 ToolBoxでコレだよ、的なもので良いので教えて下さい。
427 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 12:28:37 ] >>426 Microsoft DataGrid コントロール ActiveXのやつ
428 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 12:31:39 ] ってIrvineとかそういうダウンローダーを知らないんだけど LisiViewコントロールじゃだめなんかな?
429 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 12:35:23 ] ListViewってアイテムごとに枠がつかなくないか?エクセルみたいに
430 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 12:45:03 ] >>427 ありです。ちょっと試してみますー。
431 名前:426 mailto:sage [2008/12/18(木) 12:55:29 ] 出来たけどRowの部分に出てるのが気になる・・・orz >>429 Excelみたいに各セルが選択できるタイプじゃなくて、選択の対象が行単位で出来るものが良いんですよね。 今ちょうど見たら良い例があったので出してみると、ギコナビの板の中身の表示部分(スレッド一覧)とか。 それにグリッドがついたようなものが欲しいです。 色々と足りてなくて申し訳ない・・・orz
432 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 13:01:10 ] リソースのストリングテーブルって1つ以上作れないんですが、 文字列をまとめて入れ替えたい場合はどうすればいいんですか? もしかして全てのloadstringの行でIDSを分岐させてるんですか?
433 名前:あ [2008/12/18(木) 13:12:37 ] >>432 IDをずらす LoadString(hInstance, IDS_MYSTRING + (f ? 10000 : 0), sz, 256);
434 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 14:04:50 ] えーまじですか・・・ めちゃくちゃloadStringあるんですけど・・・テーブル切り替えでがいいです!!!
435 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 14:10:49 ] DLL単位で作って切り替えるとか
436 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 14:15:33 ] おーーーthx!DLLで検索したら出てきましたよ!
437 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 14:26:36 ] Irvineはソース公開されてる
438 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 14:59:50 ] カスタムコントロールを派生させたいんですが、これ基本クラスなんですか? CCustamCtrlとかないんですが
439 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 15:04:26 ] MFCの話? コントロールはCWndから派生
440 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 15:19:02 ] カスタムコントロール自体のクラス名は何ですか?
441 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 15:23:54 ] >>440 Static
442 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 16:11:22 ] そういうことかありがと
443 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 16:57:44 ] マクロで選択範囲の前と後に文字列を入れるにはどう書けばいいですか? "test" を選択してマクロ実行すると _T("test") になるようにしたいんです。 一度左に行って _T( を挿入するまでは出来るんですが、選択範囲が消えて ) を入れる位置がわからなくなります
444 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 17:04:48 ] 馬鹿でした。コピーしたらできました DTE.ActiveDocument.Selection.Copy() DTE.ActiveDocument.Selection.Text = "_T()" DTE.ActiveDocument.Selection.CharLeft() DTE.ActiveDocument.Selection.Paste()
445 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 18:56:57 ] スタティックコントロールの背景を変えたいのですが、 CStaticの派生クラスのOnPaintの中で void CStaticEX::OnPaint() { CPaintDC dc(this); // device context for painting dc.SetBkColor(RGB(20,30,100)); } と書いたのですが、背景色が変わりません。これどこがいけないんでしょうか?
446 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 19:05:11 ] CPaintDC dc(this);
447 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 19:54:47 ] >>431 やっぱListViewじゃない? ListView_SetExtendedListViewStyle(hListView, LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES); みたいな。 「リストビュー 拡張スタイル」でぐぐってみたら?
448 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 20:56:50 ] 他のダイアログボックスのオーバーライドOnOK関数呼び出しを、インテリセンスでは通っているのに コンパイルエラーでメンバでは無いといわれるのはなぜですか?
449 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 21:04:15 ] メンバでは無いから
450 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 21:22:04 ] もちろんメンバ関数として作成してインテリセンスでも通ってるんです。
451 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 22:03:52 ] インテリセンスがそんなに賢かったらコンパイルする必要ない
452 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 00:26:34 ] >>445 PAINTSTRUCT ps; CDC* pDC = BeginPaint(&ps); にする。 もっとも、そんなことしなくても、スタティックコントロールの背景色の変更は、 親ウィンドウの CWnd::OnCtlColor() で簡単にできるんだが・・・。
453 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 00:35:14 ] すみません、このスレでいいのか分からないんですが、質問させてください。 全くのプログラム初心者に近い人間で、HSPをちょっと触ったことがある程度なんですが C++を使ってみたいと思いました。 色々なサイトを回ってみたりしたのですが 開発環境の作り方がさっぱりわかりませんでした・・・orz ttp://codezine.jp/article/detail/207?p=1 このページを参考に物を作りつつ勉強していこうと思ったのですが 最初の一歩目で躓きましたorz どこか環境の作り方などが載っているサイトなどがあれば教えて頂けないでしょうか。 もし書き込むスレッドが間違っていたら教えて頂きたいです。 宜しくお願いします。
454 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 01:30:29 ] まずは窓のそばに観葉植物を置いて・・・。 という話じゃないとは思うんだが、開発環境って具体的には何を指してるんだ?
455 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 02:52:51 ] >>452 ありがとうございました。Ctlも調べてみますどうもです