[表示 : 全て 最新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/

6 名前:デフォルトの名無しさん [2008/12/26(金) 10:40:19 ]
ボタンコントロールをスクロールバーで位置をスクロールさせて使っている時に
ウィンドウ内でボタンコントロールを表示させたくない領域か、表示される領域を分けて作りたいんです。

7 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 12:03:02 ]
ウィンドウの中に子ウィンドウを作成して、子ウィンドウの中にボタンを配置すればいい。
で、子ウィンドウそのものをスクロールさせる。
ボタンは子ウィンドウの中に存在するから、親ウィンドウの領域を侵すことはない。

8 名前:7 mailto:sage [2008/12/26(金) 12:13:54 ]
>で、子ウィンドウそのものをスクロールさせる。
子ウィンドウの中でボタンをスクロールさせる の間違い。

9 名前:デフォルトの名無しさん [2008/12/26(金) 23:01:00 ]
なるほど、スタティックコントロールなどを張り付けてその中に置けばいいんですね。
きづかなかった・・・・・
お知恵を頂きありがとう!


10 名前:デフォルトの名無しさん mailto:sage [2008/12/27(土) 00:31:41 ]
>スタティックコントロールなどを張り付けて
ちゃんと>>7を読んだ?
スタティックコントロールの上にボタンを置いても、親から見ればどちらも子供だからボタンを動かすと親の領域を侵すぞ。
親の中に子ウィンドウを作って、さらにその中にボタンを置くんだよ。つまり、親から見ればボタンは孫。

「子ウィンドウの中にボタンを配置」とわざわざ書いたのは、そういうことなんだがな。

11 名前:デフォルトの名無しさん mailto:sage [2008/12/27(土) 00:33:34 ]
すごいな
俺は>>6の文章で何を言ってるのか意味がわかんねーよ

12 名前:デフォルトの名無しさん [2008/12/27(土) 03:12:14 ]
いえ、CStaticがCWnd派生になっているので、
CStaticの上ではなくて派生CStaticの中でボタンをCreateです。
わかってます大丈夫です。ありがとうございます。
まだコンパイルまで行きませんが、はみ出したらCWnd派生を置いてやります。どうもです。

13 名前:デフォルトの名無しさん mailto:sage [2008/12/27(土) 08:35:47 ]
ウィンドウのZオーダーとか親子関係とか、根本的なことを理解していなさ
そう。

たぶん次は、『スクロールさせるボタン以外、貼り付けたスタテイック
コントロールに重なっているダイアログ内のコントロールが上書きされ
たり、欠けてしまう』などと質問してくるに違いない。

14 名前:デフォルトの名無しさん mailto:sage [2008/12/27(土) 09:02:32 ]
すげえ理解力だな、その何言ってるのかわからない質問を予想するとは。



15 名前:デフォルトの名無しさん [2008/12/27(土) 09:26:30 ]
すごいです。なんでわかったんですか
スタティックコントロールをWS_VSCROLLで張り付けたんですが、スクロールバー操作が全くできません。
SS_NOTIFYを付けたんですがだめです。クリックDownは届いてるんです。
スタティックコントロールではなくリストコントロールを代わりに張り付けたら、リストコントロールは全部操作できるんです。
どういうことですか?

16 名前:デフォルトの名無しさん mailto:sage [2008/12/27(土) 10:52:06 ]
もうわからないのでスクロールバーは孫ではなく子にしました
お世話になりました。

17 名前:デフォルトの名無しさん mailto:sage [2008/12/27(土) 11:04:00 ]
>スクロールバーは孫ではなく子にしました
・・・・・・孫にしてどーする。^^;

18 名前:デフォルトの名無しさん mailto:sage [2008/12/27(土) 11:51:13 ]
ソフトバンク社長を馬鹿にするな。

19 名前:デフォルトの名無しさん mailto:sage [2008/12/27(土) 11:53:57 ]
次の質問は、スタティックを親にしてCreateしたボタンのクリックイベ
ント通知がダイアログに送られてこないかな?

20 名前:デフォルトの名無しさん mailto:sage [2008/12/27(土) 12:21:55 ]
俺が正義だ!

21 名前:デフォルトの名無しさん mailto:sage [2008/12/27(土) 13:18:25 ]
>ボタンのクリックイベント通知がダイアログに送られてこないかな?
そういうコードを子供に書くんだよ。孫から親には通知されないが、子から親には通知されるだろ?
孫から子、子から親に通知すれば、ちゃんと親元に届くじゃないか。(笑)

22 名前:デフォルトの名無しさん mailto:sage [2008/12/27(土) 16:36:43 ]
>>21
そういうメッセージの流れを承知していれば、

> もうわからないのでスクロールバーは孫ではなく子にしました

なんて話も出てこないのでは?

23 名前:デフォルトの名無しさん mailto:sage [2008/12/27(土) 19:18:27 ]
孫を意識しなきゃいけない設計って、結構問題あると思うぞ

24 名前:デフォルトの名無しさん [2008/12/27(土) 20:16:07 ]
MDIを終了するときに、子ウィンドウが終了する前にC〜Appで終了する処理をしたいのですが
ExitInstanceとかやデコンストラクタでは読み込めないっぽいんです。
どの関数を使ったらいいですか?




25 名前:デフォルトの名無しさん mailto:sage [2008/12/27(土) 21:00:34 ]
>>24
もう少しまともな質問の仕方ができるように、MFCを勉強してこい

26 名前:デフォルトの名無しさん mailto:sage [2008/12/27(土) 21:29:48 ]
>>24
デストラクタくらいはちゃんと覚えようぜ。 会話にならないから。

27 名前:デフォルトの名無しさん mailto:sage [2008/12/27(土) 21:35:57 ]
>MDIを終了するときに、子ウィンドウが終了する前にC〜Appで終了する処理をしたい
どんな「処理」をしたいのか、まったく想像できんのだが・・・。

28 名前:デフォルトの名無しさん mailto:sage [2008/12/27(土) 21:57:16 ]
初心者のくせにやりたいことをぼかすからだろ
具体的にこれがしたいって言えよな

29 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 08:38:34 ]
COLORREF に 明るさのdouble値をかけるにどうすればいいんですか?
どう変化していくのか数値を眺めていたんですが3色同じ割合で変化してないのでどう書けばいいのかわからないです。


30 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 08:46:47 ]
面倒臭がるな、でFA

31 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 08:48:33 ]
UINT nBrightness; // 0〜255
COLORREF rgbRGB(255,0,0);

nBrightness=UINT(dblPercent*255.0/100.0);
  rgb=RGB(GetRValue(rgb)*nBrightness/255, \
      ,GetGValue(rgb)*nBrightness/255, \
      ,GetBValue(rgb)*nBrightness/255);

とか。

32 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 09:37:09 ]
color = RGB(GetRValue(rgb) + (((255.0-(double)GetRValue(rgb))/255.0)*(bufLum/255.0)),
        GetGValue(rgb) + (((255.0-(double)GetGValue(rgb))/255.0)*(bufLum/255.0)),
        GetBValue(rgb) + (((255.0-(double)GetBValue(rgb))/255.0)*(bufLum/255.0)));

まったくうまくいきません
dblPercentはなんですか?

