■MFC相談室 mfc20d.d ..
39:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/12/28 15:40:39
「GetKeyState」を調べると幸せになれるかも
41:デフォルトの名無しさん
08/12/28 15:47:14
感動しました。1行で書けますねwありがとう^^
42:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/12/28 18:10:39
>BOOL は TRUE か FALSE だろ? みたいな、よ。
今更何を……
>は、if ( ctrl_A ){ でいい。あくまで == を書きたいなら、if ( 1 == ctrl_A){ としたほうがいい。
勘弁してくれ。
ここはいつから三田某シンパのロートルが巣食うようになったんだ?
44:デフォルトの名無しさん
08/12/28 18:15:27
実にどうでもいい
45:デフォルトの名無しさん
08/12/28 18:52:05
BOOLは1と0と-1
TRUEとFALSEだけではない
46:デフォルトの名無しさん
08/12/28 18:54:55
C の初心者教室に帰って存分に熱い思いを語れ
47:24
08/12/28 20:20:46
えっと、MDI終了時に起動しているファイルパスを全て取得したいんですが
48:名無し募集中。。。
08/12/28 20:28:10
ファイルパス情報はDocが持っているんじゃないかな
49:デフォルトの名無しさん
08/12/28 21:10:10
メニューの最近使ったファイルリストのところを参考にすればよさそうな気がする
50:デフォルトの名無しさん
08/12/28 21:26:02
終了時に保存するか聞いてくるから
終了時に開いてるやつが編集されたか全部チェックしてるだろ
51:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/12/30 04:18:01
GetAsyncKeyState のMFC版ってありますかね?
53:デフォルトの名無しさん
08/12/30 05:41:42
CRectで指定した領域を塗りつぶしではなくカラー補正のようなことをするにはどうすればいいんでしょうか
BitBltでパターンを使う2段階描画じゃなくて、直接変更するにはどうすればいいんでしょうか
54:デフォルトの名無しさん
08/12/30 06:30:44
すいません。マージコピーが用意されてました
55:47
08/12/30 19:18:07
>51
ありがとうございます!
えっと、仕組みは分かったのですが、終了するときExitInstanceやデストラクタでは
すでに子ウィンドウが閉じていて取得できません。どこに書けば取得できますでしょうか?
56:デフォルトの名無しさん
08/12/30 23:47:58
MFCはLinuxで使えないから糞ですね。
wxWidgetを使うことにします。
57:デフォルトの名無しさん
08/12/31 08:26:19
switchの中でswitchを書いたり、ifのtrueとelseで同じcase値をもったswitchを区別させるにはどうすればいいんですか?
ずっとバグと闘ってたんですが、どうも同じcase値があるのがいけないような気がするんです。この辺どうなんでしょうか
58:デフォルトの名無しさん
08/12/31 08:39:59
別の関数にわけたほうがいいと思うが……
59:デフォルトの名無しさん
08/12/31 09:07:19
ですよね・・・そうします。
60:デフォルトの名無しさん
08/12/31 10:36:30
誤爆?
ここMFCスレですよ
61:51
08/12/31 13:24:41
WM_CLOSE メッセージハンドラ = CMainFrame::OnClose() あたりで
よいのでわ?
62:デフォルトの名無しさん
08/12/31 15:00:45
でわ?
63:デフォルトの名無しさん
08/12/31 20:54:58
誰か教えてください
VS2008 SP1 で CFormView から派生の SDI の新規プロジェクトを作り、
何も変えずにビルドしたらいきなり CMainFrame::OnCreate が見つからないというエラーに遭遇しました
それで、MainFrame.h に CMainFrame::OnCreate の定義を追加したところ、ビルドはできたのですが、
その CMainFrame::OnCreate が呼ばれていないらしくて、ツールバーやドッキングウィンドウ等がまったく表示されません
SDI の CFormView でツールバーやドッキングウィンドウはどうやって表示すればいいですか?
むしろ VS2008 SP1 を使うのやめといたほうがいいですかね???
64:デフォルトの名無しさん
08/12/31 21:14:44
>>63
1.アプリケーションの種類でシングルドキュメントを選択
2.生成されたクラスで基本クラスにCFormViewを選択
3.完了ボタンを押す
4.印刷サポートが無いとの警告で「はい」を押す
5.F5でビルド-デバッグ実行
以上の操作で問題なく実行された。
65:デフォルトの名無しさん
08/12/31 21:21:02
>>64
レスありがとうございます
んー、使っているのが VS2008 Pro の評価版でこいつにSP1あてたせいでしょうかね?
製品版のVS2008 SP1だとこの問題が出ないのでしょうかね
とりあえず、Createのイベントを追加してOnCreateのコードをごっそり移動させたら動きました
66:デフォルトの名無しさん
09/01/01 10:18:59
>CFormView から派生の SDI の新規プロジェクト
これWizard内だけで完結させたのかな?
もしそうなら、そんなエラー出ることないと思うけどなあ。
67:デフォルトの名無しさん
09/01/02 05:11:13
>>63の件ですが、どうもMFCアプリケーションウィザードの5枚目で
初期ステータスバーのチェックを外すと発生するみたいです
(初期ステータスバーのチェックを外す以外は何も変更しなくても起きました)
68:デフォルトの名無しさん
09/01/03 01:08:51
>>67
検証してみたが、製品版のVS2008SP1(SE)でも発生した。
【対処法】は以下のとおり。
・MainFrm.cppのメッセージマップに、
ON_WM_CREATE()
の一行を追加する。
・MainFrm.h のメッセージハンドラ関数を宣言しているあたりに、
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
の一行を追加する。
これでビルドは可能になる。うーん、AppWizerd のバグかな。
69:デフォルトの名無しさん
09/01/03 02:43:18
どなたか教えてください。
VC2005のMFC、SDIを使いラジオボタンを配置しているのですが、選択ができず、チェックがいれられないでいます。
ラジオボタン自体はradiobutton.Create()で引数指定して貼り付けています。
ググってCwnd;;CheckRadioButton等を見つけたのですが、手をつけられず困っています。
もしよろしければどなたか助言の方お願いします。
70:デフォルトの名無しさん
09/01/03 03:02:14
ID を連続させる必要がある。
あと、「グループ」プロパティのチェックは
一連のラジオボタンの先頭のみにチェックを入れるんだったはず。
71:デフォルトの名無しさん
09/01/03 03:14:08
radiobutton.SetCheck( int nCheck);
詳細は CButton::SetCheck のヘルプ読めばわかる。
72:デフォルトの名無しさん
09/01/03 03:35:38
動的に作成したラジオボタンにプロパティなんぞない。
IDを連続させて、ON_CONTROL_RANGE() マクロで処理するんだよ。
73:デフォルトの名無しさん
09/01/03 11:19:24
ダイアログで右クリックでポップアップメニューを表示するようにしたのですが、
ON_UPDATE_COMMAND_UIを実装してもコールされず、メニューの有効無効やチェックなどが更新されません
ダイアログでON_UPDATE_COMMAND_UIの関数でメニューを更新する方法はありますか?
74:69
09/01/03 12:58:11
>>70-72様
アドバイスありがとうございます。
IDを連続など調べて頑張ってみます。
75:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/01/03 14:44:38
複数の画像を表示させてドラッグで移動させるプログラムを書いていたのですが
複数選択をさせる時等はどうしたらいいんでしょう?
77:デフォルトの名無しさん
09/01/03 14:48:18
エクスプローラでも参考にしろ
78:デフォルトの名無しさん
09/01/03 15:15:53
出来るだけWindowsに近い直感的なUIを提供するのは基本だしな
79:デフォルトの名無しさん
09/01/03 16:32:54
Docが持ってる変数のみで何らかの処理を行いたい場合って
Doc側に関数を実装すればいいんですかね?
80:デフォルトの名無しさん
09/01/03 17:10:39
OK
81:デフォルトの名無しさん
09/01/03 17:16:43
>>73
俺は、WM_KICKIDLEが届いたら、
ツールバーにWM_IDLEUPDATECMDUIを送るようにした。
82:デフォルトの名無しさん
09/01/03 19:55:47
質問失礼します。
LoadImage関数を使いビットマップをマイピクチャから読み込もうとしているのですが、例外が出てしまい上手くいきません。
マイピクチャにあるビットマップを読み込もうとしており、フルパスで指定してみたいと思ったのですがフルパス指定の方法がいまいちわかりません。
どなたかアドバイスお願いします。
83:名無し募集中。。。
09/01/03 19:59:15
あけおめことよろ>all
>>82
どんな例外? ファイルが無くても例外は出ないんじゃないかと。
フルパス指定ができない? \を\\にしていないとかじゃない?
84:デフォルトの名無しさん
09/01/03 20:28:20
>>82
LoadImageはイメージリソースをロードする関数だろ。
フォルダにあるBMPを読むには、CreateFileなり、fopenなり、CImage::Load なりを使わなきゃ。
85:名無し募集中。。。
09/01/03 20:49:00
> LoadImageはイメージリソースをロードする関数だろ。
そうでもない
URLリンク(msdn.microsoft.com)
例えばこんな感じ(fnがフルパスのファイル名)
m_hBmp = (HBITMAP)LoadImage( NULL, fn, IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR|LR_DEFAULTSIZE|LR_LOADFROMFILE|LR_VGACOLOR )) ;
86:デフォルトの名無しさん
09/01/03 21:11:00
ほお、第2引数でパス名を指定できるんだ。ありがと。勉強になったよ。
87:デフォルトの名無しさん
09/01/03 23:07:54
>>81
ありがとうございます
できないかと思っていましたが、おかげさまで実装できました
88:82
09/01/04 19:22:05
>>83-85様
エスケープシーケンスも間違いでしたが、ちょこちょこ手直ししていたらなんとかなりました。
本当に助かりました。ありがとうございます!
89:デフォルトの名無しさん
09/01/05 09:26:20
何故この流れでいきなり「エスケープシーケンス」が?
90:デフォルトの名無しさん
09/01/05 11:04:46
newして作ったクラスを切り取りや削除した場合ってdeleteってやったほうがいいんですかね?
91:名無し募集中。。。
09/01/05 11:34:29
切り取りってなんぞ?
特に理由がない限りnewしたものはdeleteと相場が決まっている
92:デフォルトの名無しさん
09/01/05 12:04:04
MFCの中には、使用者にnewで作らせておいて、
delete thisで自殺するクラスもあるけどね。
93:デフォルトの名無しさん
09/01/05 12:51:52
>>91
クラス一つ一つに画像がついていて
画像を切り取る時にCRect構造体を用いてるんですよ。
で、このCRect構造体はnewで作っていて切り取りの情報を削除したらDeleteするべきなのかな。とおもいまして
94:デフォルトの名無しさん
09/01/05 13:28:58
>>93
すまん、何を言っているのか理解できないからソースを出してくれ。
95:名無し募集中。。。
09/01/05 13:31:51
>>93
newで作ったらdeleteしないといけない
でもnew-deleteを使わなくても良い別の方法があるような気がする(ローカル変数を使うとか
96:デフォルトの名無しさん
09/01/05 13:51:12
>>94
理解できないなら理解しなければいいんじゃね?
ようするに、画像の範囲を切り取る時にCRectでサイズと範囲を指定してるっていう話だろ?
newで作ったならDeleteするのはお約束。
戻り値ある関数でなら戻り値作らなきゃいけないのと一緒。
97:デフォルトの名無しさん
09/01/05 13:55:33
>削除したらDeleteする
漏れにはここが理解できん。
98:デフォルトの名無しさん
09/01/05 13:56:34
MFCに触る以前にC++をまったく理解してないって様子がアリアリだな。
99:デフォルトの名無しさん
09/01/05 13:57:24
>>97
範囲を切り取ったよ!
でも、この範囲の情報をいらなくなったからユーザが削除したよ!
そうしたら、プログラム的にdeleteするべき?ってきいてるんだろ。
deleteと削除を区別して考えてるというか、ユーザ側とプログラムで別って事を自覚してるから正しい。
100:デフォルトの名無しさん
09/01/05 14:01:22
>>98
顔真っ赤だけど大丈夫?
C++からMFC来るとクラス削除しなくっても勝手に処理してくれたりで戸惑うのは当たり前だと思うのは俺だけか
101:デフォルトの名無しさん
09/01/05 14:06:32
>>100
顔真っ赤なのは、鏡に映ってる自分のことかぃ?(w
自分のコードで明示的にnewして作ったものを、MFCが内部で勝手に削除
するMFCの標準クラスって、具体的にどのクラスのことなのか1つでいい
から挙げてみてよ。
102:デフォルトの名無しさん
09/01/05 14:07:06
説明が下手なだけだな。
103:デフォルトの名無しさん
09/01/05 14:10:49
MFCにもCreateとかReleaseとかいうメンバ関数があんなにいっぱいあるというのにw
104:デフォルトの名無しさん
09/01/05 14:16:55
>>102
いわゆる、真性のコミュニケーション能力不足ってやつですね。
なんか理系全体のレベルが下がるとともに、年々新人プログラマの質も
下がっているような気がするのは、気のせいか?
>>103
メンバ関数のCreateやReleaseは、麻生読みするとnew/deleteになると
でも言うのかぃ?
予約語以外の関数名なんてコンパイラにとっちゃ、関数を個別に識別する
ための単なる記号でしかないのは、C++どころかCやアセンブラ、BASICでも
変わらん。C++から来たとか騙るな。
105:デフォルトの名無しさん
09/01/05 14:20:17
>>104
お前は何の話をしてるんだw
106:デフォルトの名無しさん
09/01/05 14:23:15
自分の世界に浸っているのでしょう。
つまりなにか? このスレは説明もろくにできない質問者と、
自分の世界に浸って周りを見ようともしない回答者と、
一部の傍観者によって構成されているのか?
# まぁそんなもんか。
107:デフォルトの名無しさん
09/01/05 14:24:51
>>101
CFrameWnd
108:名無し募集中。。。
09/01/05 14:35:34
CFrameWndというかCMultiDocTemplateあたり?
説明が下手な人は自分の考えを言葉に表現できないという事だと思うけど
コーディングってプログラム言語でプログラムしたい内容を表現するという事だから
(上司の、スレ住人の、CPUの、OSの、言語の)理解できる的確な表現をする事は重要な事だぜ
109:デフォルトの名無しさん
09/01/05 14:36:41
惜しい、そこは「言語」ではなく「コンパイラ」とすべきかと。
110:デフォルトの名無しさん
09/01/05 16:11:58
>>101はCFrameWndやCDocTemplateを知らなかったのか?
111:デフォルトの名無しさん
09/01/05 16:22:20
なぁ、>>101は図星だったからこんなに必死なん?
112:デフォルトの名無しさん
09/01/05 16:31:16
new/deleteや、クラスの生成/消滅でがたがた言ってるヴァカは、ただの屑。
それだけは真実。
113:デフォルトの名無しさん
09/01/05 17:07:53
MFCと関係ない質問はスルーが基本
114:デフォルトの名無しさん
09/01/05 17:23:26
親ウィンドウのクライアントエリアにある子ウィンドウがクリックされた時に
親ウィンドウでも処理をしたいんですが、どうしたらいいんでしょう?
フォーカスを無理やり親に渡してしまうと子ウィンドウ側での処理ができなくなってしまいますし。。。
と、APIの方に誤爆ってしまいましたがどなたかお知恵をお貸しくださいな
115:名無し募集中。。。
09/01/05 17:42:02
親ウィンドウってCMDIFrameWnd?子ウィンドウってCMDIChildWnd?
フォーカスを渡さないといけない処理ってどんな処理?
>>109
インタプリタもあるじゃない?と思ったけどMFCならコンパイラ限定か(チッ
116:デフォルトの名無しさん
09/01/05 17:53:59
>>115
子ウィンドウの移動をさせたいんですが、親ウィンドウはViewクラスで子ウィンドウはCEditになってます。
117:デフォルトの名無しさん
09/01/05 18:59:10
何でフォーカスが関係してくるのか理解不能
118:デフォルトの名無しさん
09/01/05 19:05:22
とどのつまり親(Viewとか)のPreTranslateMessageで解決する
119:デフォルトの名無しさん
09/01/05 19:31:59
>>117
キー入力がそっちに行っちゃってCtrl+Vとかも使えなくなったのでフォーカスかなぁと。
120:デフォルトの名無しさん
09/01/05 21:21:22
MFCのソース見てないけど
EditViewでツールバーやメニュー触ったあともフォーカスはeditに残ってるから
フォーカス戻す処理が入ってる気がする
仮にそうだったらEditViewじゃない普通のviewの場合はviewへフォーカスが戻るだろうね
121:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/01/05 21:50:52
SetscrollInfo()ではなく、EnsureVisible()を使うのではないだろうか。
123:デフォルトの名無しさん
09/01/05 22:04:49
表示されるようになりました。1行で書けてしまいました。ありがとうです!
124:デフォルトの名無しさん
09/01/06 21:28:48
自前のウィンドウに影(ウィンドウの右と下が黒くなるやつ)を付ける方法を
教えて下され。
CWndクラスの中で下のように書くとタイトルバーもない四角いウィンドウがでるのですが、
これに影を付けたいのです。
CreateEx(
WS_EX_TOOLWINDOW,
lpszClassName,
NULL,
WS_POPUP | WS_VSCROLL,
0, 0, 100, 100,
NULL, NULL, NULL);
125:デフォルトの名無しさん
09/01/06 21:44:36
デスクトップに対する相対座標を取得して、そこからデスクトップに対してGDIを使って、ウインドウサイズに合わせて矩形を描画すればいいんじゃね?
126:デフォルトの名無しさん
09/01/06 22:05:23
フチに自分で色塗るだけ
127:デフォルトの名無しさん
09/01/06 22:18:51
>>124
GDIを使って描いてもいいけれど、もっと安直にウィンドウを重ねてもできるよ。
128:デフォルトの名無しさん
09/01/06 22:38:25
もしかしてCS_DROPSHADOWの事か?
129:デフォルトの名無しさん
09/01/07 00:00:29
MFC Feature Packでアプリ組むと、タイトルバーのフォントが、標準のものより
ちょっと小さくて読みにくいんだけど、これって、どこで修正できるん?
どこかのタイミングでフォントを設定すれば修正できるような気がするんだけど、
上手くいかない・・・orz
どなたか、わかる方、教えてplz
130:デフォルトの名無しさん
09/01/07 00:49:39
まだそんな名前だっけ
普通にSP1って呼んでるわ
131:デフォルトの名無しさん
09/01/07 13:22:30
>>128
すんません。いろいろ調べてはいたのですが
灯台下暗しでした。。。
CS_DROPSHADOWでやりたいことができました。
132:デフォルトの名無しさん
09/01/07 13:47:27
MFC(VS2005)からVBAの関数を呼び出す方法を知っている人いませんか?
ググってもなかなかみつからないので。。。
よろしくお願いします。
133:名無し募集中。。。
09/01/07 14:09:49
VS2008からDDEを使ってExcelに値を放り込んだり多少の操作をした事はあるけど
VBAの関数を呼ぶ方法はわからないな
VBAのどんな関数を呼びたいんだ? (または任意のマクロかな)
134:デフォルトの名無しさん
09/01/07 15:05:13
>>133
ExcelのVBEditorで作ったVBAの関数を呼びたいと思っています。
Excelに貼り付けたボタンを押すとその関数が呼び出されるんですが、
これをMFCで処理させたいと思っています。
なかなか難しいですかね?
135:デフォルトの名無しさん
09/01/07 15:15:24
こういうやつ?
追加し、MFC からオートメーションを使用した VBA マクロを実行する方法
URLリンク(support.microsoft.com)
136:デフォルトの名無しさん
09/01/07 15:22:52
>>135
日本語が。。。
でも、オートメーション使うとなにかできそうですね。
137:デフォルトの名無しさん
09/01/07 17:58:11
>>129
タイトルバーのフォントが変わるの? XPじゃ変わらんけど。
ちなみに、メニューバーのフォントは変わるのでシステムの設定を
チェックしてそれに合わせているんだが。
138:デフォルトの名無しさん
09/01/07 18:01:14
CDHTMLDialogのOnInitDialogでCreateExで動的生成したコントロールが、
スクロールバー等をクリックしても無反応です。
CDHTMLDialogで動的に生成したコントロールを有効にする方法は無いでしょうか?
139:デフォルトの名無しさん
09/01/07 19:06:25
CEditを本体から呼び出してエディットボックスを作成しているのですが、これの色を変更する場合って
CEditのHDCを取得して、SetTextColorではだめなんでしょうか?
140:デフォルトの名無しさん
09/01/07 20:19:18
つオンコントロールカラー
141:デフォルトの名無しさん
09/01/08 00:17:30
古いアプリのメンテのために昨日から初めてMFCに触れることになった者です。
ある比較的シンプルなWindowsアプリで、なぜかCPU使用率が異常に高いので
いろいろ試行錯誤しなかがら試してみると、どうもOnPaintのオーバライドで
ベースクラスのOnPaint(CframeWnd::OnPaint)を呼んでないことが原因らしいことが
わかったのですが(つまりオーバーライドの中でCframeWnd::OnPaintを呼んでやれば
CPU使用率の異常な上昇は起こらない)これって普通なんでしょうか?
なんかググってもオーバーライドの中でCframeWnd::OnPaint読んでるようなコードって
見かけないような気がするんですが……。
142:デフォルトの名無しさん
09/01/08 00:19:42
OnPaint で GetDC とかしてないか?
OnPaint では CPaintDC でデバイスコンテキストを作る必要がある。
あるいは、OnPaint で何もしていないか・・・。
何もしなくても CPaintDC を作る必要がある。
143:デフォルトの名無しさん
09/01/08 00:50:27
OnPaint() ではベースクラスの OnPaint() は呼ばない。
ベースクラスでは、Default()、つまりDefWindowProc() を呼んでいるだけだから。
144:デフォルトの名無しさん
09/01/08 00:52:34
DefWindowProc で
BeginPaint と EndPaint をしてるから
OnPaint で何もしていないなら
自前で CPaintDC 作るか
さもなくばベースクラスの OnPaint を呼ばなければいけない。
145:デフォルトの名無しさん
09/01/08 01:06:27
CPaintDC(BeginPaintとEndPaint)しないと無効領域がクリアされず
延々とWM_PAINTが生成されるんだっけか
146:デフォルトの名無しさん
09/01/08 01:36:29
無効領域がある限り永遠にWM_PAINT送り続けるからな。
一応メッセージの優先順位が低いから、それでもそれなりにアプリは動作するけど。
147:デフォルトの名無しさん
09/01/08 05:09:44
つまり、元のアプリは相当酷い代物ってことだな。
148:デフォルトの名無しさん
09/01/08 19:26:24
>>142-147
ありがとう。
ソースは会社なんで明日確認してみます。
>元のアプリは相当酷い代物ってことだな。
名前から意味がまったく読み取れない変数名やメソッド名とか、
一つのメソッドが平気で200行とかそれはもうw
149:デフォルトの名無しさん
09/01/08 21:41:46
子ウィンドウの座標(CPoint)を親ウィンドウの座標(CPoint)に変換したいんですが関数などはあるのでしょうか?
150:デフォルトの名無しさん
09/01/08 21:43:43
どういう意味だ?
デスクトップからの相対座標を、親ウィンドウの相対座標に変換するってことか?
151:デフォルトの名無しさん
09/01/08 21:44:50
Viewクラス内に派生クラスで作成したCEditクラスがいるんですが
このCEdit内をクリックされた時に親ウィンドウ側に座標を渡したいんです
152:デフォルトの名無しさん
09/01/08 22:10:12
GetCursorPosで取得したならスクリーン座標なので親でScreenToClient
153:デフォルトの名無しさん
09/01/08 22:20:47
GetCursorPosを行ったのではなく、CEditクラスに来たWM_LBUTTONDOWNのメッセージを処理したいんですよ。
154:デフォルトの名無しさん
09/01/08 22:23:01
応用力のない奴だな
155:デフォルトの名無しさん
09/01/08 22:27:07
つ MapWindowPoints
156:デフォルトの名無しさん
09/01/08 22:55:15
応用力があったらこんなところに来ません。
157:デフォルトの名無しさん
09/01/09 08:02:43
photoshopとかwordみたいにdrawの一部を拡大縮小したくて、SetViewportOrgとか使ってみたのですが
どうもキレイに行かなくて困ってます。
イイ解決法ってありますか?
158:デフォルトの名無しさん
09/01/09 10:12:41
MFCと関係ない質問はスルーの方向で
159:デフォルトの名無しさん
09/01/10 11:55:15
スクリーン座標をクライアント座標に変換した所、正しく変換された物から右下側に座標がずれてしまうのですが
これは、使い方がおかしいのでしょうか?
160:デフォルトの名無しさん
09/01/10 12:02:21
エスパーさーん
161:デフォルトの名無しさん
09/01/10 12:09:41
ScreenToClientでスクリーン座標をクライアント座標にしたらずれてるって話だろ?
別に意味がわからなくはないとおもうが・・・。
まぁ、俺には解決策はわからんけどね
162:デフォルトの名無しさん
09/01/10 14:04:57
・変換元座標がスクリーン座標でない。
・実はAPIのScreenToClientを使用しており、渡すHWNDが間違っている。
・"正しく変換された物"のほうがずれている。
163:デフォルトの名無しさん
09/01/10 15:33:57
非クライアント領域が計算に入ってないんだろうな
164:デフォルトの名無しさん
09/01/13 23:01:13
GetCurrentDirectoryより簡単な関数はありますか?
165:デフォルトの名無しさん
09/01/13 23:18:29
>>164
「簡単」の基準は?
166:デフォルトの名無しさん
09/01/13 23:24:58
MFCを使い ダイアログベースのプログラムを作成しています。
例えばダイアログ上にボタンを配置し 毎フレーム位置を変更させるような
プログラムを作成したいと考えています。
毎フレーム処理を行うようなコードはどのように実装すればよいのでしょうか?
167:デフォルトの名無しさん
09/01/13 23:28:08
そもそもフレームってどういう意味で言っているのか分からない
紙芝居でもダイアログ上に表示するのか?
168:デフォルトの名無しさん
09/01/13 23:38:06
>>167
返答ありがとうございます。
>紙芝居でもダイアログ上に表示するのか?
イメージに近いです1フレーム毎に処理を行えればと思っています。
169:デフォルトの名無しさん
09/01/13 23:43:46
フレームの定義が時間単位とかだと、タイマーイベントでも作ってダイアログのDC上に絵を描画とかか?
関係ない話だけど、今Windows7のペイントいじってみた
なんとなくリボンの良さ分かった木はするけど、絵心がないから個人であれ作るのは面倒だな
170:デフォルトの名無しさん
09/01/13 23:52:29
>>169
Timerを使わず
win32でいうところのメッセージループみたいな
所で独自のイベントを受け取って処理を行いたいんだけど
いまいちわからん。。。
リボンUIは確かに見た目は良いね
171:デフォルトの名無しさん
09/01/14 00:26:54
GDIにはフレームという概念は無いはず。
タイマーかなんかで一定時間毎に処理するしかないね。
172:デフォルトの名無しさん
09/01/14 01:39:59
やっぱりフレームがどういうものを想像しているのか分からないな
描画が必要なタイミングの単位と言うならOnDrawとかになるんだろうけど
一定周期じゃないもんな(アクティブになったときとか、リサイズされたときとか色々。。。)
173:デフォルトの名無しさん
09/01/14 10:09:35
MFCならOnIdleの出番か?
174:デフォルトの名無しさん
09/01/14 10:42:44
ティアリングの無い綺麗なアニメーションしたければWPF使えってんだ
175:デフォルトの名無しさん
09/01/14 18:16:00
CRectTrackerを使って画像内にドラッグで大きさ、位置が
変更可能な矩形を描画しようとしてるんですが、
矩形内の色が白になってしまって画像が上書きされた形になります。
枠だけ描画というのはどうやったらできるんでしょうか。
画像はrawで、OpenGLで描画されています。
176:デフォルトの名無しさん
09/01/14 18:24:56
>>175
コンストラクタでCRectTracker::hatchInsideを指定するとどうなる?
# OpenGLで描画したものってDCの範疇じゃないのかな?
177:175
09/01/14 18:55:08
>>176
斜線が入るだけで、白く塗りつぶされたままです。
178:デフォルトの名無しさん
09/01/14 19:52:53
エディットボックスでキー入力の入力方法を英語から日本語入力に自動的に切り替える方法を教えてください。
179:178
09/01/14 19:53:28
↑winXP+VC2005です。すいません
180:デフォルトの名無しさん
09/01/14 21:15:39
MFCにあったかな?
なければスレ違い
181:デフォルトの名無しさん
09/01/14 22:07:07
>>175
そもそもなんでOpenGLで描画したところにトラッキングしたいのか判らんが、
MFC側の問題じゃなくてOpenGL側の問題っぽいからOpenGLスレで聞いて味噌。
182:デフォルトの名無しさん
09/01/14 23:26:05
質問させてください。
今MFC VC2005を使いプログラムを組んでいるのですが、あるメソッド内でint型配列array[21]の中身をsetwindowtextでタイトルに表示させたいと思っています。
setwindow(_T(""))で、array[i]をどのように記述すれば表示できるようになるでしょうか。下らないかもしれませんがお願いします。
183:デフォルトの名無しさん
09/01/14 23:28:17
CString hoge;
hoge.format(_T("%d"), array[i]);
wnd.SetWindowText(hoge);
こんな感じかな
184:182
09/01/15 02:24:13
>>183さん
そういう書き方をするんですね、、無事上手くいきました。ありがとうございました!
185:175
09/01/15 02:48:28
>>181
今使ってるプログラムはもともと1年半くらい前の演習の時に先生から頂いたrawビューアで、
研究に使えそうだってことでその時のプログラムを改造しようとしてるんですが、
OpenGLは全く扱ったことがなくて(演習の時も処理部分しか触ってない)、
時間もないんで、OpenGLを勉強するより1から作り直した方が早いような気がしてきたんですが、
raw画像(320×320の輝度値のみのデータ)をMFCを使って表示させるには
ビットマップに変換するしかないのでしょうか。
186:名無し募集中。。。
09/01/15 03:19:54
輝度データをDIBに変換すれば良い
BMPはLoadImageでDIBのハンドルを得られるが
自分で変換する場合はBITMAPINFOにサイズなどをセットしてCreateDIBSectionを使って
ハンドルと輝度データを入れる領域を得る(ここまでMFCなし
187:175
09/01/15 11:33:23
>>186
アドバイスありがとうございます。
それで作ってみたいと思います。
188:デフォルトの名無しさん
09/01/16 17:33:57
MFC6.0の参考書見ながらこつこつやってるんだけど別に支障はない?
1999〜2001年に出版されたものなんだが
189:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/01/16 19:47:37
>>189
ptBuf[iLength]=0;
↓
ptBuf[iLength-1]=0;
191:デフォルトの名無しさん
09/01/16 19:57:10
CWnd::GetWindowTextでCStringに纏めて取って、
CString::Tokenizeで分解したほうが手っ取り早くね?
192:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/01/16 21:25:28
CEdit::GetLine
戻り値
実際にコピーされたバイト数
戻り値使わないの?
194:デフォルトの名無しさん
09/01/17 00:00:50
MFCでデバイスコンテキストで使われているフォントの高さを取得する方法ってありますか?
195:デフォルトの名無しさん
09/01/17 00:05:43
GetTextExtent
196:デフォルトの名無しさん
09/01/17 03:07:01
>>193
ここの使用例をテキトーに書き直しただけだから、
URLリンク(msdn.microsoft.com)(VS.80).aspx
細かい事気にすんな。 ハゲるぞ。(もうハゲてるかもしれんけど)
197:デフォルトの名無しさん
09/01/17 04:18:10
GetLineの戻り値、、使わないなあ。 使いどころない。
>>193は、>>192でどう戻り値使うのだろうか?
198:デフォルトの名無しさん
09/01/17 09:07:51
>>194
GetTextMetrics
199:デフォルトの名無しさん
09/01/17 17:51:17
lineText..GetLine(iLine, strText.GetBuffer(iLength));
っていう風に関数を実行するとstrTextにその行が入る時と入らない時があるんですがなぜなんでしょうか?
200:デフォルトの名無しさん
09/01/17 17:57:30
ReleaseBuffer してるか?
201:デフォルトの名無しさん
09/01/17 18:01:19
行ってますし、デバッガでとめて一個一個通すと何故か全部入っていくんです。
202:デフォルトの名無しさん
09/01/17 18:08:02
>lineText..GetLine(iLine, strText.GetBuffer(iLength));
こんなコード、有り得ないだろ。
203:デフォルトの名無しさん
09/01/17 19:07:15
CEdit::GetLine(int nIndex, LPTSTR lpszBuffer)
だろ?EM_GETLINEのベタ実装なんだよな、これ。
昔から思っていたんだが、わざわざメソッドとして用意しておく必要性あるんだろうか。
普通バッファ長を指定できる方しか使わないと思うのだが。
わざわざこっちでバッファの先頭ワードにバッファ長代入とか暇人過ぎだろ。
204:デフォルトの名無しさん
09/01/17 21:11:51
2つあるうちの一見楽そうに見える方が実は大変ということか
205:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/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");
}
URLリンク(msdn.microsoft.com)(VS.80).aspx
ここ見る限りじゃ間違いないと思うんだけどなあ・・・
指摘と改善お願いします。。。
207:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/01/18 17:08:05
>>207
MSのサンプル間違ってるとか悲しいわな
これ、一応参考書のサンプルなんですけど捨てたほうがいいでしょうか
まあ2001年に出版されたものなんですけどね
209:デフォルトの名無しさん
09/01/18 17:14:24
サンプルは間違っているとは言い切れないよ。
宣言と利用の間に、メモリ確保が隠されているかもしれないw
とは言え、2008用のページの方は訂正されているんだからそっちを見ればいい訳で。
URLリンク(msdn.microsoft.com)
210:デフォルトの名無しさん
09/01/18 17:22:43
CTime Curtime = CTime::GetCurrentTime();
tm newtime;
Curtime.GetLocalTm(&newtime);
wsprintf(str,asctime(&newtime));
でできました!
参考書って年代で仕様も変わるけど図書館にはこれしかなくて・・・^^;
なんか疑いにくいんですよね、参考書って
どうもありがとうございました
211:デフォルトの名無しさん
09/01/18 17:28:49
本に誤字脱字があるのは珍しいことじゃない
212:デフォルトの名無しさん
09/01/18 17:33:05
おかしいと思ったら複数調べるのがいい。
213:デフォルトの名無しさん
09/01/18 17:33:41
>>210
その参考書が何か知らんが、MSDNのサンプルをコピペしただけの悪書なんじゃないか?
いみじくも参考書を名乗るのなら、ちゃんと検証されたコードを載せるべきだと思うのだが。
214:デフォルトの名無しさん
09/01/18 17:37:35
>>213
えっと・・・
ハーバート・シルト/フランク・クロケット著 「標準講座 MFC6.0」だそうです
結構分厚いからコピペではないと思います
ver間での使用の違いを疑わなかった自分のミスです
215:デフォルトの名無しさん
09/01/18 17:40:25
いやこれ仕様の違いじゃなくてもともと間違ってるよ。
でもその本見る限り、コピペじゃなくて同じソースってことみたいね
216:デフォルトの名無しさん
09/01/18 17:44:41
ってサンプルソースがダウンロードできるから見てみたけど、
struct tm *newtime;
newtime = curtime.GetLocalTm();
これなら旧仕様で合法だな。
217:デフォルトの名無しさん
09/01/18 17:48:03
>>216を2008でコンパイルするとGetLocalTm()に引数がないことからエラーがでました
昔はよかった
218:デフォルトの名無しさん
09/01/18 17:50:03
まあそれはMSDNのほうでも、_SECURE_ATLを未定義にすればいいみたいだけどね。
219:デフォルトの名無しさん
09/01/18 17:50:40
>いいみたい
→いいと書いてるみたい
220:デフォルトの名無しさん
09/01/18 17:56:33
昔は引数にNULL(省略化)を渡すことで、オブジェクト内部のstruct tmの
ポインタを返す仕様だったけど、NULLポインタを渡すのを許可しなくなった
ってことでは?
オブジェクト内部のstruct tmのポインタを取得できると、直接データを
書き換えて隠蔽化の意味がなくなるから。
221:デフォルトの名無しさん
09/01/18 18:56:56
元のサンプルと全然違ってるし
222:デフォルトの名無しさん
09/01/18 19:33:49
サンプルコードなんて使い方の雰囲気を感じ取るだけのもんで
コピペするもんじゃねぇ。
自分のプログラムに組み込むときは、引数・戻り値の意味と動作を理解し
自分の頭でコードを書くべき。
223:デフォルトの名無しさん
09/01/18 20:41:17
サンプルコードをいじくりながら学ぶもんなんじゃねえの?
いじくる前に1回コピペするだろ
224:デフォルトの名無しさん
09/01/18 21:26:46
いじくるのは勝手だけど、自分が間違ったのを本のせいにしない。
225:デフォルトの名無しさん
09/01/18 22:59:29
>>207
wsprintf()ってワイド文字ではなくTCHARだけど。
226:デフォルトの名無しさん
09/01/18 23:02:26
TCHARは_tsprintfみたいな名前だろ?
wprintfはwcharのはず
プリプロセッサで切り替わるだけだし
227:デフォルトの名無しさん
09/01/18 23:05:43
wsprintfはWindowsのAPI
wprintfはprintfのワイド文字版
228:デフォルトの名無しさん
09/01/19 00:15:16
>>210
手元の2004年初版第6刷発行では>>216のコードになってるな
>>225-227
wsprintf()は環境によってマルチバイトかUNICODEだよね。
>>206のコードだとマルチバイト環境のコードならばcharは間違えというわけではない。
それと
str[strlen(str) - 1] = '\0';
ってのはasctime()が改行文字を付加するからそいつを取っ払うため。
まぁ、あんまりよろしくないコードとは思うけどね。
229:デフォルトの名無しさん
09/01/19 00:41:37
wsprintfとwprintfとswprintfは紛らわしすぎる
230:デフォルトの名無しさん
09/01/19 05:48:07
処理をCPU使用率30%を上限に制限して実行させるにはどうすればいいんでしょうか?
そんなことは可能なんですか?
231:デフォルトの名無しさん
09/01/19 08:47:51
なんでそんなことする必要があるのか疑問。
他のアプリの邪魔をしたくなければ、スレッドの優先順位を低くしとけばいいだけ。
232:デフォルトの名無しさん
09/01/19 08:53:15
>>230
25%上限でよければ、簡単だよw
233:デフォルトの名無しさん
09/01/19 09:23:00
>>232
Core2Duoですが簡単ですか?
234:デフォルトの名無しさん
09/01/19 09:25:08
惜しいな、Core2Duo単体なら上限は50%だ。
235:デフォルトの名無しさん
09/01/19 09:31:19
Core2Duo限定のソフトか!
236:デフォルトの名無しさん
09/01/19 10:31:14
いえ、Qのほうで
237:デフォルトの名無しさん
09/01/19 12:33:52
MFCと関係あるか?
238:デフォルトの名無しさん
09/01/19 14:54:00
誰ですか。勝手に話を進めないでくださいw
アプリに重い処理を乗せたくて起動者全員CPU30%とか10%づつシェアするプログラムを組み込みたいんです
制限かけないとずっと自分が使ってなくてもずっと100%で熱暴走が心配なのでCPU10%を提供に制限したいんです。
どうすればいいと思いますか?
239:デフォルトの名無しさん
09/01/19 15:36:17
MFCにそういうライブラリが存在しなければスレ違い
240:デフォルトの名無しさん
09/01/19 17:17:46
>>238
熱暴走が心配ってどんな環境だよ。
「起動者全員」とか「シェアする」とかサーバーアプリなの?
どうしても心配ならユーザー数に応じてSleepでもさせたら?
241:デフォルトの名無しさん
09/01/19 19:23:57
CPU使用率を求める処理でCPUを食うから無意味
242:デフォルトの名無しさん
09/01/19 20:09:19
>>241
えっ?
243:デフォルトの名無しさん
09/01/19 20:29:40
お前ら >>237 も >>239 も見えないフリか。
244:デフォルトの名無しさん
09/01/19 20:50:46
熱暴走については、昔の焼き鳥こさえてたAthlonの時代ならともかく、
今のCPUは温度が上がりすぎると勝手にクロックとか落とすので、特に問題ないな。
CPU利用率については、WindowsServerならプロセスがどれだけフル回転していようと、
一定時間毎に容赦なく他のプロセスに明け渡すから、無難なレスポンスが確保できそうかな、と。
245:デフォルトの名無しさん
09/01/20 06:57:04
優先度でいつでも明け渡せるとしても、気分的に窮屈な感じしませんか?
自分の作ったプログラムはいつも全力で走るんですが、CPU見てると常に20%ぐらいでなんかまわってたりするんですが
、タスクマネージャで確認してるだけなんですが、この%って一定時間内のCPU100%使用率ってことなんですか?
そうでないとしたら%制限の方法を教えてください!
246:デフォルトの名無しさん
09/01/20 07:08:05
>>240
thx!
今ってCPUというかハードの性能がすごくてほとんどの処理がすぐ終わって待機時間がすごくもったいない気がしたので
そういう部分だけの汎用的なCOMとかで自由に独自のソフトに組み込めたらよくないですか?
10%シェアでも100人いればパソコン10台分ですよね。フリーでそういうのあれば教えてください。
Sleepでどうやるかじっくり考えます。
どうもです
247:デフォルトの名無しさん
09/01/20 07:56:11
無駄。つーか、スレ違いだと。
そもそも>234辺りの理屈は判っているのだろうか。
248:デフォルトの名無しさん
09/01/20 10:08:04
スレ違いだと何度指摘されても話を続ける奴って何なの?
知的障害者なの?死ぬの?
249:デフォルトの名無しさん
09/01/20 18:56:45
ム板は初心者にとってスレチが紛らわしいと思うけどこれはわかるだろ、な?
250:デフォルトの名無しさん
09/01/21 08:26:16
どこで聞けばいいんでしょうか?
どうやって実現するかわからないのでターゲットのスレもわからないです。
251:デフォルトの名無しさん
09/01/21 09:10:06
>>250
>この板はプログラムを作る人のための板です。
>あらゆる質問はまずすれ立てるまでもない質問はここでスレにしてください。
252:デフォルトの名無しさん
09/01/21 09:38:27
thx
253:デフォルトの名無しさん
09/01/22 08:41:42
MDIで一つのDocに複数のViewというのはなんとか判る。今回、
そのViewが一つ1枚とその他10枚が別のViewになる構成ってどうやるのがいいのだろう。
CMultiDocTemplateを11個AddDocTemplateすることになるのだろうか。
その場合、クラスを派生して10個にしておかないと10枚の区別がつかない気がするのだが。
ってことで、これから移動するからレスは夜になるが、誰かヒント頼む。
254:デフォルトの名無しさん
09/01/22 09:50:02
Viewクラスだけ異なるDocTemplate作ればよいのではないか?
たしか複数のAddDocTemplateをすると新規作成時にテンプレ選択ダイアログが出るようになるな
255:デフォルトの名無しさん
09/01/22 14:10:59
ドキュメントテンプレートはアイコン、メニュー、ツールバーみたいなリソース関係で
ドキュメントごとじゃなくてドキュメントタイプごとに違うリソース使えるようにする
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5379日前に更新/106 KB
担当:undef