■MFC相談室 mfc17d.d ..
[2ch|▼Menu]
99:デフォルトの名無しさん
06/12/12 21:26:36
ダイアログ上に複数のスタティックなコントロールを配置しています。
各コントロール毎に違う背景色を設定したいのですがどのようにすればよいのでしょうか?
OnCtlColor()メソッド内でコントロールの判定ができればよいと思うのですが・・・。
どなたかご教授の程よろしくお願い致します。

OSはWinXP SP2、開発環境はVC++ 2005です。

100:デフォルトの名無しさん
06/12/12 21:45:51
>>98
カスタムドローじゃねぇの?

>>99
普通にウィンドウハンドル比べたらどうよ?

101:98
06/12/12 21:47:33
>>100
無知で申し訳ないのですが、カスタムドローとはどのようなものですか?

102:デフォルトの名無しさん
06/12/12 21:55:03
>>101
URLリンク(www.google.co.jp)

103:98
06/12/12 21:57:44
>>102
すみません、自分で検索するべきでした
どうもありがとうございました

104:99
06/12/12 22:00:20
>>100
レスありがとうございます。

if(GetDlgItem(IDC_STATIC_COLOR1) == pWnd){
AfxMessageBox(L"一番目のコントロール");
}
//以降コントロールの数分else if

試しにこんなコードでやってみたのですが引っかかりませんでした。
比較処理が悪いのでしょうか?



105:デフォルトの名無しさん
06/12/12 22:06:07
MFCってpWnd->m_hWnd == GetDlgItem(IDC_STATIC_COLOR1)->m_hWndってやらなくてもいいんだっけ?
まあ、駄目だったら、そもそもIDC_STATIC_COLOR1が本当にそいつの直下に配置してあるコントロールなのかどうなのか
ってところがあやしいんじゃね?

106:99
06/12/12 22:22:41
>>105
OnInitDialog内で
GetDlgItem(IDC_STATIC_COLOR1)->SetWindowText("あいう");
で文字は表示されたので問題はないと思うのですが・・・。
もう少し調べてみます。


107:99
06/12/12 22:31:54
>>105
すみません、教えていただいた
pWnd->m_hWnd == GetDlgItem(IDC_STATIC_COLOR1)->m_hWnd
でできていました。(メッセージボックスが表示されていなかったのでできていないと思っていました)
どうもありがとうございます。

108:デフォルトの名無しさん
06/12/12 22:38:02
それはえがった

109:デフォルトの名無しさん
06/12/13 16:35:12
VC6を使って、MDIアプリにMDIタブを実装したい
まずは、CMainFrame に MDIタブ用の CDocBar を配置したいのだが、
どこをどうオーバーライドしたらいいんだ?

CMainFrame::recalcLayout() あたり?


110:デフォルトの名無しさん
06/12/13 17:02:48
またお前か

111:デフォルトの名無しさん
06/12/13 19:25:44
その前にMDIの作り方は間違っていないのかね?
なんだかこの間からぶち当たった問題をことごとく質問してないか?

112:デフォルトの名無しさん
06/12/13 19:32:03
相談室だから質問しています

113:デフォルトの名無しさん
06/12/13 19:34:02
>>112
相談しようぜ。
MDIの基本的な部分はOKなん?

114:デフォルトの名無しさん
06/12/13 19:52:36
ここは自分でできもしないことを相談する所か?

115:デフォルトの名無しさん
06/12/13 20:17:28
まあ、MFCスレってここしかないんだから、そう厳しいこといわんと。
MFCって結構むずいじゃん。
俺、ドキュメントビューアーキテクチャーとかいう仕組み覚えるのに何日も必要だったぞ。
まず、ドキュメントビューアーキテクチャーの構造なんて大して重要なもんだと思ってなかったし(SDIで組んでたのもあって)。
この状態でMDIプログラミング特攻すると、はっきりいってハマルじゃんw

116:デフォルトの名無しさん
06/12/13 20:57:27
プロパティシートについて質問があります。
ダイアログをいくつか作成(このときフォントをMSゴシックの12ptに変更)し、
各ダイアログ毎にクラスを作成(CPropertyPageクラスの派生クラス)して
メインメニューに[プロパティ]項目を追加、そのイベント内で
・プロパティシートのインスタンス生成
・プロパティページをプロパティページにAddPage
・DoModalで表示
しています。
このとき、表示された各ページのフォントサイズが標準のMS UI Gothicの9pt
で表示されてしまっています。なのでCPropertySheetの派生クラスを作り、
OnInitDialog内でフォントサイズの変更を行ってみたのですが変化なしでした。
なぜこのような現象が起こるのでしょうか?

117:デフォルトの名無しさん
06/12/13 21:00:50
プロパティシート使ったことないけど
タブコントロールなら、全ページフォントを設定する必要があるな。
プロパティシートにもそんなのあんじゃね?(適当w)

118:デフォルトの名無しさん
06/12/13 21:10:57
OnInitDialog内でGetPage()->SetFont();は行っているのですが
それでも変わらないんですよ。各ページのコントロールのサイズも
ちっちゃくなってますし。全ページのコントロールの位置、サイズ、フォントを
設定しないといけないんでしょうか。

119:デフォルトの名無しさん
06/12/13 21:42:18
CPropertySheet フォント で検索

120:デフォルトの名無しさん
06/12/13 21:44:25
MDIの基本的な部分はたぶんオケ

だからおいらの相談に答えてくれよー

121:デフォルトの名無しさん
06/12/13 21:46:33
>>119
あ、やっぱ、手動なんだw

122:デフォルトの名無しさん
06/12/13 21:48:25
>>120
ドキュメントビューアーキテクチャ(なげぇなw)の理解は大丈夫ということでOK?

123:デフォルトの名無しさん
06/12/13 21:57:52
>まずは、CMainFrame に MDIタブ用の CDocBar を配置したいのだが、

MFCにCDocBarなんてあったけ?

124:デフォルトの名無しさん
06/12/13 22:20:15
>>123
すまん CDockBar だった

CDockBar はアンドキュメンテッドなクラスで、CControlBar を配置するための滑走路みたいなものだよ

125:116
06/12/13 22:43:28
>>119
SendMessageToDescendants()?でフォントは変更できましたが、
サイズとかの変更の仕方が分かりませんでした。

126:デフォルトの名無しさん
06/12/13 23:09:57
MFCを理解しようとしないで自分のやりたいことだけ質問する馬鹿ばっかりだな

127:デフォルトの名無しさん
06/12/13 23:33:37
MFCのすべてを理解してるなら、すべての質問・相談にちゃっちゃ答えて神になってくれ