33 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 10:30:52 ]
変に悩むくらいなら、shlwapiのColorAdjustLumaでも使っとけ。

34 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 11:53:56 ]
あーわかったパーセント、double値を100倍したパーセントを各色に掛けてるのかthx



35 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 13:23:10 ]
キーボードの入力でOnKeyDownを入れたんですが、Aを押した時はどう書けばいいんですか?
調べてもVK_Aとしか出てこないんですが、シンボルが無いといわれるんです

36 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 13:47:15 ]
>>35
ただ単に 'A' と書けばいい。VK_Aを定義したいなら、 #define VK_A 'A' もしくは #define VK_A 0x41


37 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 13:47:25 ]
もう馬鹿にかまうな。
こいつに素養なんか、かけらもない。

38 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 14:15:49 ]
俺も最初見たときは迷った口。
昔からそこら辺の説明はまともに書いてないんだよなあ。

39 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 15:17:50 ]
ありがとうございます。
VK_Aの情報多すぎますよね。なんでなくなったんだろ
トレースで出てきた値入れようか悩んだんですが、あまりにも原始的で・・・Aで良かったんですね。どうもです。
コントロールと同時押しも情報がなさすぎて困ってたんですがすごいのを思いつきました!今日は冴えてます。

BOOL ctrl_A = 0;
void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags){
 if( ctrl_A == 1 ){
  if( (nChar == 'A') || (nChar ==VK_CONTROL) ){
  }
 }
 if( (nChar == 'A') || (nChar ==VK_CONTROL) ){
  ctrl_A = 1;
 }
}

void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags){
 if( (nChar == 'A') || (nChar ==VK_CONTROL) ){
  ctrl_A = 0;
 }
}

40 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 15:40:39 ]
「GetKeyState」を調べると幸せになれるかも

41 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 15:47:14 ]
感動しました。1行で書けますねwありがとう^^

42 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 18:06:16 ]
>>39
どーでもいいことだが、ハンガリアン記法を憶えると、あとからソース見直す時にラクになるぞ。
つうか、こっちがそれに慣れてるからそうじゃないコードを見ると読みにくくてかなわん。(笑)

>BOOL ctrl_A = 0;
BOOL は TRUE か FALSE だろ? みたいな、よ。

>if( ctrl_A == 1 ){
は、if ( ctrl_A ){ でいい。あくまで == を書きたいなら、if ( 1 == ctrl_A){ としたほうがいい。
理由はわかるだろ?

って、ここは C の初心者教室かよ・・・・。

43 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 18:10:39 ]
>BOOL は TRUE か FALSE だろ? みたいな、よ。
今更何を……

>は、if ( ctrl_A ){ でいい。あくまで == を書きたいなら、if ( 1 == ctrl_A){ としたほうがいい。
勘弁してくれ。

ここはいつから三田某シンパのロートルが巣食うようになったんだ?

44 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 18:15:27 ]
実にどうでもいい



45 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 18:52:05 ]
BOOLは1と0と-1
TRUEとFALSEだけではない

46 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 18:54:55 ]
C の初心者教室に帰って存分に熱い思いを語れ

47 名前:24 [2008/12/28(日) 20:20:46 ]
えっと、MDI終了時に起動しているファイルパスを全て取得したいんですが


48 名前:名無し募集中。。。 mailto:sage [2008/12/28(日) 20:28:10 ]
ファイルパス情報はDocが持っているんじゃないかな

49 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 21:10:10 ]
メニューの最近使ったファイルリストのところを参考にすればよさそうな気がする

50 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 21:26:02 ]
終了時に保存するか聞いてくるから
終了時に開いてるやつが編集されたか全部チェックしてるだろ

51 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 00:41:49 ]
AfxGetApp()等でアプリケーション派生クラスのポインタを得るか、アプリケーション
派生クラスのメンバ関数内から、

(1) まず、CWinApp::GetFirstDocTemplatePosition()を呼んだ後で、
(2) CWinApp::GetNextDocTemplate()を呼んで、CDocTemplateクラスのポインタを得る。


(3) (2)で取得したCDocTemplateクラスのポインタに対して、まず
  CDocTemplate::GetFirstDocPosition()を呼んだ後、
(4) CDocTemplate::GetNextDocを呼んで、CDocumentのポインタを得る。

同じテンプレートでオープンされているか複数ドキュメントを全て取得
するには、(4)をNULLが返るまで繰り返す。

という流れ。

アプリケーションに複数のドキュメントテンプレートが存在する場合、(2)が
NULLを返すまで、それぞれのテンプレートのポインタに対して(3)〜(4)を繰り
返す。

この方法ならSDI/MDI関係ない。

各ドキュメントのパスは、CDocument::GetPathName()で取得。
ドキュメントが更新されているかどうかは、CDocument::IsModified()で取得。

52 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 04:18:01 ]
GetAsyncKeyState のMFC版ってありますかね?

53 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 05:41:42 ]
CRectで指定した領域を塗りつぶしではなくカラー補正のようなことをするにはどうすればいいんでしょうか
BitBltでパターンを使う2段階描画じゃなくて、直接変更するにはどうすればいいんでしょうか

54 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 06:30:44 ]
すいません。マージコピーが用意されてました



55 名前:47 [2008/12/30(火) 19:18:07 ]
>51
ありがとうございます!
えっと、仕組みは分かったのですが、終了するときExitInstanceやデストラクタでは
すでに子ウィンドウが閉じていて取得できません。どこに書けば取得できますでしょうか?

56 名前:デフォルトの名無しさん [2008/12/30(火) 23:47:58 ]
MFCはLinuxで使えないから糞ですね。
wxWidgetを使うことにします。

57 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 08:26:19 ]
switchの中でswitchを書いたり、ifのtrueとelseで同じcase値をもったswitchを区別させるにはどうすればいいんですか?
ずっとバグと闘ってたんですが、どうも同じcase値があるのがいけないような気がするんです。この辺どうなんでしょうか

58 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 08:39:59 ]
別の関数にわけたほうがいいと思うが……

59 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 09:07:19 ]
ですよね・・・そうします。

60 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 10:36:30 ]
誤爆?
ここMFCスレですよ

61 名前:51 mailto:sage [2008/12/31(水) 13:24:41 ]
WM_CLOSE メッセージハンドラ = CMainFrame::OnClose() あたりで
よいのでわ?

62 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 15:00:45 ]
でわ?

63 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 20:54:58 ]
誰か教えてください
VS2008 SP1 で CFormView から派生の SDI の新規プロジェクトを作り、
何も変えずにビルドしたらいきなり CMainFrame::OnCreate が見つからないというエラーに遭遇しました
それで、MainFrame.h に CMainFrame::OnCreate の定義を追加したところ、ビルドはできたのですが、
その CMainFrame::OnCreate が呼ばれていないらしくて、ツールバーやドッキングウィンドウ等がまったく表示されません
SDI の CFormView でツールバーやドッキングウィンドウはどうやって表示すればいいですか?
むしろ VS2008 SP1 を使うのやめといたほうがいいですかね???

64 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 21:14:44 ]
>>63
1.アプリケーションの種類でシングルドキュメントを選択
2.生成されたクラスで基本クラスにCFormViewを選択
3.完了ボタンを押す
4.印刷サポートが無いとの警告で「はい」を押す
5.F5でビルド-デバッグ実行

