- 1 名前:デフォルトの名無しさん [2008/12/26(金) 00:43:36 ]
- Microsoft Foundation Classライブラリ専用スレです。
前スレ ■MFC相談室 mfc19d.dll■ pc11.2ch.net/test/read.cgi/tech/1207301867/
- 261 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 13:50:47 ]
- >>260
Viewクラスの使い方ぐらい調べろ、阿呆が
- 262 名前:名無し募集中。。。 mailto:sage [2009/01/23(金) 14:25:44 ]
- 使わないDocがあってもいいじゃない
m_pDocTemplate->OpenDocumentFile(NULL) が楽なんじゃないかなぁ
- 263 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 15:35:09 ]
- そんな書き方ができるんですね!ありがとうございます。
>>261 死ね
- 264 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 10:50:59 ]
- viewじゃないコントロールもあるよ
- 265 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 10:53:01 ]
- CDCクラスからウィンドウハンドル(hWnd)って取得できますかね?
- 266 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 11:33:18 ]
- つ CDC::GetWindow
- 267 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 11:34:22 ]
- AfxGetMainWnd()->GetSafeHwnd();
- 268 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 16:11:14 ]
- Visual Studio 2008 SP1にてMFCアプリケーションを作るんだけど、
ダイアログにも"視覚スタイルと色"を反映させたいのですが、 無理でしょうか? "視覚スタイルと色"を反映させたSDIでも、 ダイアログ(CAboutDlg)だけが浮いたデザインの気がするので、 知ってる方が居られればご教授願いたいです。
- 269 名前:デフォルトの名無しさん [2009/01/31(土) 00:02:52 ]
- MFCって今後衰退して、.NETがデファクトスタンダードになるんですか?
今更、MFCをやれなんて上長から言われたんだけど、MFCでガリガリ かけるようになった頃にはVSから姿を消してたら淋しいな
- 270 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 00:05:27 ]
- 少なくともMSは、数年前まではそのつもりだったんだろうな
- 271 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 02:02:34 ]
- MFCが消える頃に、やっとガリガリかける程度なら、
消えて当然のプログラマ。
- 272 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 02:49:03 ]
- >>269
触ってみたけど変わんない 俺、ツリーのドラッグアンドドロップが簡単にできるとか リストの更新関連がうまくできるようになってるとかそういうの期待したけど 結局、全然改善されてないところがアフォだと思った 今ならノウハウや情報がそろってるMFCのがいいよ .NETは糞面倒臭い上に情報少ない んでMFCやってから.NET入っても同じところに気を配らないといけないのは まったく同じなので情報が豊富なMFCから入ったほうがいいと思う
- 273 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 05:42:34 ]
- .NETの方が情報は豊富
- 274 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 08:47:27 ]
- MFCでやってたらいざとなったら素APIに逃げるからな
って.NETでもP/Invokeに逃げたりするか
- 275 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 16:12:58 ]
- 時代はVB
- 276 名前:デフォルトの名無しさん [2009/01/31(土) 16:18:59 ]
- 工エエェェ(´д`)ェェエエ工工
- 277 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 03:21:56 ]
- というかC++/CLIで.NETは書きにくい
凄く汚くなる C++/CLI単体は悪くないと思ってるけど
- 278 名前:デフォルトの名無しさん [2009/02/01(日) 03:27:28 ]
- .NETを使わないならC++/CLIを使う必要があるのか?
- 279 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 16:47:36 ]
- CWinAppをCWinAppExに変えただけで、400KBから1800KBにexeファイルのサイズが大きくなった
MFCでかくなりすぎワロタ
- 280 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 17:11:55 ]
- さらにリソース追加で3Mバ・イ・ト!
- 281 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 21:00:50 ]
- スタティックリンクしてんのか?
ダイナミックリンクに直せよ
- 282 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 21:19:17 ]
- やだよばか
- 283 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 21:21:56 ]
- 別にサイズなんかどうだっていいような気がするけどね
でかいとなんかヤバイの?
- 284 名前:デフォルトの名無しさん [2009/02/01(日) 22:22:36 ]
- >>283
デカくてなにかいいの?
- 285 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 22:27:35 ]
- >>284
いや、勝手にでかくなるからさ
- 286 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 07:24:22 ]
- >>272
ツリーの(略)とかはWPFではできるよ ただ、C++/CLIじゃWPF使えないからC++のコードはバッサリ捨てなきゃならないけどね…
- 287 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 20:33:41 ]
- はじめまして。
MFCのコレクションクラスにて質問があります。 MFCのコレクションクラスにCListとCByteArrayってのがあります。 これを使って、たとえば通信電文の様に可変長データをリストに置きたい場合 CList<CByteArray, &CByteArray>と書けば良いのでしょうか? error C2955: 'CArray' : クラス テンプレート を使用するには テンプレート 引数リストが必要です ってのが出て、どうしていいかわからないです。 有効な宣言の仕方があれば、教えていただきたいですが・・・・
- 288 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 21:12:11 ]
- >>287
そもそも&の位置が前後逆だな。 直したところでCByteArrayはoperator=の実装が無いからやっぱり駄目だけど。 MFC的には、CList<CByteArray*>って感じにポインタで持つしかないと思う。 これ以上はSTLの出番か?全然詳しくないから答えられないけど。
- 289 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 22:56:09 ]
- C++で扱いやすい新しいフレームワークを作って欲しいのが本音だな
.NETと住み分けて
- 290 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 23:11:43 ]
- WTLはそれなりに使いやすいだろメッセージハンドラもIDE上で追加できるし。
EEでは古いATLになっちゃうのが難だけどMFCじゃ使えないし。 eGUI++は使ったことないから判らないがstd::stringてのが嫌だな。
- 291 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 08:17:48 ]
- >>288
やっぱりSTLで組むしかないのですか・・・ がんばってみたいと思います。 ありがとうございます。
- 292 名前:デフォルトの名無しさん [2009/02/03(火) 10:26:48 ]
- >>291
CByteArrayの派生クラスを定義して、そいつでoperator =を実装した上で、 CList<CMyByteArray, const &CMyByteArray>とすればいけると思う。
- 293 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 10:37:34 ]
- つーか、STL のコンテナではなく
MFC のコレクションを使うメリットって何だろう。
- 294 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 16:56:07 ]
- STLをリンクしなくて済む
- 295 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 17:52:53 ]
- CObject からの派生していること
- 296 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 21:35:34 ]
- MFCベースならMFCに統一したいっていうのはあるな
- 297 名前:デフォルトの名無しさん [2009/02/03(火) 23:03:50 ]
- CListCtrlのアイコンモードで
ラベルを複数行表示させる方法教えてください
- 298 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 23:39:33 ]
- エクスプローラと同じだろ
- 299 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 23:52:35 ]
- >>298
ってことは2行までしか表示できないって事? 省略されずに複数行を表示はだめか・・・
- 300 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 03:09:18 ]
- >>293
デバッグ実行時にアサート出してくれる、とかMFC例外クラスのスローとか ただ統一しないとめっちゃ不便
- 301 名前:デフォルトの名無しさん [2009/02/04(水) 09:21:26 ]
- >>297
ラベルってヘッダコントロールのテキストのこと?
- 302 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 09:26:35 ]
- アイコンモードにヘッダコントロールはない!
- 303 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 13:27:48 ]
- アイコンラベルのワードラップかな?
- 304 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 20:35:39 ]
- 今までEXEで作ってたのを、DLL化しようとしたけど
プロジェクト作り直すのに凄い苦労する。 なんかいい方法あるかね?
- 305 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 21:38:23 ]
- aaa
- 306 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:24:36 ]
- >>304
数個なら手で たくさんあるならPowerShellスクリプトで設定を置換
- 307 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:26:08 ]
- >>301
>>303 エクスプローラで言うとファイル名が表示されている部分です そこに複数行の文字を表示したいと思っています char sz[] = "AAAAAAAAAAA\nBBBBBBBBBBB\nCCCCCC\nDDDD\nEEEEE" みたいな感じ、実際表示されるのは AAAAAAAAAAA BBBBBBBBBBBCCCCCC... と表示されてしまっています アイコンを選択するとちゃんと意図した改行位置で表示されるけど 選択していない状態でも全部ちゃんと表示したいです
- 308 名前:名無し募集中。。。 mailto:sage [2009/02/05(木) 00:15:42 ]
- \nじゃなくて\015\012にして試してみて
と思ったけど、エクスプローラーでもファイル名が省略される場合があるから 自分で実装するしかないんじゃないかな
- 309 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 08:16:03 ]
- >>307
アイコン間隔を変える事である程度は回避できるかもしれないが、複数行で 無制限に表示すると、左右両側のアイコンのラベルや、下側のアイコンに テキストがかぶる。 しかも、自動改行せず、1行の文字数(ラベル領域の横幅)や行数(ラベル領域 の高さ)を無制限にすると、ラベル領域が重なるのは隣接するアイコンだけ では済まなくなる。 表示上はそれでも済むけど、常にそういう状態で表示すると、任意のアイ コンやラベルをマウスでクリックできなくなるから、非選択時は省略表示 するというユーザインターフェースになっているんだと思う。 CViewやCScrollViewなりから、仕様を満足する派生クラスを自分で作る しかないね。
- 310 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 18:49:10 ]
- 2008のSP1入れてる人居たら教えてください。
SP1で初めてプログラム始めたのでSP1関係ないかもしれませんが、 テンプレートで作ったドッキングウィンドウの中にあるツールバーのボタンをコンボボックスに変えた後その中のエディット部分の文字列を 取り出すにはどうすればいいんでしょうか? .h CMFCToolBarComboBoxButton* m_ComboButton; .cpp // OnCreate m_ComboButton = new CMFCToolBarComboBoxButton(ID_EDIT, GetCmdMgr()->GetCmdImage(ID_EDIT), CBS_DROPDOWN); m_ToolBar.ReplaceButton(ID_BTN, *m_ComboButton); // OnButtonClick CString a; a = m_ComboButton->GetText(); ヘルプにある手順と、サンプルも見て書きました。ボタンは置き換わるんですが、aが空なんです。GetEditからGetWindowなどもいろいろやりました どうしても文字列を取得できません。お願いします!
- 311 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 19:10:33 ]
- >>310
サンプルのだけど CMFCToolBarComboBoxButton* pSrcCombo = NULL; CObList listButtons; if (CMFCToolBar::GetCommandButtons(ID_DUMMY_SELECT_ACTIVE_CONFIGURATION, listButtons) > 0) { for (POSITION posCombo = listButtons.GetHeadPosition(); pSrcCombo == NULL && posCombo != NULL;) { CMFCToolBarComboBoxButton* pCombo = DYNAMIC_DOWNCAST(CMFCToolBarComboBoxButton, listButtons.GetNext(posCombo)); if (pCombo != NULL && CMFCToolBar::IsLastCommandFromButton(pCombo)) { pSrcCombo = pCombo; } } } if (pSrcCombo != NULL) { ASSERT_VALID(pSrcCombo); LPCTSTR lpszSelItem = pSrcCombo->GetItem(); CString strSelItem = (lpszSelItem == NULL) ? _T("") : lpszSelItem; AfxMessageBox(strSelItem); } else { AfxMessageBox(_T("Show \"Set Active Configuration\" dialog....")); } }
- 312 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 21:14:49 ]
- 調べてくれてありがとう。
一度LPCTSTRで取得してからCStringにしてみましたがだめでした。 コンボボックスのポインタのとり方もサンプルのように取得しましたが、だめでした。 CMFCToolBarComboBoxButtonのヘルプでGetTextは編集用のエディットのテキストを返すとあるのに これで返ってこないのがつらいです。 MFCの常識から考えて何か根本的なところのアドバイスをお願いします! 他にツールバーに並んでるボタンはボタンのメンバで無効とかにできるので、ツールバー上のアイテムの取得は出来てると思うんです。
- 313 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 21:27:43 ]
- >>312
アドバイスでいいのか。 ちゃんとドキュメントを読んで勉強しろ。 理解力があれば解決できるだろ。
- 314 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:01:29 ]
- GetWindowTextを使えば?
- 315 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:16:45 ]
- それもやったんですが、空でした。
- 316 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:20:12 ]
- >>311のやり方でポインタを取得したら
GetEditCtrl()->GetWindowText で取得できる。
- 317 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:31:50 ]
- だめです。
pSrcCombo != NULL のelseの方に飛びます。 もうべた貼りしましたがだめでした。 キーでボックスに入力したあとそれを更新してメンバ変数に入れなくてはいけないんでしょうか? GetText()の戻値がプロテクト変数を返すだけになっていたのですが、どこで入るのかがたどれません
- 318 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:43:20 ]
- CMFCToolBar::IsLastCommandFromButton(pCombo)
を抜いたらいけるだろ?
- 319 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:47:01 ]
- みんなSP1も結構すらすら分かってるんだな
俺は来月から久々にMFCの仕事やりそうだから、VC6レベルでさえかなり不安だ
- 320 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 23:17:42 ]
- だめでした。
ID_DUMMY_SELECT_ACTIVE_CONFIGURATION をID_EDITにすると TRUEには飛びますが、 lpszSelItemが無効なポインタになります。 置き換えたボタンのポインタを取得するだけならGetButton(index)を使って CMFCToolBarComboboxButton* m_box = (CMFCToolBarComboboxButton*)m_toolbar.GetButton(index); CString str = m_box.GetItem(); これはどこが問題あるんでしょうか? あと頻繁に出るんですが、ブレークポイントで、現在の設定ではヒットしません。このドキュメントのシンボルが読み込まれていません。 と出て、右クリで場所の許可で対応してるんですが、これなんですか?関係ありますか?
- 321 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 23:24:30 ]
- もしかしてリリースビルドじゃないのか?それだとデバッグの変数モニタは出鱈目になるぞ
- 322 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 23:29:37 ]
- リリースじゃないです。ncb消しとかクリーンも頻繁にやってるんですが、
なんどもここ挫折して後回しにして2か月ぐらいチャレンジしてるんですが、今だにTextが取得できません 取得できると教えてもらえただけでもありがとうです。なにか設定か、全然違うところが原因な気がしてきました。
- 323 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 23:30:19 ]
- ちょっと説明が悪かったかもしれないけど、
>>311はドロップダウンリストの場合に、リストを変更した時に取得する方法。 任意のタイミングで取得する場合は、 任意なので「CMFCToolBar::IsLastCommandFromButton(pCombo)」は要らない。 よって、TRUEに飛んだら pSrcCombo->GetEditCtrl()->GetWindowText で取得する。
- 324 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 23:41:33 ]
- >>308
>>309 ありがとう 時間的に厳しそうなのであきらめます 無制限に全部教示でなくても指定した行数だけは表示してくれるようになってると良かったなぁ 改行位置が結構重要なので省略された行は改行が無視されるのが痛いかった
- 325 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 23:49:59 ]
- >>323
おーできました!ありがとうございました。感動しました。 調べてもらってすいませんでした。じっくり解析します ありがとうございました!!!
- 326 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 20:12:38 ]
- 同僚に「CMutex, CEvent, CSemaphoreは欠陥がある」と主張してる人がいるんですが、本当でしょうか?
ググっても見付かったのは↓くらいで、裏付けに乏しいように思えるのですが。 ttp://www.flounder.com/avoid_mfc_syncrhonization.htm
- 327 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 22:50:36 ]
- >>326
確かにそのページの主張には同意しかねるね。 CMutexについてはタイムアウトを特別視する用途以外(所有権が取得できたかどうかだけを知りたい場合)なら問題なさそうだし。 CSingleLockの再帰呼び出しはそもそも想定外の使い方だと思う。 CreateMutexの記述には待機関数を同じスレッドで繰り返し呼び出してもいいけど、 待機条件を満たす毎にReleaseMutexを呼べと書いてある。
- 328 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 23:00:10 ]
- 再帰でデッドロックするのは当たり前だろうと
- 329 名前:326 mailto:sage [2009/02/07(土) 23:58:47 ]
- >327-328
ありがとうございます。 やはり欠陥と言うほどではないようですね。
- 330 名前:デフォルトの名無しさん [2009/02/08(日) 10:00:58 ]
- MDIでファイルを起動時に読み込むとき、pDocTemplate->OpenDocumentFileみたいな
ことをしますが、initInstance意外の場所でするときにpDocTemplate->OpenDocumentFile を使うとき、newとかあたりをどうやってコーディングすればいいか分からないのですが 教えてください。
- 331 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 10:58:25 ]
- 素直に CxxxApp::OpenDocumentFile() を使え
- 332 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 16:14:22 ]
- DrawTextで文字の背景を塗りつぶすのってどうやるんですか?
DT_NOCLIPだけで出来てるところもあるのでDT_NOCLIPを付けたんですが白で塗りつぶされてしまいます。 色を指定しなくてもいいんですが、文字ボックスが出来ないようにしたいんです
- 333 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 16:30:44 ]
- CDC::SetBkMode() で OPAQUE 指定かな?
色はCDC::SetTextColor() 文字ボックスってなんだっけ。
- 334 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 16:31:16 ]
- // CDC::DrawText
// このメンバ関数は、テキストを描画するために、デバイス コンテキストに現在選択されているフォント、テキストの色、背景色を使います。 ちゃんとマニュアル読めよ。 CDC::SetBkColor CDC::SetBkMode
- 335 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 16:32:33 ]
- ああ、背景の色だったな、すまん
- 336 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 16:50:07 ]
- そうだったBKだった思い出した
Brushだと思い込んでた thx
- 337 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 18:13:27 ]
- ウィンドウの関係がわかりません。
CStaticのなかにCStaticを作った時 中のCStaticにクリックメッセージを送るには,Zオーダーをどうしようが外から中にメッセージを素通りさせるコードを書かない限り 届かないんでしょうか? 塗りつぶしの順序とか考えてたらわけわからなくなって来たんですが、 どうすれば整理できて自由に子、孫などにメッセージが届くようになりますか?
- 338 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 18:32:58 ]
- SS_NOTIFY
- 339 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 18:37:01 ]
- スタティックは特別だったんですね。なんで他のと出来たりできなかったりとわけわかんなかったんです
ありがとうございました
- 340 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 19:03:40 ]
- 特別というか「スタティック」なんだから、本来はそういう動的な目的では使わない。
スタティック=静的。
- 341 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 19:08:47 ]
- CWndだとパラメータとかが複雑じゃないですか
だからなんか作る時はCStaticを基本にしてるんですが、もっといいのあるんですか?
- 342 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 21:10:47 ]
- 状況がよくわからない。
パラメータが複雑で嫌気がさすほど、メインウィンドウにいくつものウィンドウがあるのか?
- 343 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 21:14:09 ]
- スタティックコントロールもウインドウには変わりないだろ
いらないメッセージが発生しないようにデフォルトで殺してるだけで、 デフォルト以外がアブノーマルな使い方とは思わないな
- 344 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 21:15:02 ]
- カスタムコントロールとかは?
- 345 名前:名無し募集中。。。 mailto:sage [2009/02/08(日) 22:40:54 ]
- スタティックコントロールにIDを振れば良いじゃない
- 346 名前:デフォルトの名無しさん [2009/02/08(日) 22:52:27 ]
- MFCってなんで、.NETみたいにポトペタ環境にしないの?
コントロールも.NETの1/10位しかないし・・・
- 347 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 23:17:34 ]
- >コントロールも.NETの1/10位しかないし・・・
kwsk
- 348 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 00:35:50 ]
- >>346
.netってツリーのドラッグアンドドロップとか リストコントロールのウィンドウ枠の固定機能とかって楽にできるようになってる? 結構、客から要望くる機能で毎回作らないといけないんだけど・・・
- 349 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 00:52:03 ]
- ウィンドウ枠の固定ってなんだ?
コンテナに貼り付けてDock指定するやつのことかな?
- 350 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 01:03:02 ]
- >>349
エクセルを開くんだ
- 351 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 05:58:17 ]
- SS_NOTIFYでCStaticの子どもにメッセージが届くようになりましたが
今度は子がある部分をクリックしたとき親のクリックが実行されなくなりました。 クリックした場所にある特定の全ウィンドウにクリックを送るにはどうすればいいんでしょうか
- 352 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 07:24:24 ]
- MFCはAPIをラップしたようなコントロールしかないんだよな
- 353 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 10:00:45 ]
- まぁそこから派生クラス作るわけだね 自作コントロール作るにはもってこいだ
- 354 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 10:17:48 ]
- >子がある部分をクリックしたとき親のクリックが実行されなくなりました
親は「クリックされていない」からな。 クリックされた座標を含むウィンドウを列挙して、それらのウィンドウすべてにメッセージを送る関数を 自前で作るしかあるまい。
- 355 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 14:24:33 ]
- CMFCMenuBar を使うと、例えば ファイル(F) とかの F の下にラインが引かれないんだけど、
これはどうすれば直る? TBSTYLE_NOPREFIX はつけていないんだけど・・・。
- 356 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 16:01:07 ]
- >>355
当然、文字列は「ファイル(&F) 」ってやってるんだよな? ところで、プルダウンメニューはCMenuだと思うけど、CMenuBarを使ってる ということは、ツールバーのボタンのキャプションでアンダーバーが表示 されないってこと? そもそもツールバーやダイアログバーに、そんな機能あったっけ?
- 357 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 17:38:09 ]
- >>355
MFC内部で&を消して描画してるから無理。 &&Fとか&&&Fって書けば表示はされるけどAlt+Fに反応しなくなるからやはり無理。 フューチャーパックは問題だらけだから諦めろ。
- 358 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 17:40:08 ]
- >当然、文字列は「ファイル(&F) 」ってやってるんだよな?
もちろん。 たとえば IE7 のメニューバー。あれもツールバーじゃん。そこにはアンダーバーがついてる。 他のアプリケーションでも同じ。 だけどCMFCMenuBar を使うと付かない。 Visual C++ 2008 Feature Pack のサンプル見ても付いてないんで仕様なのかなという気もするんだが、 何か見落としているよーな気もしてしっくりこないんだわ・・・。
- 359 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 17:41:58 ]
- おっと、書いているうちに書き込みが。
>>357 やっぱ仕様ということね。ふむ。
- 360 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 17:45:34 ]
- Feature Packなんてあるの初めて知ったわ まだベータ版なのか
でもおれのVSは2005(´・ω・`)
- 361 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 17:47:25 ]
- と思ったら今はリリースverなのね、スマソ
- 362 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 17:48:00 ]
- いやもうSP1に組み込まれてる。
- 363 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 20:19:08 ]
- C++0x よりも 2008 SP1 のバグフィックスに力を入れて欲しいよな
バグがあるうちは業務で使えない
- 364 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 18:54:11 ]
- Feature PackでCDialogBarって表示される?
俺だけなんかな?
- 365 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 19:04:27 ]
- CPaneDialogを使えば CMFCxxxBar と連携できるのでは?
- 366 名前:364 mailto:sage [2009/02/10(火) 19:31:47 ]
- >>365
CPaneDialogのCreateメンバで、IDを指定するのね。 おぉぉーできたwww サンクスコ
- 367 名前:デフォルトの名無しさん [2009/02/11(水) 20:44:07 ]
- MDIでexeのアイコンにドラッグ&ドロップをするとファイルが開けるようにしたいのですが、
CString drag_file(m_lpCmdLine); if (drag_file != _T("")) { pDocTemplate->OpenDocumentFile(drag_file); } ではファイルが見つからないというメッセージボックスが出てうまくいきません。 MessageBox(drag_file);として見ても、ちゃんとドラッグしたファイルパスが拾えてるのですが・・・ どうすればイイですか?
- 368 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 20:47:54 ]
- ちゃんと引数飛んできてるか?
- 369 名前:デフォルトの名無しさん [2009/02/11(水) 21:03:37 ]
- MessageBox(drag_file);で見えるのできてるハズですが・・・。
- 370 名前:デフォルトの名無しさん [2009/02/11(水) 21:21:37 ]
- デバッグのパラメータにパスを入れたら起動してますます理解に苦しんでいるのですが、
Unicodeで開発しているのですが、文字コードのせいとかありますか?
- 371 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 21:46:47 ]
- MessageBoxじゃなくてデバッガでデバッグしろ
- 372 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 21:49:21 ]
- >>367
CString drag_file; drag_file.Format( _T("\"%s\""), m_lpCmdLine); // To Do...
- 373 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 21:37:19 ]
- すんません質問です。
VC2005で、CRichEditCtrlをもったダイアログベースのアプリを作っております。 CRichEditCtrlにShift_JISにないような文字(「もげる」を変換したらでる漢字とか)を 入れて、GetWindowTextWでその文字をCStringに取り込むと、その文字が?になって しまいます。これを回避する方法はありませんでしょうか?
- 374 名前:デフォルトの名無しさん mailto:sage [2009/02/16(月) 22:20:44 ]
- CStringが実はCStringAでした、ってオチは嫌だなあ。
昔と違って、今は簡単にMBCS/Unicode変換しちゃうからなあ。
- 375 名前:373 mailto:sage [2009/02/16(月) 22:47:35 ]
- soudan1.biglobe.ne.jp/qa4140782.html
↑で解決しました。お騒がせして申し訳ありません。
- 376 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 00:33:49 ]
- リソーススクリプト上だと、常に"RichEdit20A"で固定なのが大元の原因か。
なるほどなあ。
- 377 名前:デフォルトの名無しさん [2009/02/17(火) 21:49:00 ]
- う〜ん、serialize中にファイルが壊れている事に気づき、
子ウィンドウを開くのをやめたい場合ってどうしてます?
- 378 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:26:50 ]
- 気づいたのなら開かなきゃ良い。
子ウィンドウとは何物?
- 379 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 07:47:41 ]
- MDIのことか?
- 380 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 00:55:42 ]
- メインウィンドウから起動するダイアログにラジオボタンを設置しました。
起動時に選択されているラジオボタンを(動的に)変更したいのですが、やり方がわかりません。 ダイアログのコンストラクタ中でSetCheckをしても、 コンパイルは通るのですが、デバック中に「Debug Assertion Failed!」 と落ちます。(まだ実体ができてない?)
- 381 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 01:37:19 ]
- つ oninitdialog()
最近MFCやってないからあやふやだ・・・ 来週からまた使うことになりそうだからリハビリせねば
- 382 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 01:53:11 ]
- >>381
thx!できました。オーバーライドするのね。 ↓参考にしました rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200504/05040016.txt
- 383 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 12:26:30 ]
- >>382
既に見ていないかもしれないが ... ダイアログ派生クラスに、ラジオボタンに対応するint型のメンバ変数を 割り当てて、DoDataExchange()内でDDX_Radio(pDX,...)でコントロール に関連付けておけば、ダイアログウィンドウが生成されていないタイミ ングでも、クラスのオブジェクトが生成された時点で、メンバ変数には アクセスできるので、メンバ変数の初期値を変更してDoModal()すれば、 ラジオボタンの初期値を変更できるよ。 クラスウィザードでメンバ変数を割り当てると、コンストラクタで「-1」に 初期化されるコードが自動生成されるので、これを0〜の値にすればいい。
- 384 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 19:36:04 ]
- >クラスウィザードでメンバ変数を割り当てると、コンストラクタで「-1」に
>初期化されるコードが自動生成されるので、これを0〜の値にすればいい。 VS2008 だと初期値は 0。修正されたのかな。 ちなみに、変数のカテゴリには Value を選ぶこと。
- 385 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 10:18:58 ]
- MSDNのScribbleサンプルなんかを見ると、
リスト(m_strokeList)や配列(m_pointArray)などのメンバは堂々とpublicで、 描画時などは外から直接参照したり操作してるけど、 これってやはり手を抜いているだけでしょうか? それとも、この程度のものはいちいちカプセル化しないものなのでしょうか?
- 386 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 10:44:12 ]
- Scribbleサンプルって15年くらい前からあるよな・・・
- 387 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 11:48:51 ]
- >>385
クラスウィザードでメンバ変数を作ると、意識して設定しない限り public になる。
- 388 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 12:00:41 ]
- MSのサンプルは「動けばまだマシな方」くらいに思っとかないと。
- 389 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 20:03:47 ]
- CPaneDialog型って、リサイズをさせたくない場合どうすればいいんでしょ?
知っておられる方、情報をお願いします。
- 390 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 20:31:33 ]
- CBasePane::CanBeResized をオーバーライドして FALSE を返す
- 391 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 20:32:21 ]
- 「このメソッドは現在実装されていません。」だった。すまん
- 392 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 20:34:25 ]
- 実装すればいんだから、それでいい
- 393 名前:389 mailto:sage [2009/03/03(火) 09:10:56 ]
- >>390-392
Visual Studio 2008のIDEでは、 派生元へのオーバーライドができないのね・・・手書きなのか・・・ できました! ありがとうございます!
- 394 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 14:23:17 ]
- むみません。
ダイアログ上でレイアウトされたグループボックスにて、 文字色をで変更しようとSetTextColorを使ったのですが、 反映されませんでした。 何かコツみたいなものがあるのでしょうか? ちなみに環境はVS2008でMFC Feature Packを使っています。
- 395 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 14:56:00 ]
- むみません。
- 396 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 17:47:13 ]
- >>394
CWnd::OnCtlColor
- 397 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 17:37:02 ]
- VC++ 6 でプログラミングしています。
ポップアップメニューを表示しています。 各行で文字位置を合わせたいので固定ピッチのフォント を利用したいのですが、ポップアップメニューのフォント はどのようにすれば変更できますか? ポップアップメニュー作成は、TrackPopupMenuを使っています。
- 398 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 17:53:49 ]
- >>397
OwnerDraw Menu にする
- 399 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 21:48:22 ]
- ちと古いけど>>129の件、おれも悩んでたんで調べた結果を貼っとく。
afxGlobalData.SetMenuFontで設定するといいらしい。 他にもafxGlobalDataをいじるといろいろできるけど、 これ直接いじっていいんかな?
- 400 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 22:37:04 ]
- それをいじる関数として、CMFCMenuBar::SetMenuFont() が用意されているんだが。
- 401 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 23:27:13 ]
- あれ、CMFCMenuBarのヘルプを見てもFont関係が見あたらなかったから
MFCのソースを追っかけたのに・・・・ 思いっきり見落としたらしい。
- 402 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 00:56:41 ]
- ついでに言っておくと、WM_SETTINGCHANGE が飛んでくると
CMFCMenuBar::SetMenuFont() した内容はクリアされるから、再度設定しなおすこと。:-)
- 403 名前: ◆8x8z91r9YM [2009/03/09(月) 21:08:28 ]
- 質問です。
VS2005 MFCでCrystalReport(PUSH型)を扱ってる 参考になりそうなサイトをご存知の方おられましたら 教えていただけませんでしょうか? C#やVBなどは表示したいデータをDataSetでまとめて Crystalreportに渡して表示できますが、 それをMFCでどのように実装すればいいのか悩んでおります。。 よろしくお願い致します。
- 404 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 00:51:10 ]
- VS2008SP1のCMFCToolbarで、初期状態からアイコンの右側にテキストラベルを表示する方法は無いでしょうか。
ToolbarResetを発行してやると、文字は表示されるにはされるんですが、 カスタマイズ設定も消えてしまうので・・・
- 405 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 02:04:50 ]
- 横に表示できたっけ?
CMFCToolBar::EnableTextLabels() だと下に表示だよな。 CMFCToolBar::GetButton( nIndex)->m_bText = TRUE; あたりで試してみ。
- 406 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 06:25:28 ]
- VS2005 WinInet で http Postを使ってファイルアップロードをするプログラムを書いているのですが
うまくいきません。 ソース 80行程度をアップしてアドバイスを頂いてもよろしいでしょうか? 1週間ぐらい頑張りましたが分からなかったもので・・・。
- 407 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 08:02:46 ]
- それのどこがMFC?
- 408 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 09:28:21 ]
- 質問部分にCInternetSession等のMFCクラスを使ってれば質問は可
ただ「うまくいきません」としか説明できないんじゃ答えるつもりはない。
- 409 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 10:47:21 ]
- 406です。スレ汚し失礼します。
状態としてはデバッガ出力ではエラーは帰ってきていませんが スニファツールで見ると サーバから501エラーが帰ってきています。 サーバ側のPHPテストプログラムの方は $_FILES["upfile"]["tmp_name"] にも $_FILES['userfile']['error']にも 値が入ってきません。 多分ヘッダの送り方、設定の仕方がおかしいと思うのですが。。。 ソースは以下になります。
- 410 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 10:49:25 ]
- 80行貼るのかよ
ろだ使っては
- 411 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 10:49:28 ]
- #define APP_NAME "PostTool"
#define BOUNDARY "hogehoge" #define POST_FILE "C:\\TEST.DAT" #define BUF_SIZE 2048 bool PostData(TCHAR* uri){ bool bRtn = false; try { DWORD dwServiceType = 0, statusCode; CString strServer, strObject, strBuf, strBoundary = TEXT(BOUNDARY); INTERNET_PORT nPort; char szBuf[BUF_SIZE + 1]; if (AfxParseURL(uri, dwServiceType, strServer, strObject, nPort) == false) {OutputDebugString(TEXT("PostData() AfxParseURL失敗\n")); goto pd_End;} CInternetSession session(TEXT(APP_NAME)); CHttpConnection* conn = session.GetHttpConnection(strServer, CHttpConnection::HTTP_VERB_POST, nPort, NULL, NULL); CHttpFile* file = conn->OpenRequest(CHttpConnection::HTTP_VERB_POST, strObject, NULL, 1, NULL, NULL, INTERNET_FLAG_RELOAD | INTERNET_FLAG_DONT_CACHE);
- 412 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 10:59:43 ]
- すいません あっぷろだに置きました。
411の投稿すいませんでした。 ttp://www7.uploader.jp/dl/game/game_uljp00007.txt.html
- 413 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 11:04:14 ]
- support.microsoft.com/kb/811262/ja
エラー メッセージ : エラー 501/505 - 未実装または未サポート [HTTP 1.1 を使用する] チェック ボックスをクリックしてオフにし、[OK] をクリックします。 テストして問題が解決したかどうかを調べます。 2002 年 12 月現在、HTTP 1.1 は新しい Internet プロトコルです。 一部の Web サイトでは HTTP 1.0 が使用されているため、HTTP 1.1 を使用した場合、 接続の問題が発生することがあります。
- 414 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 11:44:28 ]
- こういう場合
プログラムに問題がある 設定が間違ってる 使い方が間違ってる ネット上にトラブルがある メールを送った相手に問題がある みたいにありとあらゆる原因が考えられるわけだけど いきなりプログラムのソース見ろと言われても 設定が間違ってる 使い方が間違ってる ネット上にトラブルがある メールを送った相手に問題がある だったら見るだけ無駄だろ
- 415 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 11:49:36 ]
- サーバ側のhttpdのログ見たらわかると思うよ
- 416 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 14:01:28 ]
- こういった感じでソース書いている人って多いのか?
・グローバル関数だし、 ・コメントないし、 ・goto ラベル使い放題だし、 ・for(;;)だし・・・ (while() 使えよ)
- 417 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 14:15:34 ]
- 別に習作なんだし
そういう関係ないところつっこむからソース出したがらない質問者が増える
- 418 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 17:29:12 ]
- Httpは手順が多くてネストが深くなるしエラー処理も多いからどうやっても汚くなる
手抜きしないできれいに書いてあるサンプルあったら見てみたい
- 419 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 17:32:03 ]
- >>416
> ・グローバル関数だし、 > ・コメントないし、 コミュニケーション能力重視とか、ヒューマンスキル重視の現場では、 ありがちだ。 業務で引き継ぐと悲惨なパターン。 しかも極端な場合、グローバル変数の名前が「i」なんて場合もある。 > ・for(;;)だし・・・ (while() 使えよ) 個人的には「while(1)」の方が好みだけど、「for(;;)」の方が推奨 されているらしい。 しかし、「for(;;)」を使いながら、forループ内で「if(...) break;」 はやめてほしい。
- 420 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 22:46:05 ]
- >>419
>しかし、「for(;;)」を使いながら、forループ内で「if(...) break;」 そりゃ無茶や。 全く脱出しないループで外部から殺してもらうってことなら兎も角、 ループ内の何かの事象で脱出したくなることくらいあるだろよ。
- 421 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 22:52:57 ]
- >>416
while(1)はMS-C V6がwarning吐いてたから、おれはfor(;;)使うよ。 >>420 そういう場合forに脱出条件を入れろという説がある。 おれは基本的に嫌いだけどね。
- 422 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 23:05:32 ]
- for (;;) {
...; someStatus = someFunction(); if (someStatus) break; ...; ...; } -- よくありがちなこんなコードを否定するのかな?
- 423 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 23:25:55 ]
- someStatus が いつか必ず TRUE になるという保証があるなら、かまわんのでは。
無限ループの可能性を残すコードを、おれ個人は書かないけど。
- 424 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 23:30:58 ]
- for (;;)の正しい使い方が良くわからないからMFCのソースの中探してみたけど
やっぱfor (;;)とbreakはセットで使ってるね 以下VC6のMFC SRC\AFXMEM.CPP(322): for (;;) SRC\AFXMEM.CPP(371): for (;;) SRC\APPUI1.CPP(172): for (;;) SRC\ARCCORE.CPP(816): for (;;)
- 425 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 23:35:02 ]
- 下らない疑問かもしれませんが質問させてください。
MFCでコントローラに追加した文字列のメモリ管理ってどうなってるんでしょうか? 例えば、以下のような場合、FuncA()関数を抜けたときに strのアドレス先のメモリが解放されて、コンボボックスで strの文字列が参照できなくならないのでしょうか? 試したところ問題ないようですが、不思議です。 void FuncA() { CString str; m_pCmbBox->AddString(str); //メンバ変数であるコンボボックスに文字列追加 }
- 426 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 23:45:01 ]
- コントロールが別のところでメモリを割り当ててるのさ。メモリの割り当てに失敗したら
CBN_ERRSPACE が通知されてくる。 これはMFCの質問じゃないな。
- 427 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 23:50:26 ]
- >>426
すみません、もう一歩だけお願いします。 調べるなら、C++のメモリ管理で調べればいいでしょうか?
- 428 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 23:51:14 ]
- フォントなんかが参照不能になるのは
描画のタイミングが関数抜けた後だから 文字列は渡し終わってるから問題なし
- 429 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 00:10:04 ]
- >>426, 428
まとめるとこうでしょうか。 ・コントローラに文字列を渡すと、コントローラが新たにメモリを割り当てる。 ・この場合、関数を抜けた後も、描画タイミングで割り当てられたメモリが参照されるので問題なし ただしフォントの場合は、メモリ割り当てが行われない(?)ので、関数を抜けると参照不能 コントローラのメモリ管理について調べてみます。 ありがとうございました。
- 430 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 00:18:04 ]
- どうでもいいけど「コントローラ」ってなんだよ。
controllerじゃなくてcontrolだぞ。
- 431 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 00:28:17 ]
- >>430
訂正thx。気をつけますw
- 432 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 00:44:32 ]
- >ただしフォントの場合は、メモリ割り当てが行われない(?)ので、関数を抜けると参照不能
これは単にスコープの問題
- 433 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 10:43:00 ]
- スコープの問題じゃなくて、寿命の問題。
スコープが外れても寿命が続くのなら大丈夫。 だから例えば、staticでも(一代限りは)使える。
- 434 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 20:06:01 ]
- フォントって、CFontクラスやCBrushクラス等のGDIオブジェクトをローカル
変数で作成したなら、関数を抜けた時点で変数の寿命が尽き、DeleteObject() を呼んでいなくてもデストラクタから(メンバ変数のm_hObjectを使って)強制 的にDeleteObject()が呼び出され、(GDIオブジェクトとそのハンドルが)破棄 される。 CFont *pFont=new CFont; などとやった場合、ポインタ変数の寿命が尽きても、newしたオブジェクト 自体はdeleteはされないので、プロセス終了まで、紐が切れた凧のように メモリ空間に残る。 95系だとプロセス終了でも解放されず、リソースリークになるんだっけか? static で宣言したオブジェクトでも、 if(s_FontStatic.GetSafeHandle()) s_FontStatic.DeleteObject(); s_FontStatic.CreateFontIndirect(...); と破棄する手順を踏めば、何回でもリサイクルできる。
- 435 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 02:34:29 ]
- CMFCToolbar上にStatic Textを作成できないですかねぇ・・・
- 436 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 10:05:36 ]
- >>435
CMFCToolbar って、CDialogBar よりも美味しいの? スタティックテキスト相当な機能なら、わざわざウィンドウを置かなくても CString型のメンバ変数を追加して、ツールバーの描画処理を自前でやれば いいだけのような肝。
- 437 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 23:37:17 ]
- >>435
つCStatic::Create
- 438 名前:デフォルトの名無しさん [2009/03/22(日) 15:54:16 ]
- ダイアログ上のコントロールのタブオーダーが一つ前のコントロールIDを調べるにはどうしたらいいんですか?
例えばCEditが10個並んでいるとして、5番目のタブオーダーのCEditにフォーカスがある時に、 4番目のタブオーダーのコントロールIDを調べたいんですが。 "タブオーダー MFC"でググってもタブオーダーを変更する方法しか見つからなくて。 タブオーダーがらみのAPIって無いんですかね?
- 439 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 16:23:08 ]
- CWnd* pWnd = wndEdit.GetWindow( GW_HWNDPREV):
if ( pWnd->GetStyle() & WS_TABSTOP) UINT nID = pWnd->GetDlgCtrlID(); // こいつがそう。 else pWnd = pWnd->GetWindow( GW_HWNDPREV); 以下繰り返しってな感じで取得できないかな。 実際には while ループするほうがお得だろうが。
- 440 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 17:14:26 ]
- >>439
どうもありがとうございます。 GW_HWNDPREVというのはウインドウのZオーダー順であるだけでなく、 Window上のコントロールのタブオーダー順でもあるんですね。
- 441 名前:デフォルトの名無しさん [2009/03/22(日) 21:59:09 ]
- C初心者スレで相手にされなかったので、質問させてください
MFCでアプリを作っているのですが、 動作確認のため、コンソールも起動しております。 _cprintf_sや_cscanf_s関数を使っているのですが、 _cscanf_s関数でバックスペースのキーを入力すると、 プログラムが無限ループで暴走してしまいます。 普通のscanf()関数のようにバックスペースで一つ前の文字を削除するには どうすればよいでしょうか?
- 442 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 22:07:52 ]
- 暴走するようなもの使うな
- 443 名前:名無し募集中。。。 mailto:sage [2009/03/23(月) 09:08:39 ]
- MFCも使っているのかもしれないけど_cscanf_s関数ってMFCじゃないし
コンソールならダイアログにEditコントロールを置いて表示・入力するって感じになりそうだけど デバッグ表示だけならTRACEマクロが便利 値の入力は・・・ちょっと試すだけならブレイクポイントで値の代入とか
- 444 名前:デフォルトの名無しさん [2009/03/23(月) 21:24:49 ]
- いまさらながら、mfcおもしろいお。
詳しい説明書ないかお?
- 445 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 10:07:58 ]
- SP1以降の解説か、まだないかもな。
- 446 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 17:14:26 ]
- >>444
SP1非対応でよければMicrosoft Pressの「プログラミングVisual C++.NET Vol.1/2」 Vol.2の最後にちょろっと.NETの説明があるけど、それ以外はMFCの説明になってる
- 447 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 20:59:37 ]
- 後はmfcのソース読んどけ、ってところだな。
ドキュメント化されていない情報が山ほどあるし。 別に全部目を通さなくても、疑問に思った箇所だけで十分。
|

|