128:デフォルトの名無しさん
06/12/13 23:47:28
何のためにソースがついてるんだろ

129:デフォルトの名無しさん
06/12/13 23:49:05
非効率だよね。
まず、全体っちゅーか概要ぐらいは理解しないと
なにやるにも知ってる人間にお伺いを立てないと何もできなくなっちゃうぞ。

130:デフォルトの名無しさん
06/12/14 01:57:25
なんかMFC使うほうがかえって面倒くさそうだ

131:デフォルトの名無しさん
06/12/14 03:22:11
馬鹿じゃねぇの

132:デフォルトの名無しさん
06/12/14 07:02:17
>>130
そういうときもある。

133:デフォルトの名無しさん
06/12/14 09:06:58
コントロールのサイズと位置はピクセル単位じゃなくてダイアログベース単位で、
ダイアログベース単位はフォントの幅が元になってる。
だからダイアログのフォントを変えると
コントロールのサイズと位置もフォントに比例して変わる。

このフォントサイズはダイアログを作る時に指定した
ダイアログボックステンプレートに定義されている。
ダイアログを作った後でフォントを変えても
コントロールは既に作成されてしまっているから
コントロールのサイズと位置は後で指定したフォントには影響されない。

以上ここまでMFCに限らずWin32でも同様

プロパティシートがリソースで定義されたダイアログのフォントを無視しているということは
たぶんメモリ上に読み込んだダイアログボックステンプレートのフォントを書き換えてから
その変更を加えたダイアログボックステンプレートでダイアログを作っているのではないか
と推測されるけど、あとはCPropertyPageのソース等を読めばわかることだから省略

134:デフォルトの名無しさん
06/12/14 10:51:38
  ☆ チン

        ☆ チン  〃  ∧_∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄
          ヽ ___\(\・∀・)<  MDIタブ実装方法 まだー?
             \_/⊂ ⊂_)_ \_______
           / ̄ ̄ ̄ ̄ ̄ ̄ ̄/|
        |  ̄  ̄ ̄ ̄ ̄ ̄ ̄:| :|
        |           .|/

135:デフォルトの名無しさん
06/12/14 11:22:30
ソースを読めばわかることだから省略

136:デフォルトの名無しさん
06/12/14 11:43:33
MDIタブのこと書こうか迷ってたんだけど、AAみて踏ん切りがついたよ。

137:デフォルトの名無しさん
06/12/14 13:05:50
MDIタブの何を書こうかと迷ってたんだ?

138:デフォルトの名無しさん
06/12/16 17:26:02
Button(OKやCancelや適用など)をDisableにしたいのですが、どの関数を使うのですか?
SetCheck()かと思ったのですが違うようでした。。

139:デフォルトの名無しさん
06/12/16 17:46:32
>>138
基本クラスのメンバEnableWindowで

140:デフォルトの名無しさん
06/12/16 18:12:46
なるほど…
やってみます。ありがとうございました。

141:デフォルトの名無しさん
06/12/17 19:17:51
リストコントロール(CListCtrl)をリードオンリにするにはどうすれば良いですか?

142:デフォルトの名無しさん
06/12/17 19:21:10
2つ目の質問です

ツリーリストコントロールって標準で存在しませんか?
存在しない場合はどうすれば使えますか?
MFCで作ったフリーソフトでツリーリストが使われていたので、
何らかの方法でできるのではないかと考えているのですが・・・

ちなみに、今の自分の技術力では自作は無理です

143:デフォルトの名無しさん
06/12/17 19:25:35
3つ目の質問です

MDI子ウィンドウのビュー(フォームビュー)でリストコントロール(CListCtrl)を使っているのですが、
他の子ウィンドウがリスト部分の前に重なった後、リスト部分をクリックしてリストがある子ウィンドウを
アクティブにすると重なっていたリスト部分だけが再描画されません
原因はまったく不明です
どのようにすれば子ウィンドウがアクティブになった時に正常に再描画されるようにできますか?

144:デフォルトの名無しさん
06/12/17 19:29:21
最後の質問です

MDI子ウィンドウのビューでリストコントロールを使っているのですが、
子ウィンドウのサイズ変更にあわせてリストのサイズを動的に変更するには
どのようにすれば良いですか?

VC#ではプロパティ画面で簡単に設定できたのですが、
VC++にはないのでとても困っています・・・





以上4つ質問させて頂きました
何かご存知の方は、ご回答をよろしくお願いしますm(_ _)m

145:デフォルトの名無しさん
06/12/17 19:37:53
最後のやつの答えは
子ウィンドウのサイズ変更にあわせてリストのサイズを動的に変更する

146:デフォルトの名無しさん
06/12/17 19:45:00
MDI野郎の質問は意味不明

147:デフォルトの名無しさん
06/12/17 19:51:36
具体的にはOnSizeとかOnSizingとかOnExitSizeMoveとか用途に合わせて使うと吉。

148:デフォルトの名無しさん
06/12/17 19:53:22
>>141
普通リードオンリーでできんじゃねぇっけ?
リソースファイルの方の設定に編集できるとかできないとかそういうプロパティあった希ガス。

149:デフォルトの名無しさん
06/12/17 20:00:56
>>142
昔、俺がみたのは自力で描画してたのしかみたことないな。
今、どうなってるのかはよくわからん。

150:デフォルトの名無しさん
06/12/17 21:27:01
>141-144
勉強してないの丸わかりなんだけど
よくリストコントロール表示できたね
どっかからソースぱくってきた?

151:デフォルトの名無しさん
06/12/17 21:43:34
たしかにこうなんもかんもわからんようだとどうしようもないなw

152:デフォルトの名無しさん
06/12/18 01:37:33
いつも質問しっぱなしで消えて行く人と文体がそっくりだな

153:デフォルトの名無しさん
06/12/18 16:59:07
お願いします。MFCを使い大量の点を打って画像を描画するプログラムを作っています。
点の数は数千を越えていると思うのですが かなり処理に時間がかかります。

自分なりに色々調べたところ SetPixelは遅い ということがわかりました
同時に BitBlt とか 裏画面 などと 高速化に関するワードも出てきましたが
全く分かりませんでした
この言葉で全て解決しようとするのが悪いのですが 初心者です。
しかし、時間が本当に無いので時間をかけて勉強して… ができません。

ちなみに 点は一色です。 SetPixelの遅さを解決する方法で
まだ分かり易いだろう と思う方法を教えていただけませんか?