以上の操作で問題なく実行された。



65 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 21:21:02 ]
>>64
レスありがとうございます
んー、使っているのが VS2008 Pro の評価版でこいつにSP1あてたせいでしょうかね?
製品版のVS2008 SP1だとこの問題が出ないのでしょうかね
とりあえず、Createのイベントを追加してOnCreateのコードをごっそり移動させたら動きました

66 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 10:18:59 ]
>CFormView から派生の SDI の新規プロジェクト

これWizard内だけで完結させたのかな?
もしそうなら、そんなエラー出ることないと思うけどなあ。

67 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 05:11:13 ]
>>63の件ですが、どうもMFCアプリケーションウィザードの5枚目で
初期ステータスバーのチェックを外すと発生するみたいです
(初期ステータスバーのチェックを外す以外は何も変更しなくても起きました)

68 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 01:08:51 ]
>>67
検証してみたが、製品版のVS2008SP1(SE)でも発生した。
【対処法】は以下のとおり。

・MainFrm.cppのメッセージマップに、
    ON_WM_CREATE()
 の一行を追加する。
・MainFrm.h のメッセージハンドラ関数を宣言しているあたりに、
    afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
 の一行を追加する。

これでビルドは可能になる。うーん、AppWizerd のバグかな。

69 名前:デフォルトの名無しさん [2009/01/03(土) 02:43:18 ]
どなたか教えてください。


VC2005のMFC、SDIを使いラジオボタンを配置しているのですが、選択ができず、チェックがいれられないでいます。

ラジオボタン自体はradiobutton.Create()で引数指定して貼り付けています。
ググってCwnd;;CheckRadioButton等を見つけたのですが、手をつけられず困っています。
もしよろしければどなたか助言の方お願いします。

70 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 03:02:14 ]
ID を連続させる必要がある。
あと、「グループ」プロパティのチェックは
一連のラジオボタンの先頭のみにチェックを入れるんだったはず。

71 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 03:14:08 ]
radiobutton.SetCheck( int nCheck);
詳細は CButton::SetCheck のヘルプ読めばわかる。

72 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 03:35:38 ]
動的に作成したラジオボタンにプロパティなんぞない。
IDを連続させて、ON_CONTROL_RANGE() マクロで処理するんだよ。

73 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 11:19:24 ]
ダイアログで右クリックでポップアップメニューを表示するようにしたのですが、
ON_UPDATE_COMMAND_UIを実装してもコールされず、メニューの有効無効やチェックなどが更新されません
ダイアログでON_UPDATE_COMMAND_UIの関数でメニューを更新する方法はありますか?


74 名前:69 mailto:sage [2009/01/03(土) 12:58:11 ]
>>70-72

アドバイスありがとうございます。

IDを連続など調べて頑張ってみます。



75 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 13:50:02 ]
>>68
Microsoft Visual Studio 9.0\VC\VCWizards\AppWiz\MFC\Application\templates\1041にある
frame.h内の177行目と、frame.cppの内の47行目の
[!if DOCKING_TOOLBAR || TOOLBAR_STYLE_REBAR || RIBBON_TOOLBAR || STATUS_BAR]

[!if DOCKING_TOOLBAR || TOOLBAR_STYLE_REBAR || MENUBAR_TOOLBAR || RIBBON_TOOLBAR || STATUS_BAR]
にしておくと、次からうまくいくようになる。

ついでに、frame.cppの内の935行目の
return CFrameWnd::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);

return [!output MAIN_FRAME_BASE_CLASS]::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
にしておくとドキュメントのないSDIのときに、ドッキングウインドウ関係のバグがなくなる。


76 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 14:44:38 ]
複数の画像を表示させてドラッグで移動させるプログラムを書いていたのですが
複数選択をさせる時等はどうしたらいいんでしょう?


77 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 14:48:18 ]
エクスプローラでも参考にしろ

78 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 15:15:53 ]
出来るだけWindowsに近い直感的なUIを提供するのは基本だしな

79 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 16:32:54 ]
Docが持ってる変数のみで何らかの処理を行いたい場合って
Doc側に関数を実装すればいいんですかね?

80 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 17:10:39 ]
OK

81 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 17:16:43 ]
>>73
俺は、WM_KICKIDLEが届いたら、
ツールバーにWM_IDLEUPDATECMDUIを送るようにした。

82 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 19:55:47 ]
質問失礼します。

LoadImage関数を使いビットマップをマイピクチャから読み込もうとしているのですが、例外が出てしまい上手くいきません。
マイピクチャにあるビットマップを読み込もうとしており、フルパスで指定してみたいと思ったのですがフルパス指定の方法がいまいちわかりません。

どなたかアドバイスお願いします。

83 名前:名無し募集中。。。 mailto:sage [2009/01/03(土) 19:59:15 ]
あけおめことよろ>all

>>82
どんな例外? ファイルが無くても例外は出ないんじゃないかと。
フルパス指定ができない? \を\\にしていないとかじゃない?

84 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 20:28:20 ]
>>82
LoadImageはイメージリソースをロードする関数だろ。
フォルダにあるBMPを読むには、CreateFileなり、fopenなり、CImage::Load なりを使わなきゃ。



85 名前:名無し募集中。。。 mailto:sage [2009/01/03(土) 20:49:00 ]
> LoadImageはイメージリソースをロードする関数だろ。
そうでもない
msdn.microsoft.com/ja-jp/library/cc364835.aspx
例えばこんな感じ(fnがフルパスのファイル名)
m_hBmp = (HBITMAP)LoadImage( NULL, fn, IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR|LR_DEFAULTSIZE|LR_LOADFROMFILE|LR_VGACOLOR )) ;


86 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 21:11:00 ]
ほお、第2引数でパス名を指定できるんだ。ありがと。勉強になったよ。

87 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 23:07:54 ]
>>81
ありがとうございます
できないかと思っていましたが、おかげさまで実装できました

88 名前:82 mailto:sage [2009/01/04(日) 19:22:05 ]
>>83-85

エスケープシーケンスも間違いでしたが、ちょこちょこ手直ししていたらなんとかなりました。
本当に助かりました。ありがとうございます!

89 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 09:26:20 ]
何故この流れでいきなり「エスケープシーケンス」が?

90 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 11:04:46 ]
newして作ったクラスを切り取りや削除した場合ってdeleteってやったほうがいいんですかね?


91 名前:名無し募集中。。。 mailto:sage [2009/01/05(月) 11:34:29 ]
切り取りってなんぞ?
特に理由がない限りnewしたものはdeleteと相場が決まっている

92 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 12:04:04 ]
MFCの中には、使用者にnewで作らせておいて、
delete thisで自殺するクラスもあるけどね。

93 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 12:51:52 ]
>>91
クラス一つ一つに画像がついていて
画像を切り取る時にCRect構造体を用いてるんですよ。
で、このCRect構造体はnewで作っていて切り取りの情報を削除したらDeleteするべきなのかな。とおもいまして

94 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 13:28:58 ]
>>93
すまん、何を言っているのか理解できないからソースを出してくれ。



