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


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

■MFC相談室 mfc19d.dll■



1 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 18:37:47 ]
Microsoft Foundation Classライブラリ専用スレです。

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

52 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 02:08:09 ]
MFCでMDIアプリを作っております。
そこで困ったことがあり質問させていただきました。

あるアクティブな一つのウィンドウをViewクラスに属しているメニューコマンドで
メニューを選択したらアクティブMDIの子ウィンドウを最大化したいのです。
メニューコマンドを選択したら自動的にアクティブなウィンドウに対してコマンドが
実行されると思っています。

コマンドを追加した関数から「ShowWindow( SW_SHOWMAXIMIZED );」を
呼んだのですが最大化しそうな動きが一瞬するのですが、子ウィンドウが最大化表示しません。
最大化の方法が間違っているのでしょうか?
実現方法をよろしくお願いいたします。

53 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 03:03:29 ]
つ CMDIChildWnd::MDIMaximize

54 名前:52 mailto:sage [2008/05/11(日) 03:37:32 ]
>>53

ありがとうございます。解決しました。

CMDIChildWndをヘルプを見ましたらクラスメンバでvoid MDIMaximize();を見付けました。
ヘルプでのMDI子ウィンドウフレーム派生クラスの親クラスを見ていませんでした。
今回の件で解決方法を調べるのにネットの方ばかり探していました。
「MDIMaximize」でググると検索で欲しかった情報が出てきました。

Viewクラスからの呼び出しているコマンド内では、以下の通りでMDIMaximize()を呼びました。
CChildFrame *pChildFrameWnd = (CChildFrame *)GetParentFrame();
pChildFrameWnd->MDIMaximize();

この処理を追加しましたらMDI子ウィンドウのタイトルバーの最大化ボタンをクリックしないで
MDI子ウィンドウを最大化する事ができました。

重ねてありがとうございます。

55 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 12:59:37 ]
リソースビューでタブを作った場合、その中に表示するコントロールは自分で用意(Create等)しなければならないのでしょうか。
全てリソースビューでやろうとすると、全てのタブに表示されるべきコントロールが同じ場所に表示されてしますので扱い辛く・・

56 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 16:37:55 ]
プロパティシートかな

57 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 16:49:32 ]
リソースビュー使わずに直接.rcファイルいじるとか、
リソースビュー上はバラバラだけどプログラム上の初期処理で位置変えるとかもある

58 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 18:26:28 ]
別ウィンドウに作っておいてタブを切り替えたときにウィンドウごと張り替える。
# それやるくらいならプロパティシートかな。

59 名前:55 mailto:sage [2008/05/11(日) 19:35:03 ]
レスありがとうございます。
色々なアプローチの仕方があるのですね。

60 名前:デフォルトの名無しさん [2008/05/14(水) 16:46:33 ]
VC6で印刷処理を作っています。
印刷ダイアログを表示せずにデフォルトのプリンタで印刷するときの前後処理は
こんな感じのやり方でよろしいのでしょうか

CPrintDialog dlgPrint(FALSE);
VERIFY(dlgPrint.GetDefaults());
CDC dc;
VERIFY(dc.Attach(dlgPrint.CreatePrinterDC()));

(印刷処理)

dc.DeleteDC();
GlobalFree(dlgPrint.m_pd.hDevMode);
GlobalFree(dlgPrint.m_pd.hDevNames);



61 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 18:37:51 ]
実行出来たらそれていんじゃね?

62 名前:デフォルトの名無しさん [2008/05/15(木) 13:48:03 ]
>>61
メモリを解放しないといけないかと思いまして

63 名前:デフォルトの名無しさん [2008/05/15(木) 16:22:21 ]
別にどっちでもいいんですが。。

当方、6年位前に貧乏でして、VisualC++スタンダード版を何とか買いました。

