1 名前:デフォルトの名無しさん mailto:sage [2006/11/21(火) 10:38:31 ] Microsoft Foundation Classライブラリ専用スレです。 前スレ ■MFC相談室 mfc16d.dll■ pc8.2ch.net/test/read.cgi/tech/1146117893/
604 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 18:33:19 ] 仮想リストビューってSetItemCountEx()で設定できるのは 1億件までですよね?ドキュメントにはDWORDの最大数まで サポートしているようなことが書いてありますが、 実際にそこまで設定することは出来ますか? SetItemCountExを辿っていくとSendMessageで投げていますが、 1億を越える数字を設定するとSendMessageがFALSEを返すので APIのバグのような気もしますけど。
605 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 18:36:08 ] >>604 出来ません。
606 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 19:05:42 ] >>604 >ドキュメントにはDWORDの最大数までサポートしているようなことが書いてありますが 実際はメモリ量とか空間の限界とかあるから無理。
607 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 19:13:09 ] SetItemCountEx の仕様見ると int になってるけど
608 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 19:29:02 ] そりゃまあ実際に限界があるのは仕方ないけど、 なんで「一億」にしてあるのかがわからん。 100000001件にすると表示されないのな。ワロス。 MSDNに書いとけよ。これじゃアメリカ国民全員の名前を リストコントロールで表示することは出来ないじゃん。 マイクロソフトのくせに自国民の数すらサポートできない コントロールを作るなんて非難の対象だな
609 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 20:35:56 ] 大丈夫、マイクロソフトなんて国はないから自国民は一人もいないので。
610 名前:598 mailto:sage [2007/04/15(日) 08:16:10 ] >>601 >>603 ありがとうございます 今は休み中にてVSEしかないのでMFCが無いので試せないので 明日にでも試そうと思います ちなみに画面を持たないCWndオブジェクトをCreate()する場合、 どんな引数が望ましいのでしょうか?
611 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 09:00:12 ] 非表示ウインドウでもhWndはあるだろ なかったらShowWindowで表示することもできない ShowWindow 指定されたウィンドウの表示状態を設定します。 BOOL ShowWindow( HWND hWnd, // handle to window int nCmdShow // show state of window ); パラメータ hWnd ウィンドウのハンドルを指定します。 nCmdShow ウィンドウの表示状態を指定します。
612 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 22:16:49 ] 質問です。 MFCで作成したソフトを公開したいのですが、VS.net2003の入っていないパソコンで 自分の作ったソフトを実行してみると、 mfc71d.dll msvcp71d.dll msvcr71d.dll が必要です、とでてきます。 これらのdllは勝手に配布しても大丈夫なのでしょうか?
613 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 22:30:07 ] いいえ、デバッグ版を勝手に配布してはいけません。
614 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 22:34:11 ] >>613 mfc71.dll などdがついていないものなら配布しても大丈夫なのでしょうか?
615 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 23:04:36 ] >>614 MSに訊け。つーか付属ドキュメントくらい読め。
616 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 00:55:13 ] >615 便乗で質問なんだが、その手の質問は MSDN購読してなくても答えてもらえるの?
617 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 06:01:25 ] そういう重要なことを正規ユーザーが知らないはずがない。 無料のexpressユーザー?と思ったけど MFCなら製品版使ってるんだろうし、どうやって手に入れたんだろう?
618 名前:デフォルトの名無しさん [2007/04/16(月) 17:40:12 ] すいません。くぐっても答えが見つからないので教えてください。 MFC AppWizerdで作ったDLLを Win32 Application(SDK)から呼び出せますでしょうか?
619 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 22:46:38 ] DLLの作りによる
620 名前:デフォルトの名無しさん [2007/04/21(土) 20:43:01 ] …そのまんまやなw
621 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 02:12:22 ] >>617 > 正規ユーザーが知らないはずがない いや、キッチリとは知らんよ俺は VC4,VC6,VS8の正規ユーザーなんだけどさw
622 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 07:54:49 ] そらあほだ。
623 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 11:35:15 ] 電車乗ったことあるけどキップの買い方知らないとかそういうレベル
624 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 11:36:16 ] 地方の人は知らないかもしれないけれど、今や切符を買わなくても電車に乗れるからねぇ。
625 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 12:38:59 ] 喩えの誤謬に突っ込む莫迦ありき。
626 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 13:00:28 ] いや、寧ろ誤謬と思ってないからこそ。 実際、知らなくても利用できると言いたかった。
627 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 14:21:36 ] 他のソフトならいざ知らず、開発ツールでそんなやつがいるとは驚きだw
628 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 14:56:35 ] _bstr_t strData[3]; strData[0] = "0000"; strData[1] = "1111"; strData[2] = "2222"; COleSafeArray sa; sa.CreateOneDim(VT_BSTR, 3, strData); _variant_t va = sa; とやってみると、_variant_tのコンストラクタで例外が出てしまいます。 sa.CreateOneDim(VT_BSTR, 3, strData); sa.CreateOneDim(VT_BSTR, 3); とすると通過するので、CreateOneDim()にstrDataを渡す方法が 間違ってるのかなと思うんですけど、 _bstr_t配列はどうやって渡すものなんでしょうか。 それとも、CreateOneDim()には_bstr_t配列は渡せない?
629 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 14:58:29 ] > sa.CreateOneDim(VT_BSTR, 3, strData); > sa.CreateOneDim(VT_BSTR, 3); > とすると通過するので sa.CreateOneDim(VT_BSTR, 3, strData); の部分を sa.CreateOneDim(VT_BSTR, 3); とすると通過するので のミスです。失礼しました。 よろしくお願いいたします。
630 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 16:25:30 ] _bstr_tの配列≠BSTRの配列
631 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 16:41:39 ] >>630 ということは、_bstr_t配列のままだとCreateOneDim()に直接は渡せないということですよね。 SAFEARRAYとかはまったくの未知で、このへんの使いかたって、 ネット上を探してもなかなか見つからないのですが、 _bstr_t配列やCString配列からCreateOneDim()に渡すBSTR配列を作る方法って、ご存知無いでしょうか。
632 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 17:06:44 ] ソース見るかメモリダンプして内部構造調べてみれば?
633 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 17:21:39 ] 切符買わないってどうやるの?
634 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 17:29:32 ] オレはもう何年も切符買ってないなあ Suicaとパスネットでやってきたが、最近はパスネットもいらなくなったし オートチャージで入金もない。 車はETCで料金所はとまらないし、旅行先でレンタカー 借りるときもETC車載かどうかを気にしてる
635 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 17:30:45 ] 飛行機もfelica携帯使ってチェックインもカウンターに行かないし 並ぶことがほとんどなくなった
636 名前:デフォルトの名無しさん [2007/04/27(金) 23:24:51 ] で、これらは相談か?
637 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 02:40:31 ] いいえ相談ではありません 日本語の練習です
638 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 11:12:47 ] VC6 MFCです プロジェクトの設定の、デバッグ、C/C++、リンクにプロジェクトオプションがあるのだが コマンドラインからビルドする場合この引数をどの様に渡したらいいの?
639 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 11:21:41 ] CL をコマンドラインから起動するときは、次の構文でオプションとファイル名を指定します。 CL [option...] file... [option | file]... [lib...] [@command-file] [/link link-opt...]
640 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 11:40:00 ] >>639 サンクス
641 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 02:23:43 ] msdev MyProject.dsp /MAKE "MyProject - Win32 Debug" /REBUILD とかは?
642 名前:デフォルトの名無しさん [2007/04/30(月) 22:58:55 ] おそらくかなり初歩的な質問なのですが、ダイアログから別ダイアログを開くためにはどうすればよいのでしょうか? VBのShowのようなコマンドがあるのかと思ったのですが、よくわかりませんでした。 よろしくお願いします。
643 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 23:05:30 ] CAboutDlgを参考に
644 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 05:06:10 ] >>642 インスタンス生成してから a) Create() して ShowWindow() b) DoModal() のどちらでも。つか、MSDNくらい嫁。
645 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 12:44:36 ] VC6 MFCです メニュー→ツール→オプション→ディレクトリ配下の インクルードファイル、ライブラリファイルは何処に保存されているのしょうか? C:\program Files\Microsoft Visual Studio配下はgrepしてみましたがありませんでした レジストリに記録されているのでしょうか? 知ってる人いたら教えてホスイ
646 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 13:45:47 ] パスの順番でファイルを検索する。
647 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 14:50:26 ] >>645 ちょっと探してみたがレジストリの HKEY_CURRENT_USER\Software\Microsoft\DevStudio\6.0\Build System\Components\Platforms\Win32 (x86)\Directories に入ってるみたいだよ
648 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 17:28:42 ] >>647 >>645 ですが 神が降臨しました、ありがとう実は現在ではVC6 MFCのUIが非常に悪いので 秀丸のマクロと融合させてできる限りの操作を秀丸中心にお行おうと思っていたところです そういう訳で探していました、本当にありがとね 処でMFCで作成したプログラムはコマンドラインからビルド、コンパイルまで出来るのでしょうか? (rcファイルはVCで作ってあると仮定してです)?
649 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 17:40:50 ] そりゃあできるっしょ。 プロジェクトのプロパティで、コンパイルとリンクのコマンドライン見られなかったっけ それ参考にしたらいいと思う。
650 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 17:45:48 ] >>649 サンクスです、取り合えず今レジのバックアップを保存したところです これからゴリゴリとマクロを書いていきますww
651 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 18:35:22 ] 全然見当はずれの方向に進んでるみたいだけど 相当頭堅そうだから本人のやりたいようにやらせて置くのが一番だな わざわざレジストリの場所教えてやったやつはかわいそう
652 名前:デフォルトの名無しさん [2007/05/01(火) 21:19:12 ] Platform SDKについてるMFCのソースをビルドすれば OSについてるものとまったく同じDLLが出来上がるんですか?
653 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 00:37:19 ] おい、Platform SDKはもう無くなったって、誰か教えてやれ。
654 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 17:48:50 ] VC2005 MFCです。 複数のモードレスダイアログを入れ子のような感じで作成したいのですが 孫のウィンドウを作成したところで正常に動作しなくなってしまいました。 実際のコードは下のように書いています。 //ビューでマウスがクリックされたら子ウィンドウとしてモードレスダイアログを生成 void CtestView::OnLButtonDown(UINT nFlags, CPoint point) { CTestDlg *testdlg; testdlg = new CTestDlg(); testdlg->Create(CTestDlg::IDD); testdlg->SetParent(this); testdlg->ShowWindow(SW_SHOW); CView::OnLButtonDown(nFlags, point); } //ビューで作成した子ウィンドウのボタンが押されたら、孫のモードレスダイアログを生成 void CTestDlg::OnBnClickedButton1() { CTestDlgB *testdlg; testdlg = new CTestDlgB(); testdlg->Create(CTestDlgB::IDD); testdlg->SetParent(GetParent()); testdlg->ShowWindow(SW_SHOW); } 何か根本的な勘違いをしてしまっているのでしょうか? 初歩的な質問ですいません、よろしくお願いします。
655 名前:654 mailto:sage [2007/05/02(水) 17:52:31 ] 少し変えて試してみたコードをそのまま書き込んでしまいました。 testdlg->SetParent(GetParent()); ↓ testdlg->SetParent(this); でした。
656 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 18:58:47 ] 「正常に動作しなくなってしまいました」を説明してくれ。 解決の重要な手がかりなんだから。
657 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 19:14:54 ] 関係ないけど モーダルならそういう風にローカル変数でもいいけど モードレスだと関数抜けた後のことが気になる。
658 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 19:17:27 ] ローカル変数ではないでしょ。 PostNcDestroy で delete this が入ってるか、メッセージで何とかしてるのかと
659 名前:654 mailto:sage [2007/05/02(水) 21:03:30 ] >>656 すいません、説明不足でした。 わかっている限りだと2パターンの変な挙動をしていて 1つはダイアログのウィンドウ自体は生成されているようでウィンドウの移動などはできるのですが 再描画のコードが動作していない時のような感じになる事があるのと(必ずというわけでも無いようです) 生成した孫ウィンドウがアクティブな間は何の問題も無く動作しているように見えるのですが 一度、子のウィンドウをアクティブにしてしまうとアプリケーション自体がフリーズしたような 状態になってしまうといった感じです。 念のためSDIの新規プロジェクトを作り直して見ても結果は同じでした。 >>657 ,658 一応 PostNcDestroy で delete this をしていました。 こういう場合でもスタティックかグローバル変数にしておいた方が安全なのでしょうか?
660 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 21:44:10 ] >659 思いつきで書いただけだから 「関係ないけど」と断ってる
661 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 21:45:08 ] >>659 ttp://msdn2.microsoft.com/en-us/library/ms633541.aspx >if hWndNewParent is not NULL and the window was previously a child of the desktop, > you should clear the WS_POPUP style and set the WS_CHILD style before calling SetParent. >Windows 2000/XP: When you change the parent of a window, you should synchronize the UISTATE of both windows. なんでSetParent使ってるの? ダイアログリソースに子スタイル設定して、Createで親指定すればいいのに。
662 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 00:14:49 ] あの最低な質問かもしれないですが、万が一という可能性もあるかもしれないので 質問させてください MFCでコンソールアプリって作成出来ないですよね、バージョンは問いません。
663 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 00:24:43 ] いや、普通にできるが。
664 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 00:52:33 ] >>663 え〜まじっすか? 新規作成→プロジェクトからはMFC ActiveX ContorolWizard or MFC AppWizard(dll) or MFC AppWizard(exe)しかないのだけど? これじゃあコンソールアプリは作成できないよね?
665 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 00:57:51 ] >>664 Win32コンソールプロジェクトを選択して、詳細でMFCサポート追加しろ。
666 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 01:16:56 ] >>665 そういう裏技があったのね、サンクス
667 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 09:51:02 ] CStringを返す関数から戻ってきたクラスは自分で廃棄しないでも良いですか?
668 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 10:28:54 ] CStringを返すと、呼び出し側ではそれのコピーを受け取るだろう。
669 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 00:16:24 ] よくこういう仕様のクラスあるけど腐ってるよね?>CString 一見便利そうに見えるけどインスタンスがハッキリしないから すげー扱いづらい こういう仕様デフォにする奴ってアフォだろ なげー文字列をCStringで扱うとアフォかってほど遅くなる 結局、使えない
670 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 00:49:03 ] ○○○ ○(・ω・)○ ソンナコトイワレテモ ○○○ ウチ、ボン・デ・ライオンヤシ .c(,_uuノ
671 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 11:46:34 ] >>669 >インスタンスがハッキリしないから 君が何を言っているのか判らないよ… 理解できてないだけじゃ?
672 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 11:54:13 ] >>669 せめて他の文字列を取り扱う手段と比較してから結論を出してくれ。
673 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 17:21:39 ] なんか、C/C++以外の言語と勘違いしてんじゃね?
674 名前:デフォルトの名無しさん [2007/05/07(月) 18:55:30 ] リソースエディタでダイアログボックスを作って、 CDialogを継承した派生クラスを作りました。 コントロールは、追加したメンバ変数を操作して 扱えましたが、ダイアログ自身はどうやれば操作 できるのでしょうか。 タイトルバーの文字列を変更する方法を模索中です。 this->SetWindowText("タイトル文字列"); を試すと異常終了だし。
675 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 19:29:26 ] 宇宙天地 與我力量 降伏群魔 迎来曙光 我が左手に封じられし鬼よ 今こそその力を、示せえーー!! うおおおおおおーーー!!! 俺の生徒に、手を出すなあーーー!!!!
676 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 20:10:38 ] >>674 異常終了の詳細キボンヌ
677 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 20:22:51 ] >>676 「Visual C++ Runtime Error [中止][無視][キャンセル]」 のような感じ文面のダイアログが出て終了。 本来ならそれで正解のはずということでしょうか。 何らかのプログラム上のミスが原因で異常終了が出てるのではないか という意味でしょうか。
678 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 20:30:27 ] SetWindowTextをどこで呼び出してる? コンストラクタの中とかじゃダメだよ。 ちゃんとウィンドウが作成されてCDialogオブジェクトに アタッチされてからじゃないと。
679 名前:デフォルトの名無しさん [2007/05/07(月) 20:40:02 ] >>672 じゃ、mallocで確保した領域に突っ込んだ文字列でいいよ これで想像付く? 後付けであれがないこれがないごちゃごちゃいうなよぶっ殺すぞ
680 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 20:43:58 ] >>678 エディットコントロールやスタティックテキストの値を変更している直後 で呼び出してます。 SetWindowTextで正解で、やはり何かプログラム上のミスでしたか。 わかりました、ありがとうございます。
681 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 20:50:22 ] CDialogもCWndの派生クラスだしな そもそもエラーで止まったところで何エラーなのか調べなさいよ
682 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 20:58:27 ] イヤです
683 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 22:29:57 ] >>679 想像も何も、あんたが比較して実際に遅いかどうか判断しなさいよ。
684 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 22:39:03 ] >>683 CStringは糞だろ 文字列に1文字ずつ足していくとどんどん遅くなってく類だろw
685 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 22:42:11 ] どうやって足しているのか興味深いなぁ。 まさかとは思うが、CString foo = ""; for (;;) {foo = foo + '-'; std::cout << foo << std::endl;} とかしちゃってるんだろうかw
686 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 23:04:49 ] 横レスだけど、それで突然思い出したから自分用のメモ代わりに書いとく。 CString hoge, hoge2; strcpy(hoge.GetBuffer(20), "this is a test."); hoge=""; //クリアしたつもりだけど何故かクリアされていない int length=hoge.GetLength(); //この値は確かにゼロ hoge2=hoge; //でもhogeもhoge2も"this is..."が入る hoge="AAA"; //これなら上書きされる int length2=hoge.GetLength(); //この値は3 hoge=""; //今度はきちんとクリアされる
687 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 23:06:47 ] >>685 mStr += strbuff; mStrはCString型のメンバ変数、strbuffは引数からうけとったchar* メソッド実行するたびに鬱になるw 後、CStringの変数を引数に突っ込んで中身を変更したいときとかウザイ transUnko(char* unko,char* chinko) ってときにいちいち移し変えなきゃいけねぇじゃん それか transUnko(CString *unko,char *chinko) 作らなきゃいけねぇじゃん(俺の知識だと) 後、 strXXX系の関数でいい感じにすでにこさえてあるC言語自分ライブラリ使いたいときも面倒 つーか、気軽に文字列型として扱えないところがウンコだね うにこーど?いらねぇってw対応予定ねーよ。マジでw って書いてみたけどさ、 もし簡単にできるにしてもできることがわかりにきぃ ねっとりべっとりしてやがんだこのクラス つかいにくーい!
688 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 23:18:12 ] MFC以外でもCString使いたいという話をよく聞くし、 MFCの中では評判いいクラスだと思う。 慣れないと使いにくいのは確か
689 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 23:24:37 ] >686 CString::GetBuffer 解説 GetBuffer 関数から返されるポインタを使って文字列の内容を変更するときは、 次に他の CString メンバ関数を使う前に、ReleaseBuffer 関数を呼び出す必要があります。
690 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 23:38:10 ] MFCを使うDLLの遅延ロードってNGなのかな? というのも、delayimp.libの中ではAfxLoadLibrary()ではなく、 LoadLibrary()を使っているから、どうなんだろう??
691 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 01:12:30 ] もともと遅延ロードってのは、セグメントを分けてれば Windows がちゃんとやってくれたんだよな。 MFCが自動的にやってくれるようになっただけで。
692 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 03:18:26 ] GetBuffer 関数から返されるポインタを使って文字列の内容を変更するときは、 次に他の CString メンバ関数を使う前に、ReleaseBuffer 関数を呼び出す必要があります。 CString hoge, hoge2; strcpy(hoge.GetBuffer(20), "this is a test."); hoge=""; //クリアしたつもりだけど何故かクリアされていない int length=hoge.GetLength(); //この値は確かにゼロ hoge2=hoge; //でもhogeもhoge2も"this is..."が入る ↑↑↑ここでコンパイル時にエラー出してくれりゃいいのに hoge="AAA"; //これなら上書きされる int length2=hoge.GetLength(); //この値は3 hoge=""; //今度はきちんとクリアされる
693 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 05:58:01 ] >>692 逆だな。ReleaseBuffer()する前にそうやってバッファを変更できないようにするためにGetBuffer()があるんだ。 つまり、fclose()しないでfopen()し直して、ファイルが更新されていないって文句言うようなもんだ。 >>687 少なくとも、レガシーな文字列とCStringを混在させて使うのが間違い。 型が違うのだから、相互にそのまま使えないのは当然だと思うが。 例えばprintf()に渡すように文字列を変更しないならキャストオペレータのお蔭で手間要らずなんだし。 Ex. void printSample(const char * foo) {printf("%s\n", foo);} CString bar = "Bar"; printSample(bar); 文字列を変更する関数は参照でも渡せばいいし。 Ex. void buildString(CString & foo) {foo += foo;} CString bar = "Bar"; buildString(bar);
694 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 11:21:24 ] いまいち、>692 がなにをしたいのか、全くわからん。 C++の事を何か勘違いしてるんじゃないだろうか。
695 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 11:25:02 ] レガシー大好きっ娘に何言っても無駄
696 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 22:15:50 ] ATLやWTLってSTLやBOOST、LOKIと親和性ありますか?
697 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 22:56:29 ] ないよ
698 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 23:29:51 ] STLと親和性高いWin32GUIライブラリがあった気がするんだが思い出せない
699 名前:デフォルトの名無しさん [2007/05/08(火) 23:45:24 ] リストビューオブジェクトに一次元配列を直接セットする方法はないでしょうか? いまはループで回してsetItemでセル一個ずつにセットしてます。 もっと効率がいい方法があればいいのですが。 よろしくお願いします。
700 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 00:47:08 ] >>699 つLVS_OWNERDATA
701 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 01:13:12 ] >>698 Win32 GUI Generics www.torjo.com/win32gui/ sourceforge.net/projects/win32gui/
702 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 14:03:56 ] >>694 >C++の事を何か勘違いしてるんじゃないだろうか。 いやいや、 >↑↑↑ここでコンパイル時にエラー出してくれりゃいいのに なんて書くくらいだから 勘違いとかそういうレベルじゃない。
703 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 15:19:50 ] ATL/STLはSTLと一緒に使える
704 名前:デフォルトの名無しさん [2007/05/09(水) 21:51:00 ] VC6.0で下記のページをみてステータスバーをダイアログにセットしたのですが、 SetTextしても文字が表示されません。 ttp://athomejp.com/goldfish/mfc/dialog/statusbar.asp MSDN等調べてみたのですが、実装方法がいろいろありすぎて、 どれが最適で何をしたらいいのかわかりませんでした。 すみませんが、よろしくお願い致します。