95 名前:名無し募集中。。。 mailto:sage [2009/01/05(月) 13:31:51 ]
>>93
newで作ったらdeleteしないといけない
でもnew-deleteを使わなくても良い別の方法があるような気がする(ローカル変数を使うとか

96 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 13:51:12 ]
>>94
理解できないなら理解しなければいいんじゃね?

ようするに、画像の範囲を切り取る時にCRectでサイズと範囲を指定してるっていう話だろ?
newで作ったならDeleteするのはお約束。
戻り値ある関数でなら戻り値作らなきゃいけないのと一緒。


97 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 13:55:33 ]
>削除したらDeleteする
漏れにはここが理解できん。

98 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 13:56:34 ]
MFCに触る以前にC++をまったく理解してないって様子がアリアリだな。

99 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 13:57:24 ]
>>97
範囲を切り取ったよ!
でも、この範囲の情報をいらなくなったからユーザが削除したよ!
そうしたら、プログラム的にdeleteするべき?ってきいてるんだろ。
deleteと削除を区別して考えてるというか、ユーザ側とプログラムで別って事を自覚してるから正しい。


100 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 14:01:22 ]
>>98
顔真っ赤だけど大丈夫?

C++からMFC来るとクラス削除しなくっても勝手に処理してくれたりで戸惑うのは当たり前だと思うのは俺だけか

101 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 14:06:32 ]
>>100
顔真っ赤なのは、鏡に映ってる自分のことかぃ?(w

自分のコードで明示的にnewして作ったものを、MFCが内部で勝手に削除
するMFCの標準クラスって、具体的にどのクラスのことなのか1つでいい
から挙げてみてよ。


102 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 14:07:06 ]
説明が下手なだけだな。

103 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 14:10:49 ]
MFCにもCreateとかReleaseとかいうメンバ関数があんなにいっぱいあるというのにw

104 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 14:16:55 ]
>>102
いわゆる、真性のコミュニケーション能力不足ってやつですね。

なんか理系全体のレベルが下がるとともに、年々新人プログラマの質も
下がっているような気がするのは、気のせいか?

>>103
メンバ関数のCreateやReleaseは、麻生読みするとnew/deleteになると
でも言うのかぃ?

予約語以外の関数名なんてコンパイラにとっちゃ、関数を個別に識別する
ための単なる記号でしかないのは、C++どころかCやアセンブラ、BASICでも
変わらん。C++から来たとか騙るな。



105 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 14:20:17 ]
>>104
お前は何の話をしてるんだw

106 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 14:23:15 ]
自分の世界に浸っているのでしょう。

つまりなにか? このスレは説明もろくにできない質問者と、
自分の世界に浸って周りを見ようともしない回答者と、
一部の傍観者によって構成されているのか?
# まぁそんなもんか。

107 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 14:24:51 ]
>>101
CFrameWnd

108 名前:名無し募集中。。。 mailto:sage [2009/01/05(月) 14:35:34 ]
CFrameWndというかCMultiDocTemplateあたり?

説明が下手な人は自分の考えを言葉に表現できないという事だと思うけど
コーディングってプログラム言語でプログラムしたい内容を表現するという事だから
(上司の、スレ住人の、CPUの、OSの、言語の)理解できる的確な表現をする事は重要な事だぜ

109 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 14:36:41 ]
惜しい、そこは「言語」ではなく「コンパイラ」とすべきかと。

110 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 16:11:58 ]
>>101はCFrameWndやCDocTemplateを知らなかったのか?

111 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 16:22:20 ]
なぁ、>>101は図星だったからこんなに必死なん?

112 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 16:31:16 ]
new/deleteや、クラスの生成/消滅でがたがた言ってるヴァカは、ただの屑。
それだけは真実。

113 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 17:07:53 ]
MFCと関係ない質問はスルーが基本

114 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 17:23:26 ]
親ウィンドウのクライアントエリアにある子ウィンドウがクリックされた時に
親ウィンドウでも処理をしたいんですが、どうしたらいいんでしょう?

フォーカスを無理やり親に渡してしまうと子ウィンドウ側での処理ができなくなってしまいますし。。。

と、APIの方に誤爆ってしまいましたがどなたかお知恵をお貸しくださいな



115 名前:名無し募集中。。。 mailto:sage [2009/01/05(月) 17:42:02 ]
親ウィンドウってCMDIFrameWnd?子ウィンドウってCMDIChildWnd?
フォーカスを渡さないといけない処理ってどんな処理?

>>109
インタプリタもあるじゃない?と思ったけどMFCならコンパイラ限定か(チッ

116 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 17:53:59 ]
>>115
子ウィンドウの移動をさせたいんですが、親ウィンドウはViewクラスで子ウィンドウはCEditになってます。


117 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 18:59:10 ]
何でフォーカスが関係してくるのか理解不能

118 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 19:05:22 ]
とどのつまり親(Viewとか)のPreTranslateMessageで解決する

119 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 19:31:59 ]
>>117
キー入力がそっちに行っちゃってCtrl+Vとかも使えなくなったのでフォーカスかなぁと。



120 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 21:21:22 ]
MFCのソース見てないけど
EditViewでツールバーやメニュー触ったあともフォーカスはeditに残ってるから
フォーカス戻す処理が入ってる気がする
仮にそうだったらEditViewじゃない普通のviewの場合はviewへフォーカスが戻るだろうね

121 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 21:39:14 ]
リストコントロールで追加したアイテムが常に画面に見えるようにしたいのですが
これはどこが問題あるんでしょうか?スクロールバーは常に一番下になるんですが、画面が変わりません

m_List.InsertItem(m_List.GetItemCount(), mes);
SCROLLINFO si;
m_List.GetScrollInfo(SB_VERT, &si, SIF_ALL);
si.nPos = si.nMax;
m_List.SetScrollInfo(SB_VERT, &si);
m_List.RedrawWindow();

122 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 21:50:52 ]
SetscrollInfo()ではなく、EnsureVisible()を使うのではないだろうか。

123 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 22:04:49 ]
表示されるようになりました。1行で書けてしまいました。ありがとうです!

124 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 21:28:48 ]
自前のウィンドウに影(ウィンドウの右と下が黒くなるやつ)を付ける方法を
教えて下され。

CWndクラスの中で下のように書くとタイトルバーもない四角いウィンドウがでるのですが、
これに影を付けたいのです。

CreateEx(
WS_EX_TOOLWINDOW,
lpszClassName,
NULL,
WS_POPUP | WS_VSCROLL,
0, 0, 100, 100,
NULL, NULL, NULL);




125 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 21:44:36 ]
デスクトップに対する相対座標を取得して、そこからデスクトップに対してGDIを使って、ウインドウサイズに合わせて矩形を描画すればいいんじゃね?

126 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 22:05:23 ]
フチに自分で色塗るだけ

127 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 22:18:51 ]
>>124
GDIを使って描いてもいいけれど、もっと安直にウィンドウを重ねてもできるよ。

128 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 22:38:25 ]
もしかしてCS_DROPSHADOWの事か?

129 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 00:00:29 ]
MFC Feature Packでアプリ組むと、タイトルバーのフォントが、標準のものより
ちょっと小さくて読みにくいんだけど、これって、どこで修正できるん?
どこかのタイミングでフォントを設定すれば修正できるような気がするんだけど、
上手くいかない・・・orz
どなたか、わかる方、教えてplz