その後、JavaやPHPで食いつないできたんですが、今になって当時買った本とか読んで
WindowsAPIやらMFCやら勉強したら面白くてだいぶ身についたんですが、
今は.NETFrameWorkで動くCLRというのがもっぱららしいんですが、私はぜんぜん知らないし
大体環境をもってません。まあ無料でダウンロードできるらしいんですが。

私みたいのでも就職口ありますかね?別にJavaやPHPでくっていけるんでいいんですが
一度仕事でもVC++やってみたいですし。

よろしくお願いしますm(_ _)m

64 名前:「んですが」なくても読める罠 mailto:sage [2008/05/15(木) 16:29:21 ]
>>63
--
        別にどっちでもいい
んですが。。

        当方、6年位前に貧乏でして、VisualC++スタンダード版を何とか買いました。

        その後、JavaやPHPで食いつないできた
んですが、
        今になって当時買った本とか読んで
        WindowsAPIやらMFCやら勉強したら面白くてだいぶ身についた
んですが、
        今は.NETFrameWorkで動くCLRというのがもっぱららしい
んですが、
        私はぜんぜん知らないし
        大体環境をもってません。まあ無料でダウンロードできるらしい
んですが。

        私みたいのでも就職口ありますかね?別にJavaやPHPでくっていけるんでいい
んですが
        一度仕事でもVC++やってみたいですし。

        よろしくお願いしますm(_ _)m
--
        そもそも鼬害だし、望み薄だと思う
んですがw

65 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 16:30:34 ]
>>63
結局、訊きたいのは
>私みたいのでも就職口ありますかね?
これか?
ここ、そゆこと訊くスレに見える?

66 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 16:36:25 ]
>>65
どうでもいいそうだから、質問にさえなってないと思われ。

67 名前:デフォルトの名無しさん [2008/05/15(木) 18:25:12 ]
うんこ♥

68 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 00:57:00 ]
>>63
そういうのはマ板で聞け

69 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 16:01:58 ]
シングルウィンドウの×ボタン(閉じる)を押したとき『終了しますか?』といったダイアログを出したいのですが、どこに記述すれば宜しいのでしょうか。
〜ViewのOnDestroyやメッセージでWM_Destroyを関知したときにwhile(1)で無限ループさせても終了してしまいます。
OnDestroyを通った後にOnCloseは通らず、×ボタンを押したときウィンドウを閉じさせないという選択肢をどこで作ればいいのか・・。

70 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 16:25:26 ]
OnClose



71 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 16:59:03 ]
>>69
MainFrameでOnClose

72 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 18:01:48 ]
ありがとうございます。
なるほど、Viewで無限ループさせてもFrameが閉じられるのでアプリケーション自体が終了していたのですね。

73 名前:あは〜ん mailto:sage [2008/05/19(月) 18:54:12 ]
あは〜ん

74 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 17:49:58 ]
MFCでアプリケーションを作っています。
質問なのですが、
エクセルなんかのカラー選択のコンボボックスの動きを実現させたいのですが、
コンボボックスの内容をオーナードローで描画するのは出来るのですが、
あの色サンプル(コンボボックス押すと出てくるリスト)はどのように作るべきでしょうか。

CColorDialogとかではなく、あの30色ぐらいのパレットがほしいのですが。

75 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 18:10:48 ]
>>74
このへん?
CMFCColorButton


76 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 23:57:24 ]
>>75
レスありがとうございます。MFCと書いてあるということはVS2008版ですよね。
残念ながら、当方VS2003なのです。
エクセルのパレットがそのままの形ででもあれば・・・。

77 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 08:32:41 ]
>>74

これでよい?

www.kumei.ne.jp/c_lang/sdk2/sdk_139.htm

78 名前:77 mailto:sage [2008/05/25(日) 08:36:46 ]
>>76
MFC→VS2008じゃないよ。2008EEにはついてないし。
逆にVS2003には必ずついていると思われ。

「CColorDialogとかではなく」ってことは77はNGか orz

79 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 10:52:10 ]
>>77 >>78
レスありがとうございます。
MFCと書いたのはCMFCColorButtonのことでした。略して分かりにくしてすいません。