154:デフォルトの名無しさん
06/12/18 17:15:42
かなり遅いって具体的に何秒?たった数千なら一瞬のはずだけど...

155:デフォルトの名無しさん
06/12/18 17:27:01
えっ・・・ そうなんですか?
具体的にはループ回数が3万でそのうちの一部の点を
描画しているので、最大でも3万ですね
1万は越えているかも知れませんが…

時間は3分から5分程度でした。

156:デフォルトの名無しさん
06/12/18 17:31:20
うちのPCは最新鋭からは程遠いセレロンだけど10万個の点をSetPixelで
描いても0.1秒ぐらいだったよ。(裏画面とか未使用)
描画以外の部分に時間かかってるんじゃないかな。

157:デフォルトの名無しさん
06/12/18 17:35:59
配列に直接描画すればいいんじゃない?

158:デフォルトの名無しさん
06/12/18 17:39:17
そうでしたか… スペック的には確実問題になるほどではありません。
ループ回数を増やすと比例関数的に時間も延びたので
てっきりそこが問題だと思っていました。

そうなるとどこに時間がかかっているのか全く分かりませんね…
ランダムウォークさせているのんですが そこか
1024*768もの配列を作って その中身全てを参照(検索)するという作業を
何度かしているのも原因かもしれませんね。
mallocなんかも全く使っていませんし…

ループ回数をこれ以上にするとエラーになり途中で動作が止まってしまうのも
同じ原因から来ているのかも…

しかし ここまでくるとここで相談させてもらう内容ではなくなってしまいますね。

159:デフォルトの名無しさん
06/12/18 17:42:35
1024*768*30000=230億強
それは遅いだろ...

160:デフォルトの名無しさん
06/12/18 17:57:38
>BitBlt とか 裏画面 などと 高速化に関するワードも出てきましたが全く分かりませんでした
>初心者です
>時間が本当に無いので時間をかけて勉強して… ができません。

結論: 無理

161:デフォルトの名無しさん
06/12/18 17:57:46
最後に一回だけ描画すればいいのに
いちいちSetPixel使うからだよ。

162:デフォルトの名無しさん
06/12/18 18:01:51
えっと 最後に一回だけ描画してます。

まぁ特に考えてたわけではなく、むしろ本当は描画の
様子が分かるように1回1回点を打ちたかったのですが
それができなくて 最後にだけ描画してます。
(点を打つ配列に目印をいれて最後にその部分だけ描画)

結論を言うと そのループ及び巨大な配列の中身を参照するのに
時間がかかってるというわけなんですね・・・

>>160 ってことでFAですかね。

検索の仕方や配列の使用法などを再考してみますね。
こんなくだ質に付き合ってくださってありがとうございました。


163:デフォルトの名無しさん
06/12/18 18:13:41
SetPixelをループに入れてる時点で一回だけじゃないじゃん。

164:デフォルトの名無しさん
06/12/18 18:17:04
GDIにじゃなくてメモリに対して書くようにすればいいんじゃないの?

165:デフォルトの名無しさん
06/12/18 18:20:29
たった一色ならcharで1024*768の配列をnewして
0か1を直接書き込めばいいじゃない。

その後BMPに変換すれば?

166:デフォルトの名無しさん
06/12/18 18:54:30
正直MFCと全然関係ない

167:デフォルトの名無しさん
06/12/18 19:57:42
1280*1024の画面全体の約130万ピクセルでも数秒だね
遅いというのは一瞬じゃないということ
自分で試さずに質問するのはやめてほしい。

168:デフォルトの名無しさん
06/12/19 00:26:28
>>162
そういう時は、SetPixelだけをコメントアウトしてみる。
そうすれば、それが犯人かどうか分かる。

169:デフォルトの名無しさん
06/12/19 00:53:12
質問者じゃないけど試しにBitmapBits弄ってみたら
130万pixelなんて問題にならないぐらい強烈に早いね。
今後使う機会があるかは微妙だけど勉強になったよ。

>>170 スレ違い房乙

170:153です
06/12/19 00:55:54
さらにレスしていただいたんですね。
>>163
確かにループには入ってますね
でもループもしないで1回だけ なんて できるんですか
>>164
そのような方法がある事は調べていたときにわかったんですが
なかなか理解できなかったんですよね
>>165
今は理解できないんで ちょっと考えて見ます^^;
ありがとうございます。
>>166
ですね。 158で自分でも言ってますが。 すみませんでした。
>>167
そうなんですか。 >遅いというのは一瞬じゃない そうですね
自分で試さずに とは 何のことでしょう?
確かに SetPixelに時間がかかっていたかどうかは
自分で画面全体にSetPixelで塗りつぶしてみれば分かったんですね…
そうだ と思い込んでしまったので思いつきませんでした ごめんなさい。

171:デフォルトの名無しさん
06/12/19 01:15:49
>>168さんもありがとうございます。
そんな方法もありますね 次回から参考にします!
>>169
スレ汚しすみませんでした。

172:デフォルトの名無しさん
06/12/19 02:51:30
>>171
つーか、普通にSetPixelとGetPixelが遅い。

GDI+を使っているならこれで速くなるっぽいことが書いてある。
URLリンク(junki.lix.jp)

173:デフォルトの名無しさん
06/12/19 08:21:41
> 描画しているので、最大でも3万ですね
> 1万は越えているかも知れませんが…
>
> 時間は3分から5分程度でした。


描画しているのは最大でも3万で時間は3分から5分

174:デフォルトの名無しさん
06/12/19 14:48:18
とりあえず、ビットマップ作ってメモリDCで選択して
そこに描画してBitBltするという、昔ながらのやり方を
試すのが今後のためにいいと思うが。

175:153
06/12/19 14:54:29
>>172
VC++ のMFCです。
>>174
そうですよね。
いい機会ですし勉強して使えるようにしたいと思います。

176:デフォルトの名無しさん
06/12/19 16:20:57
ほとんどMFCと関係ない

177:デフォルトの名無しさん
06/12/19 23:24:44
では MDIタブの実装方法についてお話してください
よろしくおながいします

178:デフォルトの名無しさん
06/12/19 23:36:11
mfcにMDIタブなんてものは存在しない

179:デフォルトの名無しさん
06/12/19 23:58:47
イヤです

180:デフォルトの名無しさん
06/12/20 10:36:29
>>178
存在しないから作るんですよ

181:デフォルトの名無しさん
06/12/20 10:49:58
じゃあmfc関係無いのでは

182:デフォルトの名無しさん
06/12/20 11:18:15
>>141 LVN_ITEMCHANGING
>>142 LVITEM::iIndent'
>>143 WS_CLIPSIBLINGS