130 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 00:49:39 ]
まだそんな名前だっけ
普通にSP1って呼んでるわ

131 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 13:22:30 ]
>>128
すんません。いろいろ調べてはいたのですが
灯台下暗しでした。。。
CS_DROPSHADOWでやりたいことができました。

132 名前:デフォルトの名無しさん [2009/01/07(水) 13:47:27 ]
MFC(VS2005)からVBAの関数を呼び出す方法を知っている人いませんか?
ググってもなかなかみつからないので。。。
よろしくお願いします。

133 名前:名無し募集中。。。 mailto:sage [2009/01/07(水) 14:09:49 ]
VS2008からDDEを使ってExcelに値を放り込んだり多少の操作をした事はあるけど
VBAの関数を呼ぶ方法はわからないな
VBAのどんな関数を呼びたいんだ? (または任意のマクロかな)

134 名前:デフォルトの名無しさん [2009/01/07(水) 15:05:13 ]
>>133
ExcelのVBEditorで作ったVBAの関数を呼びたいと思っています。
Excelに貼り付けたボタンを押すとその関数が呼び出されるんですが、
これをMFCで処理させたいと思っています。

なかなか難しいですかね?



135 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 15:15:24 ]
こういうやつ?

追加し、MFC からオートメーションを使用した VBA マクロを実行する方法
ttp://support.microsoft.com/kb/194906/ja

136 名前:デフォルトの名無しさん [2009/01/07(水) 15:22:52 ]
>>135
日本語が。。。

でも、オートメーション使うとなにかできそうですね。

137 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 17:58:11 ]
>>129
タイトルバーのフォントが変わるの? XPじゃ変わらんけど。

ちなみに、メニューバーのフォントは変わるのでシステムの設定を
チェックしてそれに合わせているんだが。

138 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 18:01:14 ]
CDHTMLDialogのOnInitDialogでCreateExで動的生成したコントロールが、
スクロールバー等をクリックしても無反応です。

CDHTMLDialogで動的に生成したコントロールを有効にする方法は無いでしょうか?

139 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 19:06:25 ]
CEditを本体から呼び出してエディットボックスを作成しているのですが、これの色を変更する場合って
CEditのHDCを取得して、SetTextColorではだめなんでしょうか?

140 名前:デフォルトの名無しさん [2009/01/07(水) 20:19:18 ]
つオンコントロールカラー

141 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 00:17:30 ]
古いアプリのメンテのために昨日から初めてMFCに触れることになった者です。

ある比較的シンプルなWindowsアプリで、なぜかCPU使用率が異常に高いので
いろいろ試行錯誤しなかがら試してみると、どうもOnPaintのオーバライドで
ベースクラスのOnPaint(CframeWnd::OnPaint)を呼んでないことが原因らしいことが
わかったのですが(つまりオーバーライドの中でCframeWnd::OnPaintを呼んでやれば
CPU使用率の異常な上昇は起こらない)これって普通なんでしょうか?

なんかググってもオーバーライドの中でCframeWnd::OnPaint読んでるようなコードって
見かけないような気がするんですが……。


142 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 00:19:42 ]
OnPaint で GetDC とかしてないか?
OnPaint では CPaintDC でデバイスコンテキストを作る必要がある。

あるいは、OnPaint で何もしていないか・・・。
何もしなくても CPaintDC を作る必要がある。

143 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 00:50:27 ]
OnPaint() ではベースクラスの OnPaint() は呼ばない。
ベースクラスでは、Default()、つまりDefWindowProc() を呼んでいるだけだから。

144 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 00:52:34 ]
DefWindowProc で
BeginPaint と EndPaint をしてるから
OnPaint で何もしていないなら
自前で CPaintDC 作るか
さもなくばベースクラスの OnPaint を呼ばなければいけない。



145 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 01:06:27 ]
CPaintDC(BeginPaintとEndPaint)しないと無効領域がクリアされず
延々とWM_PAINTが生成されるんだっけか

146 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 01:36:29 ]
無効領域がある限り永遠にWM_PAINT送り続けるからな。
一応メッセージの優先順位が低いから、それでもそれなりにアプリは動作するけど。

147 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 05:09:44 ]
つまり、元のアプリは相当酷い代物ってことだな。

148 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 19:26:24 ]
>>142-147
ありがとう。
ソースは会社なんで明日確認してみます。

>元のアプリは相当酷い代物ってことだな。
名前から意味がまったく読み取れない変数名やメソッド名とか、
一つのメソッドが平気で200行とかそれはもうw

149 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 21:41:46 ]
子ウィンドウの座標(CPoint)を親ウィンドウの座標(CPoint)に変換したいんですが関数などはあるのでしょうか?

150 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 21:43:43 ]
どういう意味だ?
デスクトップからの相対座標を、親ウィンドウの相対座標に変換するってことか?

151 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 21:44:50 ]
Viewクラス内に派生クラスで作成したCEditクラスがいるんですが
このCEdit内をクリックされた時に親ウィンドウ側に座標を渡したいんです

152 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 22:10:12 ]
GetCursorPosで取得したならスクリーン座標なので親でScreenToClient

153 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 22:20:47 ]
GetCursorPosを行ったのではなく、CEditクラスに来たWM_LBUTTONDOWNのメッセージを処理したいんですよ。


154 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 22:23:01 ]
応用力のない奴だな



155 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 22:27:07 ]
つ MapWindowPoints

156 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 22:55:15 ]
応用力があったらこんなところに来ません。

157 名前:デフォルトの名無しさん [2009/01/09(金) 08:02:43 ]
photoshopとかwordみたいにdrawの一部を拡大縮小したくて、SetViewportOrgとか使ってみたのですが
どうもキレイに行かなくて困ってます。
イイ解決法ってありますか?

158 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 10:12:41 ]
MFCと関係ない質問はスルーの方向で

159 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 11:55:15 ]
スクリーン座標をクライアント座標に変換した所、正しく変換された物から右下側に座標がずれてしまうのですが
これは、使い方がおかしいのでしょうか?

160 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 12:02:21 ]
エスパーさーん

161 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 12:09:41 ]
ScreenToClientでスクリーン座標をクライアント座標にしたらずれてるって話だろ?
別に意味がわからなくはないとおもうが・・・。

まぁ、俺には解決策はわからんけどね

162 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 14:04:57 ]
・変換元座標がスクリーン座標でない。
・実はAPIのScreenToClientを使用しており、渡すHWNDが間違っている。
・"正しく変換された物"のほうがずれている。


163 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 15:33:57 ]
非クライアント領域が計算に入ってないんだろうな

164 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 23:01:13 ]
GetCurrentDirectoryより簡単な関数はありますか?



165 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 23:18:29 ]
>>164
「簡単」の基準は?

166 名前:デフォルトの名無しさん [2009/01/13(火) 23:24:58 ]
MFCを使い ダイアログベースのプログラムを作成しています。
例えばダイアログ上にボタンを配置し 毎フレーム位置を変更させるような
プログラムを作成したいと考えています。
毎フレーム処理を行うようなコードはどのように実装すればよいのでしょうか?

167 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 23:28:08 ]
そもそもフレームってどういう意味で言っているのか分からない
紙芝居でもダイアログ上に表示するのか?