up.cgi.jp/mek3
↑作りたいのはコレなんです。これをチョコチョコ改変して作りたいのです。
やはりダイアログを作成して、CBitmapButtonでサンプル色ボタンを作って貼り付けて、
テキストリンクのところはCButtonの枠線なしとかで対応するのでしょうか。

80 名前:77 mailto:sage [2008/05/25(日) 14:22:21 ]
失礼。CMFCColorButton は2008にしかないってことでしたか。

う〜ん。やっぱり79のような感じなんですかね。




81 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 16:58:27 ]
エクセルのはただのツールバーだろ

82 名前:74 mailto:sage [2008/05/25(日) 19:22:25 ]
>>77
レスありがとうございます。
形状的にはそうするのが一番形になるような気がします。

>>81
レスありがとうございます。
えっ?!コンボボックスの中身をツールバーにするのですか?
ちょっとイメージがつきません…。

83 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 19:31:31 ]
ttp://www.codeproject.com/KB/miscctrl/colour_picker.aspx
これ参考にすれば?

84 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 20:14:33 ]
>>82
ツールバーの中にコンボボックスがあるんだろ。


85 名前:74 mailto:sage [2008/05/25(日) 20:22:12 ]
>>83
レスありがとうございます。

おお、これです。コレがしたかったんです。ありがとうございます。
英語ばかりですが、サンプルコード読みながら何とか紐解いてみます。
サンプルプロジェクトコンパイルしたらエラーしますがorz...




86 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 20:24:42 ]
このサイト、Japanizeでちゃんと自動翻訳してくれるんだな・・・メニューくらいだけだけど

87 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 00:33:51 ]
JapanizeじゃなくJapaneseだろ!
…って書き込もうと思ったんだが、ググったらそういうソフトがあるのな。自動翻訳の。

88 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 14:13:22 ]
デバッグモードだと
_DEBUGが定義されてるように

MFCだと
定義されてるやつってありますか?

89 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 19:08:44 ]
_MFC_VER

90 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 01:54:21 ]
VC6、MFC、ダイアログベース

ダイアログ上にCStaticを配置して、そこにJPG画像を表示しています。
JPG表示領域に別のWindowが重なったりした場合に、それをどかしても
重なっていた部分だけ表示が消えた状態となってしまいます。

自分自身が最上位に来たときに再描画するようにすれば良いと思うのですが
何のMessageを捕まえればよいのでしょう?





91 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 06:43:05 ]
画像を設定した後、さっさとハンドルを破棄してしまっている予感。

92 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 08:44:12 ]
ダイアログベースならデフォルトで再描画あるじゃないか

93 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 11:00:31 ]
OnPaint を理解してないと思われ

94 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 22:33:46 ]
2008SP1が出たら購入を考えているのですが、
タブMDIやリボンバーを実現するクラスの仕様や構成をご存じの方いますか?

95 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 09:35:55 ]
>>94
ttp://msdn.microsoft.com/en-us/library/bb982354.aspx
ふつーにMSDNライブラリでどーぞ

96 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 11:13:03 ]
Dialog::WindowProcがダイアログが非アクティブだと呼ばれないのですが、
非アクティブ時も処理したい場合、どのように書けばよいですか?

97 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 11:58:38 ]
メッセージが来てないだけだろ

98 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 14:19:42 ]
メッセージが来るようにしたい場合、どのように書けばよいですか?

99 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 14:26:08 ]
そもそもどんなイベントが欲しいんだ?

100 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 14:39:15 ]
DIJOYSTATE2.rgbButtons[]の状態を常に監視して、
ボタンが押されたら任意に設定したキーイベントを発生させたいんです。




101 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 15:27:22 ]
普通は非アクティブウインドウにキーイベントは来ない
できないこともないけどMFCとは関係ない

102 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 15:45:44 ]
MFCやWin32APIに関して初心者なんだけど、だれか助けてくれたりしないかな。