183:デフォルトの名無しさん
06/12/20 12:37:11
MFCのMDIを拡張して作るんだから関係あるし、難易度が高い
MFCを使わず、まったくゼロから MDIタブを作るのならそれほど難しくはない

と混じれ酢してみる

184:デフォルトの名無しさん
06/12/20 13:08:57
決まった作り方が存在しないから好きなように勝手に作れ

185:デフォルトの名無しさん
06/12/20 13:18:05
好きなように作りたいんだけど、作り方がわからないんだよぉ〜

186:デフォルトの名無しさん
06/12/21 01:17:54
ダメです

187:デフォルトの名無しさん
06/12/21 10:24:22
MDIタブを作るには、フレームウィンドウの上部(or左or右or下)にMDIタブのための領域を確保する必要がある
そのためには void CMainFrame::RecalcLayout(BOOL bNotify) をオーバライドすればいいぞ
どうオーバライドするかは自分で調べろ

188:デフォルトの名無しさん
06/12/23 01:28:04
イヤです

189:デフォルトの名無しさん
06/12/23 14:47:20
VC++6.0 WinXPProで開発を行っております。
XPログオン時のユーザ名とパスワードが正しいかどうかを、開発したプログラム上で
確認したいと思っているのですが、どのようにすればよろしいでしょうか。

190:デフォルトの名無しさん
06/12/23 14:51:25
誤爆?
ここはライブラリの専用スレですよ

191:デフォルトの名無しさん
06/12/23 14:55:43
>>190
スイマセン、他スレで聞いてきます。

192:デフォルトの名無しさん
06/12/23 15:26:31
ウィンドウにスクロールバーがあるかどうかを調べたいのですが、
どうすれば取得できるでしょうか?

193:デフォルトの名無しさん
06/12/23 15:35:00
WS_HSCROLLやWS_VSCROLLスタイルが付いてるか調べればいいんじゃないかな