168 名前:デフォルトの名無しさん [2009/01/13(火) 23:38:06 ]
>>167
返答ありがとうございます。
>紙芝居でもダイアログ上に表示するのか?
イメージに近いです1フレーム毎に処理を行えればと思っています。



169 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 23:43:46 ]
フレームの定義が時間単位とかだと、タイマーイベントでも作ってダイアログのDC上に絵を描画とかか?
関係ない話だけど、今Windows7のペイントいじってみた
なんとなくリボンの良さ分かった木はするけど、絵心がないから個人であれ作るのは面倒だな

170 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 23:52:29 ]
>>169
Timerを使わず
win32でいうところのメッセージループみたいな
所で独自のイベントを受け取って処理を行いたいんだけど
いまいちわからん。。。

リボンUIは確かに見た目は良いね

171 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 00:26:54 ]
GDIにはフレームという概念は無いはず。
タイマーかなんかで一定時間毎に処理するしかないね。

172 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 01:39:59 ]
やっぱりフレームがどういうものを想像しているのか分からないな
描画が必要なタイミングの単位と言うならOnDrawとかになるんだろうけど
一定周期じゃないもんな(アクティブになったときとか、リサイズされたときとか色々。。。)

173 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 10:09:35 ]
MFCならOnIdleの出番か?

174 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 10:42:44 ]
ティアリングの無い綺麗なアニメーションしたければWPF使えってんだ



175 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 18:16:00 ]
CRectTrackerを使って画像内にドラッグで大きさ、位置が
変更可能な矩形を描画しようとしてるんですが、
矩形内の色が白になってしまって画像が上書きされた形になります。
枠だけ描画というのはどうやったらできるんでしょうか。

画像はrawで、OpenGLで描画されています。


176 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 18:24:56 ]
>>175
コンストラクタでCRectTracker::hatchInsideを指定するとどうなる?
# OpenGLで描画したものってDCの範疇じゃないのかな?

177 名前:175 mailto:sage [2009/01/14(水) 18:55:08 ]
>>176
斜線が入るだけで、白く塗りつぶされたままです。

178 名前:デフォルトの名無しさん [2009/01/14(水) 19:52:53 ]
エディットボックスでキー入力の入力方法を英語から日本語入力に自動的に切り替える方法を教えてください。


179 名前:178 [2009/01/14(水) 19:53:28 ]
↑winXP+VC2005です。すいません


180 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 21:15:39 ]
MFCにあったかな?
なければスレ違い

181 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 22:07:07 ]
>>175
そもそもなんでOpenGLで描画したところにトラッキングしたいのか判らんが、
MFC側の問題じゃなくてOpenGL側の問題っぽいからOpenGLスレで聞いて味噌。

182 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 23:26:05 ]
質問させてください。
今MFC VC2005を使いプログラムを組んでいるのですが、あるメソッド内でint型配列array[21]の中身をsetwindowtextでタイトルに表示させたいと思っています。
setwindow(_T(""))で、array[i]をどのように記述すれば表示できるようになるでしょうか。下らないかもしれませんがお願いします。

183 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 23:28:17 ]
CString hoge;
hoge.format(_T("%d"), array[i]);
wnd.SetWindowText(hoge);

こんな感じかな

184 名前:182 mailto:sage [2009/01/15(木) 02:24:13 ]
>>183さん
そういう書き方をするんですね、、無事上手くいきました。ありがとうございました!



185 名前:175 mailto:sage [2009/01/15(木) 02:48:28 ]
>>181
今使ってるプログラムはもともと1年半くらい前の演習の時に先生から頂いたrawビューアで、
研究に使えそうだってことでその時のプログラムを改造しようとしてるんですが、
OpenGLは全く扱ったことがなくて(演習の時も処理部分しか触ってない)、
時間もないんで、OpenGLを勉強するより1から作り直した方が早いような気がしてきたんですが、
raw画像(320×320の輝度値のみのデータ)をMFCを使って表示させるには
ビットマップに変換するしかないのでしょうか。

186 名前:名無し募集中。。。 mailto:sage [2009/01/15(木) 03:19:54 ]
輝度データをDIBに変換すれば良い
BMPはLoadImageでDIBのハンドルを得られるが
自分で変換する場合はBITMAPINFOにサイズなどをセットしてCreateDIBSectionを使って
ハンドルと輝度データを入れる領域を得る(ここまでMFCなし

187 名前:175 mailto:sage [2009/01/15(木) 11:33:23 ]
>>186
アドバイスありがとうございます。
それで作ってみたいと思います。

188 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 17:33:57 ]
MFC6.0の参考書見ながらこつこつやってるんだけど別に支障はない?
1999〜2001年に出版されたものなんだが

189 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 19:37:56 ]
int iLength = m_Edit.LineLength(i)+1;
TCHAR *ptBuf = new TCHAR[iLength];
m_Edit.GetLine(i,ptBuf,iLength);
ptBuf[iLength]=0;
ar.WriteString(str);
delete[] ptBuf;
一行一行ファイルの保存させたいのでCEditの内容を取得して保存させるのに
上記の様なソースを書いたところdelete[]の所でエラーをはくのですがなぜでしょうか?

190 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 19:47:37 ]
>>189
ptBuf[iLength]=0;

ptBuf[iLength-1]=0;

191 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 19:57:10 ]
CWnd::GetWindowTextでCStringに纏めて取って、
CString::Tokenizeで分解したほうが手っ取り早くね?

192 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 20:45:37 ]

  int  i, nLineCount;
  CString strText;
  CStringArray bufArray;

  nLineCount=m_Edit.GetLineCount();
  for (i=0;i < nLineCount;i++)
  {
    int len = m_Edit.LineLength(m_Edit.LineIndex(i));
    m_Edit.GetLine(i, strText.GetBuffer(len), len);
    strText.ReleaseBuffer(len);
    bufArray.Add(strText);
  }

  CStdioFile file;

  if(file.Open(..略..))
  {
    for (i=0;i <bufArray.GetSize();i++)
    {
      file.WriteString(bufArray.GetAt(i));
      file.WriteString(_T("\r\n"));
    }
    file.Close();
  }

とかでよくね?

193 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 21:25:28 ]
CEdit::GetLine
戻り値
実際にコピーされたバイト数

戻り値使わないの?

194 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 00:00:50 ]
MFCでデバイスコンテキストで使われているフォントの高さを取得する方法ってありますか?



195 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 00:05:43 ]
GetTextExtent

196 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 03:07:01 ]
>>193
ここの使用例をテキトーに書き直しただけだから、

ttp://msdn.microsoft.com/ja-jp/library/s7zy7cwk(VS.80).aspx

細かい事気にすんな。 ハゲるぞ。(もうハゲてるかもしれんけど)

197 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 04:18:10 ]
GetLineの戻り値、、使わないなあ。 使いどころない。
>>193は、>>192でどう戻り値使うのだろうか?

198 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 09:07:51 ]
>>194
GetTextMetrics

199 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 17:51:17 ]
lineText..GetLine(iLine, strText.GetBuffer(iLength));
っていう風に関数を実行するとstrTextにその行が入る時と入らない時があるんですがなぜなんでしょうか?

200 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 17:57:30 ]
ReleaseBuffer してるか?

201 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 18:01:19 ]
行ってますし、デバッガでとめて一個一個通すと何故か全部入っていくんです。

202 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 18:08:02 ]
>lineText..GetLine(iLine, strText.GetBuffer(iLength));
こんなコード、有り得ないだろ。

203 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 19:07:15 ]
CEdit::GetLine(int nIndex, LPTSTR lpszBuffer)
だろ?EM_GETLINEのベタ実装なんだよな、これ。
昔から思っていたんだが、わざわざメソッドとして用意しておく必要性あるんだろうか。
普通バッファ長を指定できる方しか使わないと思うのだが。
わざわざこっちでバッファの先頭ワードにバッファ長代入とか暇人過ぎだろ。

204 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 21:11:51 ]
2つあるうちの一見楽そうに見える方が実は大変ということか



205 名前:デフォルトの名無しさん [2009/01/18(日) 15:22:20 ]
>>199
>>203 が書いているように、引数が2つしかない CEdit::GetLine()を使う
時は、呼び出す前に、第二引数で渡すバッファの先頭に、バッファ長を
書いておく必要があるのに、それをやっていないからだろ?

  LPTSTR pBuf;

  pBuf=strText.GetBuffer(iLength);
  *((LPWORD)pBuf)=iLength;       // バッファ長をセット
  m_wndEditCtrl.GetLine(iLine,pBuf);
  strText.ReleaseBuffer(iLength);

自分でバッファ先頭にバッファ長をセットするのが面倒なら、引数が3つ
あるCEdit::GetLine()を使うことだ。

206 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 16:01:41 ]
日付や時間を取得したいけどエラーがでてしまうんです・・・
内容は
Run-Time Check Failure #3 - The variable 'newtime' is being used without being initialized.

afx_msg void CMainWin::OnTime()
{
char str[80];
CTime Curtime = CTime::GetCurrentTime();
struct tm *newtime;

newtime = Curtime.GetLocalTm(newtime); //ここが問題
wsprintf(str,asctime(newtime));
str[strlen(str) - 1] = '\0';
MessageBox(str,"Time and Date");
}

msdn.microsoft.com/ja-jp/library/fxy17zta(VS.80).aspx
ここ見る限りじゃ間違いないと思うんだけどなあ・・・
指摘と改善お願いします。。。

207 名前:デフォルトの名無しさん [2009/01/18(日) 16:57:35 ]
>>206
突っ込みどころが大杉。釣りか?

C++やMFC以前に、ポインタも理解していないなら、C言語の基礎からやった
方がいいと思う。

MFCのサンプルは間違っているな。

  struct tm newtime;
  Curtime.GetLocalTm(&newtime);

でうまくいくだろう。

また、ワイド文字版のwsprintf()を使うなら「char str[80]」ではなく
「wchar_t str[80]」とすべき。MessageBoxもワイド版を使う。

> str[strlen(str) - 1] = '\0';

これもprintf()/wprintf()によって文字列末尾にNUL文字('\0')は付与され
ているから意味がないし、ワイド文字なら、strlen()ではなくwcslen()を
使うべき。

str[wcslen(str)-1] = L'\0';

第一、str[]がNUL文字で終端されていないと、strlen()/wcslen()は
文字列長さを判定できない。

208 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 17:08:05 ]
>>207
MSのサンプル間違ってるとか悲しいわな

これ、一応参考書のサンプルなんですけど捨てたほうがいいでしょうか
まあ2001年に出版されたものなんですけどね

209 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 17:14:24 ]
サンプルは間違っているとは言い切れないよ。
宣言と利用の間に、メモリ確保が隠されているかもしれないw

とは言え、2008用のページの方は訂正されているんだからそっちを見ればいい訳で。
ttp://msdn.microsoft.com/ja-jp/library/fxy17zta.aspx

210 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 17:22:43 ]
CTime Curtime = CTime::GetCurrentTime();
tm newtime;
Curtime.GetLocalTm(&newtime);
wsprintf(str,asctime(&newtime));

でできました!
参考書って年代で仕様も変わるけど図書館にはこれしかなくて・・・^^;
なんか疑いにくいんですよね、参考書って
どうもありがとうございました

211 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 17:28:49 ]
本に誤字脱字があるのは珍しいことじゃない

212 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 17:33:05 ]
おかしいと思ったら複数調べるのがいい。

213 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 17:33:41 ]
>>210
その参考書が何か知らんが、MSDNのサンプルをコピペしただけの悪書なんじゃないか?
いみじくも参考書を名乗るのなら、ちゃんと検証されたコードを載せるべきだと思うのだが。

214 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 17:37:35 ]
>>213
えっと・・・
ハーバート・シルト/フランク・クロケット著 「標準講座 MFC6.0」だそうです
結構分厚いからコピペではないと思います
ver間での使用の違いを疑わなかった自分のミスです



215 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 17:40:25 ]
いやこれ仕様の違いじゃなくてもともと間違ってるよ。
でもその本見る限り、コピペじゃなくて同じソースってことみたいね

216 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 17:44:41 ]
ってサンプルソースがダウンロードできるから見てみたけど、

struct tm *newtime;
newtime = curtime.GetLocalTm();

これなら旧仕様で合法だな。


217 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 17:48:03 ]
>>216を2008でコンパイルするとGetLocalTm()に引数がないことからエラーがでました
昔はよかった

218 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 17:50:03 ]
まあそれはMSDNのほうでも、_SECURE_ATLを未定義にすればいいみたいだけどね。

219 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 17:50:40 ]
>いいみたい
→いいと書いてるみたい

220 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 17:56:33 ]
昔は引数にNULL(省略化)を渡すことで、オブジェクト内部のstruct tmの
ポインタを返す仕様だったけど、NULLポインタを渡すのを許可しなくなった
ってことでは?

オブジェクト内部のstruct tmのポインタを取得できると、直接データを
書き換えて隠蔽化の意味がなくなるから。

221 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 18:56:56 ]
元のサンプルと全然違ってるし

222 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 19:33:49 ]
サンプルコードなんて使い方の雰囲気を感じ取るだけのもんで
コピペするもんじゃねぇ。
自分のプログラムに組み込むときは、引数・戻り値の意味と動作を理解し
自分の頭でコードを書くべき。

223 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 20:41:17 ]
サンプルコードをいじくりながら学ぶもんなんじゃねえの?
いじくる前に1回コピペするだろ

224 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 21:26:46 ]
いじくるのは勝手だけど、自分が間違ったのを本のせいにしない。



225 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 22:59:29 ]
>>207
wsprintf()ってワイド文字ではなくTCHARだけど。

226 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 23:02:26 ]
TCHARは_tsprintfみたいな名前だろ?
wprintfはwcharのはず
プリプロセッサで切り替わるだけだし

227 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 23:05:43 ]
wsprintfはWindowsのAPI
wprintfはprintfのワイド文字版

228 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 00:15:16 ]
>>210
手元の2004年初版第6刷発行では>>216のコードになってるな

>>225-227
wsprintf()は環境によってマルチバイトかUNICODEだよね。
>>206のコードだとマルチバイト環境のコードならばcharは間違えというわけではない。

それと
str[strlen(str) - 1] = '\0';
ってのはasctime()が改行文字を付加するからそいつを取っ払うため。

まぁ、あんまりよろしくないコードとは思うけどね。

