■ VisualC++(MFC限定)相談室 3■

このエントリーをはてなブックマークに追加
ダイアログベースのアプリで
シリアライズってどーやるんだ。。。。
888デフォルトの名無しさん:02/05/13 17:51
あの、VCのようにMDIでも1つのプロジェクトしか実行できないものがあるじゃないですか。
この手のものは、MDIの子ウィンドウに複数の種類がありますでしょう?
ソース用のテキストだったり、コントロールデザイン用であったり…。
新規作成を押すと、そのあたりが全て初期化されますよね。
そのような、MDIのアプリケーションの複数の子ウィンドウの取り扱いはどのように
すればよいのでしょうか?
888
したいことがよく判らんが取りあえずこのあたりでも読んでみれば?
http://www.microsoft.com/JAPAN/developer/library/jpbkgnd/TechArt/VTools/vc/MFCFAQ.htm#mfcfaqdocs
>>888
Documentをツリー上にして出来たよ。
>>889
面白そうなので読もう、いまさらMFCとか言われそうだけど・・・
何をすればいいのか教えてください。
892デフォルトの名無しさん:02/05/13 19:53
>>889
用は、VC++のようにMDIの子ウィンドウに複数の種類を持たせたいのです。
そして、それを取り扱いたいわけです。
DocTemplateを複数登録すれば?
894887:02/05/13 20:16
すんません
シリアライズは実装したんですが、
実際にファイルのオープンや書き込みは
ダイアログベースではどの関数でやればよいのですか?
CFileDialog
896887:02/05/13 20:48
ファイル名まで取得して、
その後なんですが・・・・ウウウ
フレームワーク使わないなら素直にfprinfとfscanf使おう
 @CFileDialogからファイル名を取得
 ACFileでオープン
 BCArchive ar
 CCxxDocと関連
 DオブジェクトのSerialize ar<< CObjectxx
898887:02/05/13 21:05
ありがとうござんすっ
899デフォルトの名無しさん:02/05/13 21:58
っていうか.NETのこの時代にMFCを真剣に学んでる
奴等って....(゚д゚)ポカーン
まあ...時代の風に乗り遅れるなよとしか
言いようがないが....
>>899
.NETではドライバは書けません。
そう言うことです。
MFCだとドライバ書けるのかと聞きたい
>>901
.NETでCPLは書けません。
新しモノ好きなだけ〜
904デフォルトの名無しさん:02/05/13 22:07
っていうかもはやMFCはクライアント
サイドで.netに取って代わられるんでしょ?
つまりMFCはデバドラでもしこしこ書いてろ
ということでよろしいか?
>>904
MFCはともかくネイティブコンパイラは残るでしょ。
取りあえず.NETを支えてるのがWin32である以上。
ngen=ネイティブコンパイラ?
だったら.NETでもいいと思われ
905
Win32が残る以上、皮一枚のMFCは残るでしょう
908デフォルトの名無しさん:02/05/13 22:12
>>905
.NETのクラスライブラリは最終的には
Win32APIを呼び出しているということですか
>>908
そらそうでしょう。Widowsプログラミングとはそう言うものでしょう。
最終的にはBSDのシステムコールを呼び出す実装もあるようだが?
911デフォルトの名無しさん:02/05/13 22:47
WindowsXPの浸透率≒.NETの浸透率
は成り立つか?
XPとNETは何の関係も無い。
.NETつかってみてーなぁ
とうとう900突破かぁ
CPropertySheetでDoModalして、処理が戻ってきたら
GetActiveIndex()を使ってアクティブだったpageのインデックスを
取得したいんだけど、なぜか0しか返ってこない。
SetActiveIndexなら、DoModal前に指定すればちゃんとそのpageが
アクティブになって表示されるのに。なぜ?
SetActiveIndexって何
917デフォルトの名無しさん:02/05/15 18:10
すいません。
MDIでChildWindowにダイアログで設計したものを挿入することは出来ますでしょうか?
SDIでは出来るんですけども、MDIではどうにもなりません。ソースとして挿入できれば
便利かなと思います。
Θ_Θ ・・・
>>915
DoModalが終わった後ではすでにプロパテーシートが消えてるからじゃない。
920デフォルトの名無しさん:02/05/16 00:02
プリンタへの印刷について質問です。
・途中で用紙サイズを変更することは可能でしょうか(同じスプールにです)
->Wordとかは出来るようなので可能かとも思うのですが
・各企業は自社プリンタ用の拡張機能の仕様を公開しているのでしょうか
>>919
かなぁ? じゃあどうやって取得したらいいんだろう。
ぐーぐってもヒット数は10件に満たない数だし。

それとSetActivePageだったね。Indexじゃなくて。
>>921
GetActivePageじゃ取れないんだね?

だったらプロパティシートのOnOKハンドラとかで
GetActivePageでもしてメンバ変数m_nIndexとか作って
その変数に入れておけばいい。それで
if(sheet.DoModal() == IDOK){
  int nIndex = sheet.m_nIndex;
}
とか。
923デフォルトの名無しさん:02/05/16 01:08
COLORREF color;
CPaintDC dc(this); // 描画用のデバイス コンテキスト
// デスクトップを取る
CWnd* pwndDeskTop = GetDesktopWindow();
CDC* pDeskTopDC = pwndDeskTop->GetDC();
// 自分の領域にデスクトップからコピー
dc.BitBlt( 0,0, 200, 200, pDeskTopDC, 0, 0, SRCCOPY );
pwndDeskTop->ReleaseDC(pDeskTopDC);

これでデスクトップの画像を取得し,表示。
この後に、

for(j=0;j<yh;j++)
for(i=0;i<xw;i++){
color=pDC->GetPixel(x0+i,y0+j);
r=GetRValue(color);
g=GetGValue(color);
b=GetBValue(color);
c=(r+g+b)/3;
pDC->SetPixel(x1+i,y0+j,RGB(c,c,c));
}
のような操作で白黒化を試したのですが、
1度ワークスペースに描写してからGetPixelでは
無駄な処理(ワークスペース内に描写)があって効率が悪い気がします。

デスクトップ上から直接RGB値をとりこみ、メモリ上で処理(この場合は白黒化)、
その後にワークスペース内に描写させるにはどうすれば良いのでしょうか?
質問ばかりですいません。
924デフォルトの名無しさん :02/05/16 01:43
age
>>922
CPropertySheetにはOnOKはないので、DestroyWindow時にメンバ変数に格納してみた。
で、DoModalから処理が戻ってきたときにそれを指定、で成功。蟻が父さんっ。
>>923
DIB
927デフォルトの名無しさん:02/05/16 18:17
リストビューコントロールで、インストールシールドのダイアログ選択のように、
各リストにチェックボックスを表示するにはどうすればいいですか?
CListCtrl& list = GetListCtrl();
list.SetExtendedStyle(LVS_EX_CHECKBOXES);
のこと?
929デフォルトの名無しさん:02/05/16 18:27
有難うございます。試してみます。
930デフォルトの名無しさん:02/05/17 14:09
すいません。このチェックボックスにソースからチェックを入れたり、
チェックされているかどうか調べるにはどうすればいいですか?
931デフォルトの名無しさん:02/05/17 14:12
TreeViewを使って、エクスプローラのようなものを作ろうと思ったのですが
最初に全フォルダを調べてViewに登録しようとすると、ありえないと思いますが
フォルダが数万とかあった場合に、マズイ気がします。
何か他にやり方はないものでしょうか?
途中で追加しる。
>>930
自己解決しました。
モーダルダイアログにWM_KICKIDLEメッセージハンドラを実装して
アイドル処理を行い、その経過をダイアログ上にプログレスバーで表示しています。
メッセージハンドラ内で処理が終了したらEndDialog()を呼びたいのですが
ASSERTにひっかかって落ちてしまいます。
どうしたらうまく処理を抜けるんでしょうか?
935934:02/05/17 14:52
タイマーで監視して終了すればうまくいきました・・。
でもなんか納得イカン!!
936931:02/05/17 15:36
>>932
やっぱりそれしかないですか。
でも結局、大量にフォルダがあるフォルダや下層に行くほどヤバくなってきそうですけど
回避方法は無いんですか?
>>934
処理が終わったらユーザ定義メッセージをポストするとか
>>936
IEの「お気に入り」みたく、開いてるフォルダ以外は全て閉じるとか。
つまりフォルダを開くときだけサブフォルダを走査する。

フォルダの階層って制限あったような気がするけどなぁ。
939934:02/05/17 16:21
>>937
そんな方法が・・!
それでばっちり動きました。
そっちのがキレイなんでそうさせてもらいます。
ありがとうございました!
900も中盤にさしかかったので新スレです。

■ VisualC++(MFC限定)相談室 4■
http://pc.2ch.net/test/read.cgi/tech/1021620974/
941デフォルトの名無しさん:02/06/06 22:51
 
■ VisualC++(MFC限定)相談室 4■
http://pc.2ch.net/test/read.cgi/tech/1021620974/
943旧スレ埋め:02/06/26 09:19
■ VisualC++(MFC限定)相談室 4■
http://pc.2ch.net/test/read.cgi/tech/1021620974/
■ VisualC++(MFC限定)相談室 4■
http://pc.2ch.net/test/read.cgi/tech/1021620974/