194:デフォルトの名無しさん
06/12/23 15:42:35
GetWindowLongで取得すればいいのでしょうか?
色々調べてみたのですが、GetWindowLongの使い方がいまいちよく分からないです。。
具体的にどう使えばいいか、ご教授願えますでしょうか(><

195:デフォルトの名無しさん
06/12/23 15:49:27
MSDN見ろよ

196:デフォルトの名無しさん
06/12/23 15:56:33
MSDN見てます。
LONG lStyle = ::GetWindowLong(m_hWnd, GWL_STYLE);
で取れると思うんですけど、そこからどうすればいいか分からないんです。
どこを見れば分かりますか?

197:デフォルトの名無しさん
06/12/23 16:04:12
ビット演算も知らんのか?

198:デフォルトの名無しさん
06/12/23 16:07:05
MFCの質問じゃない

199:デフォルトの名無しさん
06/12/23 16:20:22
ビットで入ってるんですね。
MFC以前の問題ですか・・・
もっとよく調べてきます。

200:デフォルトの名無しさん
06/12/23 23:28:32
MFCとは関係ないね>>199

201:デフォルトの名無しさん
06/12/24 22:58:19
質問があります。
現在、ダイアログAのボタンを押すと、ダイアログAを隠して
ダイアログBをモードレス表示し、
表示されたダイアログBのボタンを押すと、ダイアログBを隠して、
ダイアログAをモードレス表示するツールを作成しております。

そこで、ダイアログAのボタンを押すと、ダイアログAを隠して
ダイアログBをモードレスで表示することは出来たのですが
モードレスで開いたダイアログBのボタンを押すと、
ダイアログAをモードレスで開く方法がわかりません。
教えてください。
よろしくお願いします。

202:デフォルトの名無しさん
06/12/24 23:20:22
ダイアログAがやったのと同じ事をダイアログBでやればいいだけじゃん

203:デフォルトの名無しさん
06/12/25 05:05:35
>>202
エスパー値が低いのに初心者の質問に答えるな。話がややこしくなる。
要は循環参照になっちまってコンパイルできねぇんだろ?

つまり、
メインウィンドウ→ダイアログA→ダイアログB→ダイアログA→ダイアログB
って構造だとダイアログAとダイアログBが循環してしまって駄目なわけだ。
なので

メインウィンドウ→ダイアログA
          →ダイアログB

としてメインの方でダイアログAのボタンX、ダイアログBのボタンXの
内容を処理するようなもんを作る必要があるとそういうことだろ?
この処理をやるにはダイアログAとBのインスタンスはメインの方にもったほうがいい。
そんでメインの方で
1.ダイアログAがあったら消して、ダイアログBを出す処理
2.ダイアログBがあったら消して、ダイアログAを出す処理
を実装する。
んで、ダイアログAのボタンXでは1を発動させるような処理(親にSendMessageで独自のメッセージ飛ばすのがいいかな?)
んで、ダイアログBのボタンXでは2を発動させるような処理
を組めば完成とそういうことだ。多分w

204:デフォルトの名無しさん
06/12/25 08:32:31
Windowsの電卓の10進と16進の切り替えがそんな感じだな
あれは表に出ない親ウインドウがあってそこから2つのダイアログを切り替えてる
しまった、ここまで書いて全然MFCと関係ないのに気がついた

205:デフォルトの名無しさん
06/12/25 14:39:50
>203は別に独自のメッセージである必要もないね。
MFCなら仮想親ダイアログにメンバでABダイアログがぶら下がっているだろうから
ダイアログからは親のメンバを呼ぶだけでいい。

>>204
ほ〜らMFCらしくなったでしょw

206:デフォルトの名無しさん
06/12/25 20:24:54
なんですぐMFCと関係無い方向に行くんだ?


207:デフォルトの名無しさん
06/12/25 20:25:25
はっ
おまいらちゃんとMFCがわかっているのか?

208:デフォルトの名無しさん
06/12/25 21:03:39
>>206
行くっつぅか元々>192からしてMFCと・・・

209:デフォルトの名無しさん
06/12/25 21:27:26
APIでウィンドウも出せないくせにMFC使うな
と誰かが言ってた。

210:デフォルトの名無しさん
06/12/25 21:50:49
VS2005 MFCを使用しています。
プロパティシートでSendMessageToDescendants()を使用し、
各ページのフォントサイズを変更しているのですが
なぜかリストコントロール内のフォントサイズだけ変更されません。
(ヘッダーは変更されていました。)
SendMessageToDescendants()を使用せず、リストコントロール
のSetFont()を使用すれば変更できるのですが、リストコントロール
に合わせてすべてのページですべてのコントロールにSetFontをするのは
避けたいです。なにかいい方法はありませんでしょうか?

211:デフォルトの名無しさん
06/12/25 22:06:20
>>210
この前の質問どうなったっけ?

212:デフォルトの名無しさん
06/12/25 22:23:31
>>211
今までリストコントロールを利用していないシートの
コーディングを行っていたのでてっきりうまく変更されていた
ものとばかり思っていたのですが、リストにデータを挿入して
表示したところリスト内のサイズだけ小さかったので
再度質問させていただきました。


213:デフォルトの名無しさん
06/12/26 01:30:22
1. 専門用語を知らないMFC初心者が質問
2. 知ってる人が専門用語をあまり使わずに解説
3. 理解できない別の知ったか初心者が 「MFCと関係ない」
4. 質問者が3にむかついて失踪

最近この流れが多い。3の人は1年ぐらいROMって欲しい。

214:デフォルトの名無しさん
06/12/26 08:50:07
すいません教えてください。
C/C++を一通り勉強して、mfcでビュッフォンの針のシミュレーションプログラムを
作ろうと思ってるんですが、ダイアログベースで、ピクチャボックスに描画しようとして
も上手くいきません。CClient の矩形をCRectで取り
bottomとrightを数値で覚えさして、シミュレーション用の横棒を引くため
bottomを横棒の数で割り、movetoとlinetoでそれぞれの位置に線を引いたのですが
(用は、数値が1ならクライアント領域が二等分されるようになり
数値が2ならクライアント領域が三等分されるような形)
上手く等分されません。
なにか良い方法か、サンプルのあるページがあれば教えてください。

215:デフォルトの名無しさん
06/12/26 08:57:16
描画に使った数値が合ってるかどうかぐらい調べてから質問しろよ

216:デフォルトの名無しさん
06/12/26 08:59:08
シミュレーションの前に、簡単な線でも描けるようになってから質問しろよ。

217:デフォルトの名無しさん
06/12/26 09:35:12
日本語でかかず、プログラムを示せや

218:デフォルトの名無しさん
06/12/26 09:58:29
デバッグメッセージで、moveto、linetoに渡す数字表示させて並べてみな

219:デフォルトの名無しさん
06/12/26 18:47:19
VC6でMDIアプリを開発しています。
子フレームを最大化した状態でドキュメントを切り替えると、最大化されない子フレームウィンドウ枠が
一瞬描画されてしまいます。
これを防ぐにはどうしたらいいのでしょうか?

220:デフォルトの名無しさん
06/12/26 19:35:30
普通に作ればいい

221:デフォルトの名無しさん
06/12/26 19:57:59
普通に作ったら 子フレームウィンドウ枠が一瞬描画 されるんだけど
これは いったい誰がだしているの?

222:デフォルトの名無しさん
06/12/26 21:20:18
お前が作ったプログラム

223:デフォルトの名無しさん
06/12/27 17:33:42
CFormViewの中に設置したレポート型のリストビューで
アイテムを右クリックしたときにポップアップメニューを
表示させてそのアイテムにのみ処理をしたいのですが

どうすればいいのでしょうか

224:デフォルトの名無しさん
06/12/27 18:50:12
簡単にできそうな気がして何が問題かよくわからん
ここで質問しなきゃわからないような何か特殊な問題あったか?

225:デフォルトの名無しさん
06/12/27 18:56:59
OnRButtonDownの追加により
リストビューで右クリックのイベントをとるまでいけたんですが
メニューの表示や選ばれたアイテムの取得方法がわかりません
簡単なら教えてくださいお願いします

226:225
06/12/27 18:57:47
今はOnContextMenuに変えています

227:デフォルトの名無しさん
06/12/27 19:06:13
特に難しい問題はないはずだから調べればわかると思う。

228:デフォルトの名無しさん
06/12/27 19:20:28
リストビューで項目の右クリックをとるのはNotify使うんじゃなかったかな
あまりにも懐かしすぎて、過去のソース見ないと思いだせんがNM_RCLICKとかあったと思う

229:219
06/12/27 19:21:19
void CMDIFrameWnd::MDIActivate( CWnd* pWndActivate )
を使って、子フレームを切り替えているのだが、このメソッドをコールすると
一瞬現在アクティブなウィンドウに WM_MDIACTIVATE が送られ、
その前後に子フレームが再描画されるとこまでわかった

どうしたら子フレームの再描画をとめられるんだ?
誰か助けて。おねがい


230:デフォルトの名無しさん
06/12/27 19:37:15
調べろカス

231:デフォルトの名無しさん
06/12/27 19:42:24
普通のMDIでもそうなるならそういう仕様
普通のMDIではそうならないなら普通のMDIと同じにすればいい

232:225
06/12/28 10:44:01
>>228
NM_RCLICKで右クリックのイベントは取れました
右クリックしたときのアイテムの取得はどうすればいいのでしょうか?

233:デフォルトの名無しさん
06/12/28 11:20:58
>>232
URLリンク(msdn2.microsoft.com)

234:225
06/12/28 11:25:06
返答ありがとうございます
調べてみたら
CListCtrl::GetFirstSelectedItemPosition
で取れるようです

235:225
06/12/28 12:24:51
次は右クリックを押したときにメニューを表示させたいんですが
表示はできましたが最初のメニューだけすごく小さいのです
サブメニューは普通に表示されます以下ソースです

CMenu menu;
CPoint posMouse;

VERIFY(menu.LoadMenu(IDR_MENU1));
::GetCursorPos(&posMouse);
menu.TrackPopupMenu( TPM_LEFTALIGN | TPM_RIGHTBUTTON, posMouse.x, posMouse.y, this);

236:225
06/12/28 12:32:21
自己解決しました
CMenu* pPopup = menu.GetSubMenu(0);
pPopup->TrackPopupMenu( TPM_LEFTALIGN | TPM_RIGHTBUTTON, posMouse.x, posMouse.y, this);

237:デフォルトの名無しさん
06/12/28 12:45:14
ここはおまえの日記帳じゃねえ。
1週間くらい悩むような問題を質問しろよ。

238:225
06/12/28 15:30:47
ニートじゃないのに1週間も悩んでられるかよ
文句しか言えない無知は黙ってろ

239:デフォルトの名無しさん
06/12/28 16:43:49
配列で作ったマルチスレッドの破棄をメインスレッド側からするには
どうすればいいのでしょうか?調べたんですがflagを立てるやり方しか見つかりません

その方法ではユーザーインターフェーススレッドのような複雑な処理をしているときになると
通じないと思いますぜひ知恵をお貸しください

240:デフォルトの名無しさん
06/12/28 16:46:34
MFCと関係ない

241:デフォルトの名無しさん
06/12/28 16:49:19
MFCで開発してますがVC++のほうで聞いたほうがよかったですか?

242:デフォルトの名無しさん
06/12/28 16:54:48
普通にMFCクラスから派生して作ったのでMFCだと思うんですが
なにがどう関係ないのかの説明をいただきたい

243:デフォルトの名無しさん
06/12/28 16:55:13
UIスレッドはPostQuitでいいじゃん

244:デフォルトの名無しさん
06/12/28 17:00:28
PostQuit?

245:デフォルトの名無しさん
06/12/28 17:06:24
PostQuitとはトレードクラスのメンバ関数ですか?
そのようなものは無いと思うんですが

246:デフォルトの名無しさん
06/12/28 17:14:10
PostQuitMessageだろう

247:デフォルトの名無しさん
06/12/28 17:15:53
PostQuitMessageだとスレッドどころかアプリケーション終了しますよ

248:デフォルトの名無しさん
06/12/28 17:34:50
UIスレッドなら

スレッド側に、メッセージ受けると終了するような仕組みを作る。
メインスレッドからスレッドにPostMessage or PostThreadMessage。
必要に応じて、メインスレッドはスレッドが終了するまで待機。

249:デフォルトの名無しさん
06/12/28 17:37:02
なるほど
ありがとうございますやってみます

250:デフォルトの名無しさん
06/12/28 22:05:29
VC6 で組んだプロジェクトが VC7 でコンパイル出来なくて困ってます。
ユーザー定義メッセージのとこなんですが。

メッセージマップで
ON_MESSAGE(WM_USER_ENDTHREAD, OnUserEndthread)
ヘッダで
afx_msg void OnUserEndthread(UINT wParam, LONG lParam);
実体部で
void CPg1::OnUserEndthread(UINT wParam, LONG lParam)
{
;
}

としているのですが、コンパイル時に
pg1.cpp(130): error C2440: 'static_cast' : 'void (__thiscall CPg1::* )(UINT,LONG)' から 'LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)' に変換できません。
とでます。

VC6 では問題ないのですが・・・。 ご教授下されば有難く思います。

251:デフォルトの名無しさん
06/12/28 22:17:09
エラーメッセージそのまんまじゃん

252:250
06/12/28 22:30:23
>251

void を LRESULT にしろってことですかね?
ユーザ定義メッセージハンドラの仕様が変わったというだけのことですか。

253:デフォルトの名無しさん
06/12/28 22:44:34
相当古いよそれ

254:デフォルトの名無しさん
06/12/29 02:14:54
俺はGetWindowLongでとった値をどうキャストかけても警告だったかエラーだったか消えなくて悩んだ覚えがあるな。
結局、どうしたっけな・・・。

255:239
06/12/29 12:15:18
PostThreadMessageでメイン側からWM_QUITメッセージを飛ばし終了させようとしたのですが
Instanceでの処理は止まらないので終了することができません

WM_QUITの代わりのメッセージを作ったとしても終了処理をどうすればいいのでしょうか
Instance→Run→ExitInstanceの流れを通らないとスレッドの破棄は難しいのでしょうか?

>>248さんの終了処理するような処理をどうすれば実装できるか困っています


256:デフォルトの名無しさん
06/12/29 12:36:41
>>255
文字通り、サブスレッド側でメッセージを受け取れば宜しい。
逆に言えば、サブスレッド側をそのように作らないといけない。
詳細は、サブスレッドの作りが判らないしスレ違いになるので割愛。

257:デフォルトの名無しさん
06/12/30 01:57:47
質問です。
タブ上にリストコントロールを表示する為、メンバ変数作って
OnInitDialog関数内でリストをCreateしています。
(タブはリソースエディタで貼り付けています)
表示はできたんですけどなぜかリスト内の項目が選択できません。
なんででしょう?とりあえずこんな感じで作ってます。

m_Tab.GetClientRect(&rcRect);
ClientToScreen(&rcRect);
rcRect.left -= 21;
rcRect.right -= 5;
rcRect.top += 44;
rcRect.bottom += 52;
m_ListCtrl.Create(LVS_SINGLESEL|WS_CHILD|WS_VISIBLE|WS_BORDER|LVS_NOCOLUMNHEADER|LVS_REPORT|LVS_SHOWSELALWAYS,
rcRect, GetParent(), IDC_JOURNALSHOWSET_LIST_KP);


258:デフォルトの名無しさん
06/12/30 02:20:50
>表示はできたんですけど

本当に?
GetParent()はダイアログの親ウィンドウを返してると思うんだけど。

259:デフォルトの名無しさん
06/12/30 09:25:15
こいつ思い出した
結果オーライ

> 90 名前:デフォルトの名無しさん[] 投稿日:2006/12/04(月) 13:59:24
> ダイアログにタブコントロールを乗せ、複数のリストビューの表示をタブで切り替える
> ソフトを書いていたんですが、タブに重ねたリストビューの列サイズを操作すると
> リストビューの表示が乱れる現象が出てしまいました。
>
> (中略)
>
> 結果オーライといえばそれまでなんですが、どうしてこれで問題が解決するのか納得が
> いきません。リソース中の定義順が何に影響しているのでしょうか?

260:デフォルトの名無しさん
06/12/30 15:35:51
MDIタブ age

261:デフォルトの名無しさん
06/12/30 15:57:27
メニュー項目を選択すると CSliderCtrl を WS_POPUP で作って表示させる処理を
ダイアログに追加していたんですが、ダイアログを終了する時にビープが一発鳴る
ようになってしまいました。

どこで鳴ってるのかデバッガで追ってみたところ、InitInstance の最終行、return FALSE;
で出て行ったあとのようです。この先も追いたいんですが、F11ではこれ以上追えません
でした。どういう風にデバッグすればいいでしょうか?

262:デフォルトの名無しさん
06/12/30 16:50:16
ダイアログを終了する時にInitInstanceなのか?

263:デフォルトの名無しさん
06/12/30 17:21:32
ダイアログベースのMFCアプリケーションなので、ダイアログの終了=アプリ
の終了という構図です。Wizardが作ったコードそのままですけど、下記のような
雰囲気です。
BOOL MyDialogApp::InitInstance()
{
  いろいろ初期化

  CMyDialogDlg dlg;
  m_pMainWnd = &dlg;
  INT_PTR nResponse = dlg.DoModal();
  if (nResponse == IDOK)
    ;

  else if (nResponse == IDCANCEL)
    ;

  return FALSE;
}

264:デフォルトの名無しさん
07/01/01 19:01:01
>>260
ヒント:
void CMainFrame::RecalcLayout(BOOL bNotify)
CWnd::RepositionBars()

265:デフォルトの名無しさん
07/01/03 11:56:09
先月からMFCを勉強し始めた者です。
以下のようにCFileDialogを使用して、ファイルの読み込み処理をつくりました。
これを、ビューの領域に表示するにはどうすればいいのでしょうか?
「void CFOpenView::OnDraw(CDC* pDC)」に処理を書けばいいと思うのですが、全然わかりません。
どなたか、教えてください。

void CFOpenDoc::OnFileRead()
{
CFileDialog CFDlg(TRUE, _T("txt"), NULL, OFN_HIDEREADONLY, _T("TEXTファイル(*.txt)|*.txt|すべてのファイル(*.*)|*.*||"));
CString String, FilePath;
CStdioFile StdFile;

if( CFDlg.DoModal() == IDOK){
FilePath = CFDlg.GetPathName();
if(StdFile.Open(FilePath,CFile::modeRead)){
StdFile.ReadString(String);
StdFile.Close();
} else {
AfxMessageBox(_T("ファイルが開けない"));
}
}
}

266:デフォルトの名無しさん
07/01/03 12:09:43
Hello, Worldと同じ
文字列を表示するだけ

267:265
07/01/03 12:39:21
>>266
レスありがとうございます。
試してみます。

268:デフォルトの名無しさん
07/01/03 17:20:42
ダイアログベースのプログラムを作成しています。
フォームにボタンを配置して、そのボタンのCaptionを動的に変更したいのですが、方法が分かりません。
CButtonクラスメンバの中にもそれっぽい関数が見付からず途方に暮れてます。
方法があれば教えてください。お願いします。

269:デフォルトの名無しさん
07/01/03 18:40:16
CButtonの基底クラスのメンバ関数

270:268
07/01/03 19:06:07
>>269
ありがとうございます。
普通にSetWindowTextで変更できたのですね。
助かりました。

271:デフォルトの名無しさん
07/01/03 20:22:26
VC++2005上でVBMP3.dllというライブラリを使用し、MP3を再生するプログラムを作成しています。
MP3ファイルをオープンするために呼び出す関数 vbmp3_openはヘッダ中に以下のように宣言されています。

BOOL APIENTRY vbmp3_open(const char* pszName, InputInfo* pInfo);

で、プログラム中で

vbmp3_open(FileName, &pInfo); // FileNameはCString型

としたところ、Debugでのコンパイルは成功するのですがReleaseのコンパイルが以下のエラーとともに失敗します。

error C2664: 'vbmp3_open' : 1 番目の引数を 'CString' から 'const char *' に変換できません。
この変換を実行可能なユーザー定義変換演算子がないか、または演算子を呼び出せません。

といった状態です。解決方法はありませんでしょうか。

272:デフォルトの名無しさん
07/01/03 21:16:14
Unicodeネタいい加減飽きた('A`)

273:デフォルトの名無しさん
07/01/04 09:35:43
簡単な質問だと答えがすぐに返ってくるねぇ
MDIタブの実装方法は難しくてここの住人に答えるのは無理ってことかぁ

274:デフォルトの名無しさん
07/01/04 09:55:03
MFCにMDIタブがあればすぐ教えてやるけど
ないものは教えられない

275:デフォルトの名無しさん
07/01/04 10:05:09
用意された機能は使えるけど
自分でMFCを拡張してタブを実装する技術はないってことだな>274

276:デフォルトの名無しさん
07/01/04 10:05:35
MFCの設計に含まれていない以上、
Office2007のリボンの実装方法聞いてるのと同じようなものだからなあ。
頑張れば出来るんじゃね?としか言いようが無い。

277:デフォルトの名無しさん
07/01/04 10:07:56
275は仲間を見つけて喜んでいるようだ

278:デフォルトの名無しさん
07/01/04 13:46:54
MFCにMDIタブを実装した経験のある おいらが来ましたよ
んで何が聞きたいんだ?


279:デフォルトの名無しさん
07/01/04 21:35:19
奥さんが欲しいです

280:デフォルトの名無しさん
07/01/05 02:58:20
>>279
以下のように2行コメントにしてみて

 for(int i=0; i<FEMALE_MAX; i++){
  if(female[i].IsMarried()==TRUE)
   continue;
  if(female[i].GetAge()<16)
   continue;
// if(female[i].CheckQuality()==FALSE)
//  continue;
  propose(female[i]);
 }

281:デフォルトの名無しさん
07/01/05 13:58:48
先生!なぜかループが一回も回りません!

282:デフォルトの名無しさん
07/01/06 09:18:47
>>281
femaleが空なんじゃないか?
つーか、FEMALE_MAXが0なのか。

283:デフォルトの名無しさん
07/01/06 09:43:43
//if(female[i].GetAge()<16)
//   continue;

こういう余計な制限もとっちゃおうぜ。

284:デフォルトの名無しさん
07/01/06 09:44:44
//if(female[i].IsMarried()==TRUE)
//   continue;

よく考えたらこれだって別に大した制限じゃねぇな。

285:デフォルトの名無しさん
07/01/06 09:46:04
if(female[i].GetAge()>35)
   continue;

さすがに遠慮したいから入れておこうな。

286:デフォルトの名無しさん
07/01/06 09:47:49
>>281
しょうがない、female -> maleに置き換えるんだ。

287:デフォルトの名無しさん
07/01/06 10:06:14
MFC使ってるやつ少ないのかと思ってたけど
くだらない話になると書き込みが増えるな
ROMってるやつ多いのか?

288:デフォルトの名無しさん
07/01/06 12:06:22
VisualC++ .net Standard使用
CImageのLoadFromResourceに関して質問です
BITMAPリソースは読み込むことができるのですが、jpgファイルをバイナリリソースとして格納した場合に、こいつを読み取ってくれません
LoadResourceを使ってtmpファイルでも書き込んでからCImage::Loadなんて馬鹿馬鹿しいですし
何とか簡単にリソースに埋め込んだバイナリデータのjpgを読み込ませる方法はないでしょうか?
ちなみに、こんな感じでやってます

CImage image;
image.LoadFromResource(GetModuleHandle(NULL),ResourceID);

289:デフォルトの名無しさん
07/01/06 12:20:49
あまりにもバグって気持ち悪くなってきた

290:デフォルトの名無しさん
07/01/06 13:06:39
VC6にはCImageないんだよな

291:デフォルトの名無しさん
07/01/06 13:19:40
DIB程度ならCreateDIBSectionをCBitmapにAttachとかで済むから、あまり困らなかったな。

>>288
::CreateStreamOnHGlobalとCImage::Load(IStream *)を使えば、ファイル無しでできる。
効率から言うと、バイナリリソースアクセス用のIStream実装を書いた方が良いけど('A`)マンドクセ

292:デフォルトの名無しさん
07/01/07 01:51:10
初期状態でドッキングされていないツールバー(フローティングツールバー?)の作り方を教えてください
普通のツールバー(ドッキングされているツールバー)はスケルトン作成(SDI or MDI)したソースを見れば
分かりそうな感じですが、それとスタイルが違うツールバーはどのように作れば良いですか?
グーグルで調べているのですが、思ったような情報に行き当たらず困っております

293:デフォルトの名無しさん
07/01/07 02:56:21
MDI野郎の文体だね

294:デフォルトの名無しさん
07/01/07 03:26:52
>>291
サンクス
CreateStreamOnHGlobalでいけました
というか、IPictureをかまさないとストリームにならないのでかましたわけですが
これを使うとCImageの意味がまったくをもってないですね(笑)

295:デフォルトの名無しさん
07/01/07 10:14:35
MFCのフローティングツールバーはMFCが自力でやってるから
具体的な方法はMFCのソース読めばわかるよ
確かバーの上に張り付いてるやつを別ウインドウ開いて丸ごと引っ越すだけだったと思う。

296:デフォルトの名無しさん
07/01/08 17:20:10
>>295
レスありがとうございます

ど素人(入社1年目)なので、それだけですとやり方が分かりません・・・

297:デフォルトの名無しさん
07/01/08 17:27:33
追加で質問をさせてください

ツールバー上のアイテム(ボタン?)をドラッグした時に
点線の四角形またはそのアイテムのアイコン(半透明)を
ドラッグ中のマウスポインタの横に表示させるにはどうすれば良いですか?
イメージとしては、VC++でダイアログリソース編集時にコントロールアイコンを
ツールバーからドラッグした時のような感じで

298:デフォルトの名無しさん
07/01/08 18:01:41
>>296
自力で調べて判らないようなら上司なり先輩なりに聞け。
それでも判らないようならあんたには不適当な要求仕様なのだからそう上司(なり指示した人間)に言え。

299:デフォルトの名無しさん
07/01/08 18:30:36
>>298
スレタイを2万5千回ぐらい嫁。

300:デフォルトの名無しさん
07/01/08 18:36:21
>>299
6時間も7時間もやってらんない。

301:デフォルトの名無しさん
07/01/08 18:47:17
>>299
相談室だから>>298のようなアドバイスもアリじゃないか

302:デフォルトの名無しさん
07/01/08 18:52:35
>>298は的確だと思ったな

あと2ちゃんで仕事をにおわせると答えてもらいにくくなるよ
タダで教えてその内容で相手は金を得るわけだし

303:デフォルトの名無しさん
07/01/08 18:52:59
>>301
要求仕様のさばき方相談室じゃないんだよー

304:デフォルトの名無しさん
07/01/08 19:37:22
会社だったら違う人に仕事まわすだけだろ
できない仕事をかかえこまないように

305:デフォルトの名無しさん
07/01/08 22:18:54
>>296でわからないっつーのはもうアレだ。
なんつーか色々と色んなことが困難だw

306:デフォルトの名無しさん
07/01/08 22:19:30
いや、>>295な。

307:デフォルトの名無しさん
07/01/08 23:27:04
>>292,296
質問の意味が2通りに取れるんだが
MFC標準のCToolBarをフローティング状態で表示したいってこと?
それとも独自にフローティングツールバーを実装したいってこと?

おそらく前者の意味で聞いてるんだと思うけど、
それならCFrameWnd::FloatControlBar()でフローティング状態にできるよ。
後者なら、MFCのソースを参考に自分で書けとしか言えません。

308:デフォルトの名無しさん
07/01/09 11:46:02
ダイアログバーにIDC_STATICのスタティックテキストを貼り付けると、
そのテキスト上でのマウスドラッグはバーのドラッグ処理になりますが、
これってどのような仕組みなのでしょうか。
ダイアログバー内に貼り付けた自作ウィンドウクラスにも
このような動作を組み込みたいんです。

OnNcHitTestでHTTRANSPARENTやHTCAPTIONを返してみても
まったく動かなかったり、コントロールだけが動いたり、
ダイアログバー内でダイアログ自身が動いてしまったりと、
仕組みがわからずに苦戦しています。

同じスタティックテクストでも
IDC_STATIC以外の名前を付けるとドラッグにならないようなので、
コントロールバークラスがIDC_STATICに対して
なにか特別なことでもやっているのでしょうか。

309:デフォルトの名無しさん
07/01/09 12:48:24
初心者はIDC_STATICではまる

310:デフォルトの名無しさん
07/01/09 12:51:33
初心者 IDC_STATIC の検索結果 約 211 件中 1 - 10 件目 (0.25 秒)

311:デフォルトの名無しさん
07/01/13 23:36:22
ドキュメントビューアーキテクチャという概念がよく分かりません

ドキュメント: プログラム内で共有するデータを扱う, メンバ変数がたくさんある, ファイル入出力
ビュー: ユーザとのインタフェースを扱う, 描画を取り仕切る, コントロール管理

の認識でOKですか?

312:デフォルトの名無しさん
07/01/13 23:58:14
いや

313:デフォルトの名無しさん
07/01/14 00:00:08
>>311
概ねOKじゃね?
どっちかっていうとその役割よりドキュメントとビューがセットで1つになってること(ドキュメントテンプレートってのなかった?)
新規作成でできるもんがドキュメント+ビューを型にしたインスタンスであることって方が重要のような気がするがわかっているならOK。

そうすると自然にMDIのアプリは

1.メインフレーム(メニューとかくっついてる)
2.(ドキュメント+ビュー)X新規作成で生成された数分
3.その他のツールウィンドウやダイアログ

で構成されることになる。
VCだと

・メインフレーム(メニューとかくっついてる)
・ソースコードエディターとかリソースエディター等など(新規作成からできる奴)
・ソリューションエクスプローラーとかアウトプットウィンドウとか・・・

にあたる。
強引に「こうやって作れよ!」っていう型なんで設計からしてこうやってなってないと駄目っちゃ駄目だなw


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4310日前に更新/205 KB
担当:undef