229 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 00:41:37 ]
wsprintfとwprintfとswprintfは紛らわしすぎる

230 名前:デフォルトの名無しさん [2009/01/19(月) 05:48:07 ]
処理をCPU使用率30%を上限に制限して実行させるにはどうすればいいんでしょうか?
そんなことは可能なんですか?

231 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 08:47:51 ]
なんでそんなことする必要があるのか疑問。
他のアプリの邪魔をしたくなければ、スレッドの優先順位を低くしとけばいいだけ。

232 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 08:53:15 ]
>>230
25%上限でよければ、簡単だよw

233 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 09:23:00 ]
>>232
Core2Duoですが簡単ですか?

234 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 09:25:08 ]
惜しいな、Core2Duo単体なら上限は50%だ。



235 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 09:31:19 ]
Core2Duo限定のソフトか!

236 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 10:31:14 ]
いえ、Qのほうで

237 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 12:33:52 ]
MFCと関係あるか?

238 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 14:54:00 ]
誰ですか。勝手に話を進めないでくださいw
アプリに重い処理を乗せたくて起動者全員CPU30%とか10%づつシェアするプログラムを組み込みたいんです
制限かけないとずっと自分が使ってなくてもずっと100%で熱暴走が心配なのでCPU10%を提供に制限したいんです。
どうすればいいと思いますか?

239 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 15:36:17 ]
MFCにそういうライブラリが存在しなければスレ違い

240 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 17:17:46 ]
>>238
熱暴走が心配ってどんな環境だよ。
「起動者全員」とか「シェアする」とかサーバーアプリなの?
どうしても心配ならユーザー数に応じてSleepでもさせたら?

241 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 19:23:57 ]
CPU使用率を求める処理でCPUを食うから無意味

242 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 20:09:19 ]
>>241
えっ?

243 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 20:29:40 ]
お前ら >>237 も >>239 も見えないフリか。

244 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 20:50:46 ]
熱暴走については、昔の焼き鳥こさえてたAthlonの時代ならともかく、
今のCPUは温度が上がりすぎると勝手にクロックとか落とすので、特に問題ないな。
CPU利用率については、WindowsServerならプロセスがどれだけフル回転していようと、
一定時間毎に容赦なく他のプロセスに明け渡すから、無難なレスポンスが確保できそうかな、と。



245 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 06:57:04 ]
優先度でいつでも明け渡せるとしても、気分的に窮屈な感じしませんか?
自分の作ったプログラムはいつも全力で走るんですが、CPU見てると常に20%ぐらいでなんかまわってたりするんですが
、タスクマネージャで確認してるだけなんですが、この%って一定時間内のCPU100%使用率ってことなんですか?
そうでないとしたら%制限の方法を教えてください!

246 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 07:08:05 ]
>>240
thx!
今ってCPUというかハードの性能がすごくてほとんどの処理がすぐ終わって待機時間がすごくもったいない気がしたので
そういう部分だけの汎用的なCOMとかで自由に独自のソフトに組み込めたらよくないですか?
10%シェアでも100人いればパソコン10台分ですよね。フリーでそういうのあれば教えてください。
Sleepでどうやるかじっくり考えます。
どうもです

247 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 07:56:11 ]
無駄。つーか、スレ違いだと。
そもそも>234辺りの理屈は判っているのだろうか。

248 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 10:08:04 ]
スレ違いだと何度指摘されても話を続ける奴って何なの?
知的障害者なの?死ぬの?

249 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 18:56:45 ]
ム板は初心者にとってスレチが紛らわしいと思うけどこれはわかるだろ、な?

250 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 08:26:16 ]
どこで聞けばいいんでしょうか?
どうやって実現するかわからないのでターゲットのスレもわからないです。

251 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 09:10:06 ]
>>250
>この板はプログラムを作る人のための板です。
>あらゆる質問はまずすれ立てるまでもない質問はここでスレにしてください。


252 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 09:38:27 ]
thx

253 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 08:41:42 ]
MDIで一つのDocに複数のViewというのはなんとか判る。今回、
そのViewが一つ1枚とその他10枚が別のViewになる構成ってどうやるのがいいのだろう。
CMultiDocTemplateを11個AddDocTemplateすることになるのだろうか。
その場合、クラスを派生して10個にしておかないと10枚の区別がつかない気がするのだが。

ってことで、これから移動するからレスは夜になるが、誰かヒント頼む。

254 名前:デフォルトの名無しさん [2009/01/22(木) 09:50:02 ]
Viewクラスだけ異なるDocTemplate作ればよいのではないか?
たしか複数のAddDocTemplateをすると新規作成時にテンプレ選択ダイアログが出るようになるな



255 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 14:10:59 ]
ドキュメントテンプレートはアイコン、メニュー、ツールバーみたいなリソース関係で
ドキュメントごとじゃなくてドキュメントタイプごとに違うリソース使えるようにする

256 名前:253 mailto:sage [2009/01/23(金) 00:42:41 ]
今(帰って)きた。レスTHX。つーか、>253は出掛けとは言え酷いなぁw
結局、一つの必ず必要なViewだけドキュメントテンプレートにして、
他の10枚分は全部そのViewから必要に応じて開くようにしてしまった。
考えてみたら、新規作成ならテンプレート選択ダイアログが開くけど
ファイルオープンだとどうせ最初のテンプレートでしか開かないしね。
それとも選択する手段があるのかな?
# うーむ、今更真面目にMFCの勉強し直すのも面倒だなぁ……

257 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 10:35:20 ]
同時に開く1個+10個が、常に同じファイル数でセットなのか、10個は
中身は異なるが同じクラスのオブジェクトなのか、そこらへんで全く
違ってくると思う。

開くファイルとビュー(ウィンドウ)を全てMDIのDoc-View構造に登録して
管理しなければならないかといえば、決してそうではない。

SDIだけど、ペイントブラシのように、開くのは1個の画像ファイルで、
一部を拡大表示するウィンドウを複数同時に表示できるなどというインター
フェースだって作れる。

例えばMDIベースでVisual Studio相当のアプリケーションを作成すると
して、独立した1個がプロジェクトファイル、残りのN個がプロジェクト
を構成するソース/ヘッダファイルだったとして、ソース/ヘッダファイル
はプロジェクトの一部としてだけでなく単独でも開ける。

プロジェクトの一部として開いたソース/ヘッダファイルは、プロジェクト
に相当するドキュメントクラスで管理することになると思う。ソース/ヘッダ
ファイルを単独で開いた場合、インターフェースに統一性を持たせるため、
一時的に無名のプロジェクトを作成し、それに管理させているような形に
なるのでは?

258 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 11:33:53 ]
CHtmlViewをMDIで使いたいんですが、
このビューを単独でプロジェクトに追加して開くにはどうすればいいですか?
ドキュメントテンプレートでAddにすると、使わないのに.Docも作らなければいけないとおもうんですが。

259 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 13:07:32 ]
>>258
クラスの追加もできない馬鹿は、MFCの参考書でも読んで勉強し直せ

260 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 13:28:44 ]
もとからあるMDIViewにCHtmlViewを張り付けられなくないですか?
ビューを切り替えるだけのときオープンドキュしなきゃいけないので.Docもセットなのが嫌なんですが


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






[ 新着レスの取得/表示 (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