MFCでSDIアプリを作っている。CMainFrameのメンバにCDialog m_toolDlgを保持して、
モードレスで実体化させている。
やりたいことは、モードレスダイアログ m_toolDlg のあるボタンが押されたときに、CHogeViewの向けて
メッセージ(?)を飛ばしたいのだけど、どういう枠組みを用意してやって、どういうメソッドを使ってやればいいのか
わからない。

どうも体系的に知識が不十分なのは分かっているのだけど、今時MFCの資料が無くて困っている。
だれかアドバイスをくれないだろうか。

103 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 15:58:58 ]
CFrameWnd * pFrame = (CFrameWnd *)(AfxGetApp()->m_pMainWnd);
CView * pView = pFrame->GetActiveView();

あとはSendMessageするなりキャストして直接関数呼ぶなり好きにしろ。

104 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 16:12:07 ]
>>103

早速ありがとう。示してもらったとおりに SendMessage(WM_COMMAND, ID_XXX, 0) としたら、
Viewがうまく反応した。

感謝

105 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 16:14:05 ]
メッセージの受け方は、自動生成される他の関数を参考にしてみろ
WM_PAINTならOnPaint()みたいな感じで

106 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 16:20:19 ]
ユーザー定義メッセージ あたりでググるとよい。

107 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 21:40:12 ]
afx_msg LRESULT OnXXXXX(WPARAM wParam, LPARAM lParam);
 
ON_MESSAGE(WM_APP+n,OnXXXXX) とかだね

OnCommandとか直に呼ぶと、まずい場合もあるから↑書き方も覚えておくと良いかも

108 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 18:48:11 ]
アクションゲームの様な物を想定して、毎秒30フレームの画面更新を行いたいのだけど、MFCで書くにはどうすればいいのだろう?

もちろん、一番手軽なのはWM_TIMERで処理することだと思うけど、精度が低いので保留。

OnIdleをハンドリングして、中でtimeGetTime()を使って適切な時間をカウントしてやる方法も試してみたんだけど、こちらは常にCPUを100%使い切ってしまうのが厳しい。
実行している処理内容は大した負荷ではないはずなのに、CPUを使い切ってしまうとユーザがいやがるし、美しくない。

できれば、この両者の間ぐらいが方法が欲しい。つまり、まずまず精度が高くて、CPU使用率がむやみに100%に振り切らない方法。

自分はMFCやWin32APIの初心者なんだけど、何かいい企てや情報はないだろうか?

109 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 19:07:10 ]
OnIdle()でハンドリングして、時間を待っている間にSleep(1)を入れたらCPUが100%になることが無くなった。これで解決かも。

参考
ttp://orangeknowledge.jpn.org/tips/game002.html

110 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 19:08:32 ]
別スレッドでSleepやWaitableTimerで1/30毎にSendMessageするとか。



111 名前:デフォルトの名無しさん [2008/06/04(水) 22:21:07 ]
質問だけど、MSDNにはCFileのwriteはバッファリングしないって
書いてあったんですけどCFileのwriteとfwriteってどちらが速いですか?
また、それ以外にも速いファイルライト関数ってありますか?


112 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 22:34:01 ]
自分で試して違いがわからなかったら気にする必要ないだろ

113 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 22:35:54 ]
速度程度なら、ループさせてGetTickCount()あたりでも計測すればいい

114 名前:デフォルトの名無しさん [2008/06/04(水) 23:41:51 ]
質問です。

WindowsXPでVS2005なんですけど、CFileDialog等のコモンダイアログって
リソース上の文字列(“開く”とか)は実行環境に合わせ勝手にローカライズ
されませんよね?

環境に応じて表示言語を変えたい(少なくとも日本語←→英語の切り替え)を
やりたいんですけど、リソースIDとかがわからず、どこをどう触ればいいのか
途方に暮れてしまってるんですが、何かセオリーってありますか?

115 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 23:46:07 ]
ローカライズの切り替えは知らないけど、リソースIDはふられていたはず
ダイアログ自体書き換えれるし

116 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 00:12:34 ]
数年ぶりにMFCに戻ってきたんだけど
いつのまにか、テンプレート クラス用のメッセージ マップなんて
作られたんだね。結構使われてるのかな?

117 名前:114 mailto:sage [2008/06/05(木) 00:17:00 ]
>115
レスありがとうございます。
ちなみにコモンダイアログのリソースIDはどこで確認すればいいのでしょうか?
目ぼしいドキュメントが見つからなくて、てっきりリソースIDは無いものだとばかり・・・

118 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 00:20:35 ]
>>112,113
わかりました。結局あなた達も知らないのですね。

>速度程度なら、ループさせてGetTickCount()あたりでも計測すればいい
そんなしょぼい精度の計測はせず、QueryPerformanceCounter()で計測します。

119 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 00:31:41 ]
なんという恥ずかしいレス

120 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 07:35:44 ]
MFCは一定間隔の更新に弱く、MFCの表示周りの更新を行うと内部で勝手にウエイトが入るんだよな。
別スレとか方法としてはいくつもあるけど正確な更新をするのであればMFCベースでやらないほうがいい。



121 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 09:20:58 ]
動画再生ぐらい余裕でできるだろ

122 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 16:27:10 ]
>>117
Dlgs.h の中の edt1 とかの値が使われている。

123 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 17:35:11 ]
>>118
fpsの調節をするためにビジーループでQueryPerformanceCounterを呼び出していると、
環境によっては数秒に一度関数からしばらく戻って来ないでフリーズする現象が発生します。


 



124 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 20:22:53 ]
動画の再生なんて、アバウトでいいのよ
30 fps をきっちり正確に表示する必要は全くない
人間の目なんて、数コマ落ちしようと時間間隔が多少
ずれてもわからんのよ
よって、秒単位に適当に切り捨てればよい


125 名前:デフォルトの名無しさん [2008/06/05(木) 20:54:18 ]
MFCの中でオーバーライドされてる関数の元の関数を使いたいんですが、どうやるんでしょうか?
LRESULT SendMessage( HWND, WPARAM , WPARAM, LPARAM );
これを使いたいんですが、HWNDがない方になっちゃいます。
::つけるようだった気がするんですが違うみたいでした。

126 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 21:08:00 ]
あってると思うけどな。

127 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 22:01:08 ]
>>125 それはオーバーライドとは言わない ただのAPIをCWndオブジェクトに対してのみ便利メンバ関数として用意してるだけ

128 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 22:05:00 ]
頭に::をつけるというのは、グローバルな関数や変数を指定してるだけだからな
頭にクラス名がついていない代わりだ
ていうか、自動補完が動いてないだけで、書けばコンパイルはとおるだろ?

129 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 20:29:32 ]
とおらないんじゃないだろうか。

130 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 22:39:29 ]
SDI(ドキュメント無し)のMFCアプリで、Viewウィンドウサイズを指定(800*600)して起動させたいのだけど、やり方がさっぱり分からん。

やりたいことは、指定の画像(800*600)をビューでピッタリ描写すること。

いや、CMainFrame::PreCreateWindow()でcs.cx, cs.cyを設定すればいいのは分かるんだけど、ここに800, 600と入れるとウィンドウサイズが800,600になって、Viewの描写領域のサイズはメニューやツールバーに削られた小さな領域になってしまう。

メニューやツールバーの領域をあらかじめ計算して大きめのウィンドウサイズを指定する方法があるけど、それはあまりにスマートじゃないので、何かベンツのやり方はないだろうか?




131 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 22:43:45 ]
GetMatrixHogehoge(名前忘れた)で、タイトルバーのサイズとかをあらかじめ取得しておいて、
そいつらの高さや幅をあらかじめ加算しておけば?
メニューやステータスバーのサイズはあらかじめわかるだろうし

132 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 23:10:21 ]
メニューが二段とかの例外を気にしないならAdjustWindowRect

133 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 00:14:28 ]
>>131, 132

情報ありがとう。教えてもらった情報を試してからまた報告に来ます。

134 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 01:51:10 ]
そのテのはネットで結構あった気がする

135 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 13:47:23 ]
AdjustWindowRectを試してみたけど、ツールバーとステータスバーの領域は考慮してくれなくて、
その部分は自前で算出してやらなきゃいけないみたい。

136 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 14:12:33 ]
MFCの勉強をしようと思ったら何からはじめたらいいの?

WinAPIではガリガリ組めるレベルだ。

137 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 14:17:38 ]
Win32がそのくらいのレベルあるなら、かなり楽かもなー
逆に隠ぺいされすぎて、ムカつくかもしれないけどw

とりあえず、MSが配布してるサンプル読んで理解して、あとは適当に自力で作ってみたらいいんじゃないかな

138 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 14:18:34 ]
まずはダイアログアプリから始めて、基本的な GUI の
実装を一通り経験すべし
その後にドキュメント/ビュー に進むがよい


139 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 14:19:18 ]
>>137

隠蔽されすぎてるのかw

わかった取りあえず、サンプル読みまくるよ。

ところで、MFC自体のソースって公開されてるの?


140 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 14:22:04 ]
関数名がそのままだけど、第1引数のハンドルとかが、クラスに隠蔽されていて、なかったりする
たしかに、先にダイアログから手をつけるべきだな
サンプルは公式にあったと思う



141 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 14:36:12 ]
個々のクラスで見ると、素直にクラスで包んでるだけだよ。
後はそれにアプリケーションレベルの仕組み(Doc/Viewとか)があるくらい。
コマンドメッセージとかはちょっと複雑なルート辿るけどね。

142 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 14:44:17 ]
みんなありがとう。

ダイアログから読んでいろいろやってみるよ。

143 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 10:57:47 ]
確かに、目の前にハンドルがあるとついついクラスのメンバ関数じゃなくてAPI呼びたくなるよな。
ハンドルを意識する必要が全くなければいいんだけどね。

144 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 14:02:25 ]
VS2005のMFCで作ったexeファイルが
別のPCで起動させた際に不正なファイルとでて起動できませんでした
プログラムを組んだPCではきちんと起動するのですが原因がわかりません
原因についてわかる方、教えていただけませんか

PCのOSは両方ともWinXP Pro SP2です
VS2005は片方にしか入っていません
よろしくお願いいたします

145 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 14:29:46 ]
インストーラ作れよ

146 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 14:40:41 ]
>>145
作り方教えてください。

147 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 14:44:04 ]
ヘルプを見よ

148 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 14:46:54 ]
これをダウンロードして実行しろ

www.microsoft.com/downloads/details.aspx?FamilyID=32bc1bee-a3f9-4c13-9c99-220b62a191ee&DisplayLang=ja

149 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 18:29:14 ]
>>144
ttp://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200606/06060025.txt
VS2005にもスタティックリンク出来ないグレードあるんだっけ?

150 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 01:37:33 ]
>>149
ありがとうございます。
そこに書いてあるように「マルチスレッド MT」に変えると
ビルドする際に

c:\program files\microsoft visual studio 8\vc\atlmfc\include\afxver_.h(77) :
fatal error C1189: #error : Please use the /MD switch for _AFXDLL builds

といったエラーがでるようになってしまいました
解決方法がわかれば教えていただけませんか



151 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 03:25:31 ]
>>150
>解決方法がわかれば教えていただけませんか

>Please use the /MD switch for _AFXDLL builds

152 名前:デフォルトの名無しさん [2008/06/12(木) 00:11:07 ]
VS2005でStdioFile::ReadString()関数を引数をCString参照で使っているんだけど、
何行かread(大体1000行ぐらい)していると、stringのバッファサイズが何とかという
実行時エラーが出てしまいます。何か対策はありませんでしょうか。






[ 続きを読む ] / [ 携帯版 ]

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

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