[表示 : 全て 最新50 1-99 101- 201- 301- 401- 2chのread.cgiへ]
Update time : 05/09 11:54 / Filesize : 106 KB / Number-of Response : 448
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

■MFC相談室 mfc20d.dll■



1 名前:デフォルトの名無しさん [2008/12/26(金) 00:43:36 ]
Microsoft Foundation Classライブラリ専用スレです。

前スレ
■MFC相談室 mfc19d.dll■
pc11.2ch.net/test/read.cgi/tech/1207301867/

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のソース読んどけ、ってところだな。
ドキュメント化されていない情報が山ほどあるし。
別に全部目を通さなくても、疑問に思った箇所だけで十分。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<106KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef