■MFC相談室 mfc19d.dll■ at TECH
[2ch|▼Menu]
1:デフォルトの名無しさん
08/04/04 18:37:47
Microsoft Foundation Classライブラリ専用スレです。

前スレ
■MFC相談室 mfc18d.dll■
スレリンク(tech板)

2:デフォルトの名無しさん
08/04/04 21:49:05
>>1


3:デフォルトの名無しさん
08/04/04 23:00:55
BOOL OnInitDialog(void)
{
  GetDC(m_hWnd)->DrawText(">>1乙", m_rect, 0);
}

4:デフォルトの名無しさん
08/04/05 08:18:26
nice _beginthreadex

5:デフォルトの名無しさん
08/04/05 19:05:54
リソースビューでダイアログにボタンを配置した場合、プログラム中でボタンの初期設定をするのはどこで行えば宜しいのでしょうか。
リソースビュー上で初期設定はできますが、マクロや使用者のスペックに合わせて内容を変更したい時に対応できず困っています。
ダイアログはクラス化され、初期窓クラスにメンバとして保有しています。
そのため自動的にダイアログが生成されるのですが、ダイアログのコンストラクタでボタンのテキストを変えようとするとエラーが出ます。


6:デフォルトの名無しさん
08/04/05 19:26:09
ダイアログ ボックスを初期化するときに特別な処理が必要な場合は、この関数をオーバーライドします。

7:デフォルトの名無しさん
08/04/05 19:29:52
>>5
ダイアログアイテム(ウィンドウハンドルを持つデータ)の初期化はコンストラクタではなくOnInitDialogでやるようにする。
コンストラクタの時点ではまだm_hWndが生成されていない。

8:5
08/04/05 19:38:53
ありがとうございます。
いつもダイアログを生成した後に自前で初期化関数を呼んでいたのでソースがすっきりしそうです。

9:デフォルトの名無しさん
08/04/07 19:53:18
CSliderCtrlのSetSelectionで範囲を選択すると小さな点のようなものが表示されるだけで分かりにくいのですがもっと大きくならないのでしょうか。
プロパティを触っていると何故か中心の棒は太くなったのですが選択マークは目盛りに埋まって視認し難いままどうにもなりませんでした。
VC8を使っています。

10:デフォルトの名無しさん
08/04/11 19:03:01
>>9
亀レスだが
msdn2より
>作成時に TBS_ENABLESELRANGE スタイルを指定した場合にだけ、スライダ コントロールに選択範囲を表示できます。
>スライダ コントロールにこのスタイルが設定されていると、選択範囲の開始位置と終了位置の目盛りが
>垂直のダッシュではなく三角形で表示され、選択範囲が強調表示されます。

TBS_ENABLESELRANGEを設定するとスライダーバーは広がるのはVC8では何の意味もない。
以前はそこが強調表示されたがVC8では上記の通り三角形が強調表示。
VC8でも出来たらいいんだけど、俺も色々試したが無理だった。

11:デフォルトの名無しさん
08/04/14 21:10:20
質問しに来たら真上に答えがある幸せ。
しかしMSは何を考えて仕様を変えたのかさっぱりわからん。

12:デフォルトの名無しさん
08/04/14 23:00:47
Visual C++ 2008 Feature Pack Releaseが出たのに全然話題になってないねー
まだ英語版だけだし・・・でも誰か感想よろ

13:hori
08/04/16 10:09:39
画像を表示するプログラムを作成していますが、、、。

ダイアログにピクチャーBOXを入れ
APPWizardでメンバー変数追加しょうとしましたが
一覧にPICT1 が無いのです。(

プロパテイではIDC_PICT1は入っているのですが)

。なぜなのでせうか?。。。m(__)m

14:デフォルトの名無しさん
08/04/16 23:18:58
よくわかんないけど
ダイアログエディタの当該コントロール上で右クリックしてからメンバ変数として追加じゃダメなん?

15:hori
08/04/17 06:00:03
>プロパテイではIDC_PICT1は入っているのですが

見間違いしていました、、、、(-_-;)

デフオルテでIDC_STATICをIDC_PICT1と見間違いしていました。。。m(__)m



16:hori
08/04/17 06:13:11

問題解決。。。ヨーソロー。。。^^

17:デフォルトの名無しさん
08/04/17 11:28:46
char str[100]="ABC";
CString cstr=(CString)str;

テンパってるときに書いたコードなんだけど
エラーにならないのはなんで?一時のCStringインスタンスが生成されて
cstrにコピーされたっていう解釈でいいの?

18:デフォルトの名無しさん
08/04/17 11:43:27
>>17
ん。型変換コンストラクタ (CString::CString(LPCTSTR)) が呼ばれてる。

19:デフォルトの名無しさん
08/04/19 00:46:10
コピーコンストラクタだねぇ

20:デフォルトの名無しさん
08/04/19 01:11:25
VB6から移ってきたんだけどさ、MFCアプリのメモリ使用量ってバカでかくね?
一行もコード書かずにコンパイルしたプログラムが、6.3MBもメモリ食ってるし。
VBより酷い。なんかいきなり嫌になってきた。
MFC使わずにしこしこCreateWindowとかやった方がいいのか?

21:デフォルトの名無しさん
08/04/19 01:25:27
リリースビルドして出来た.exeを走らせてみればいい

22:デフォルトの名無しさん
08/04/19 01:28:03
>>21
リリースビルドしてもexeファイルサイズが小さくなるだけで、メモリ使用量はほとんど変わらないよ。

23:デフォルトの名無しさん
08/04/19 01:32:34
debug newじゃなくなる分多少はましにならないかな?

24:デフォルトの名無しさん
08/04/19 01:36:26
デバッグ版はメモリの前後にバッファオーバーフロー検出用の領域仕込んだりするが、
まあ微量っちゃ微量だな。
どうせ動的に確保できるメモリってあるブロック単位になっちゃうし。
スタック使用量は明らかに増えるが、
どうせスタックサイズはリリースかどうかで変える訳でもないし。

25:デフォルトの名無しさん
08/04/19 11:50:25
MFCは作成時点で既にいくつも機能を取り込むからなあ。
実装していくうちに、VB6もMFCも殆ど変わらなくなるんじゃね?
てか、.NETでなくてわざわざMFCに来たんだか。
既存のC/C++のライブラリでどうこうしたいなら非常にお勧めだが、
逆に、そうでないなら全くやる理由がない。

26:デフォルトの名無しさん
08/04/19 15:19:12
>>25
.netは金取る製品を作るための開発環境じゃないから。
あれはサンデープログラマのお勉強用。
作るのは楽だけど、起動が遅くて動作もモッサリしてるのでダメ。

27:デフォルトの名無しさん
08/04/19 17:34:54
それは作り方が悪いだけだと思います

28:デフォルトの名無しさん
08/04/19 23:17:40
よく知らないけど起動ごとに機械語解釈通してしまう可能性があるから遅い、らしいけど どうにかなりそうなのにね ダメなんかな

29:デフォルトの名無しさん
08/04/20 01:55:44
x86のMFCをWOW64上で動かすときと、
CPU対象がAnyでJITコンパイル済みの.NET(WinFormあるいはWPF)
どっちが速いんだろ。

もっとも構造や機能がまるで違うものを単純比較しても意味ないけど。


30:hori
08/04/21 14:05:54


OS XPに”Visual C++ 6.0 Professional”をインストールしたら  

まずい、、、でしょうか?  ^^;

31:デフォルトの名無しさん
08/04/21 18:06:27
^^;

32:hori
08/04/22 00:55:35

ぐぐって見ました。

、、、、やはり、、。。^^;


33:デフォルトの名無しさん
08/04/23 02:19:41
はいはい

34:デフォルトの名無しさん
08/05/04 21:57:35
ダイアログベースのアプリを作成しています。
リソースエディタにて複数のダイアログの画面を作成し、
任意のタイミングで表示されるダイアログを切り替える機能を実装したいです。

具体的には、IDD_DIALOG1とIDD_DIALOG2という画面を作成し、
アプリ起動時はIDD_DIALOG1が表示されるのですが
指定したチェックボックスの状態を有効にすると
画面がIDD_DIALOG1からIDD_DIALOG2に切り替わる、
といった動作を想定しています。
何か方法はありませんでしょうか。
ちなみに開発環境はVC++6.0@Win2kです。

35:デフォルトの名無しさん
08/05/04 22:04:39
チェックボックスイベントでDialog1を通常終了させて呼び出し元(WinApp派生のやつあたり)がDialog2を呼び出せばよいのでは。
Dialog1の状態パラメータ等を取りたいならDoModalオーバーライドの引数として&参照で構造体バッファ渡すなり
単純な数値だけ欲しいならDoModalの返値としてIDOK等ではないものを返せばいいし。

とりあえずフレーム+ビューにしろダイアログにしろWinApp派生から呼ばれてるから
そいつに管理させればカンタンである

36:デフォルトの名無しさん
08/05/04 22:31:54
>>35
レスありがとうございます。
つまり、イメージ的にはDialog1とDialog2それぞれ別のプログラムを作って、
プログラム終了時にお互いを呼び出す、というイメージでしょうか。

37:デフォルトの名無しさん
08/05/04 23:01:19
お互い、だと

38:デフォルトの名無しさん
08/05/04 23:02:32
お互い、だとDialog1と2が相互に呼び出し合うみたいに聞こえるけど
Dialogオブジェクトを生成してDoModalするのはあくまでAppのメインさんね

39:デフォルトの名無しさん
08/05/05 00:06:43
タブコントロールを使ってページを切り替えるようにした方が良いんじゃないかなあ。
チェックボックスでダイアログ自体が入れ替わるUIは、一寸前衛的すぎる気がする。

40:デフォルトの名無しさん
08/05/05 09:13:27
しょちゅう切り替えるんならタブが便利かもしれないけど
初心者モード、エキスパートモードみたいに
たまにしか切り替えない場合はタブは邪魔なだけ

41:デフォルトの名無しさん
08/05/05 09:44:24
>>39
自分もチェックボックスで画面が変わるというのは標準的ではないと思う。

やりたいことがよく分からないけど、チェックボックスの代わりにボタンじゃあかんの?
その方が標準的と思う。

42:41
08/05/05 09:54:03
あっ、もちろんタブで問題なければタブの方がいいと思うけど。

>>36
別のプログラムではないよ。
35、38は1つのプログラム内でWinApp(アプリ管理クラス)が切り替えをする案。

43:41
08/05/05 10:15:22
ちょっと訂正
×WinApp(アプリ管理クラス)が
○CWinAppクラスの派生クラス(C+プロジェクト名+Appクラス)

C+プロジェクト名+App.cppの下のほうにあるDoModalの辺りで処理するという話っす


44:デフォルトの名無しさん
08/05/06 13:10:43
コントロールの無い親ダイアログ(DoModal)に、
子ダイアログDialog1,Dialog2(Create)を貼り付ける

45:デフォルトの名無しさん
08/05/06 15:52:44
タブコントロール部分無しプロパティシート(&リソース定義済みページ複数)という荒技もある

46:デフォルトの名無しさん
08/05/07 10:40:27
AfxBeginThreadで作成したワーカースレッドから別のプログラムを呼び出しています。
このプログラムにはハンドルリークが有ることが分かっていますが、その場合呼び出し
元のプログラム(スレッドを作成したプログラム)でハンドルが増加し続けたりするのでしょうか。

47:デフォルトの名無しさん
08/05/07 10:48:05
>>46
いいえ、それだけなら「別のプログラム」のハンドルがリークするだけで「元のプログラム」のハンドルはリークしません。
勿論、適切なプログラムであるとの前提ですが。
# ありがちなのは、スレッドハンドルをクローズし忘れているケースですが……
## そもそもなんでCreateProcessを使わないのかとか、TaskManagerでハンドルの数を観測しろとか。

48:デフォルトの名無しさん
08/05/09 00:28:01
複数のダイアログを作成し、お互いのクラスが保持しているメンバ変数や関数を
使いたい場合は「〜App」のメンバ変数にクラスのオブジェクトを作成するのが普通ですか?

例えば、CDialog1、CDialog2と言うダイアログとクラスを作成し、
CDialog2からCDialog1のメンバ変数と関数を使いたいのですが。

49:デフォルトの名無しさん
08/05/09 02:57:24
Appのメンバ変数としてDialog派生クラスのオブジェクト、あるいは動的にnewしたものを保持するためのポインタを持っておいて
Appのインラインメンバ関数として「Dialog派生クラスのポインタ(あるいは参照)だけくれる関数」を作ればよいのでは。

50:デフォルトの名無しさん
08/05/09 13:29:14
publicじゃだめなの?

51:デフォルトの名無しさん
08/05/09 20:47:10
そもそも自分ならそういう設計は避ける。

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

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

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

53:デフォルトの名無しさん
08/05/11 03:03:29
つ CMDIChildWnd::MDIMaximize

54:52
08/05/11 03:37:32
>>53

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

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

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

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

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

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

56:デフォルトの名無しさん
08/05/11 16:37:55
プロパティシートかな

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

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

59:55
08/05/11 19:35:03
レスありがとうございます。
色々なアプローチの仕方があるのですね。

60:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/14 18:37:51
実行出来たらそれていんじゃね?

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

63:デフォルトの名無しさん
08/05/15 16:22:21
別にどっちでもいいんですが。。

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

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

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

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

64:「んですが」なくても読める罠
08/05/15 16:29:21
>>63
--
        別にどっちでもいい
んですが。。

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

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

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

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

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

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

67:デフォルトの名無しさん
08/05/15 18:25:12
うんこ♥

68:デフォルトの名無しさん
08/05/16 00:57:00
>>63
そういうのはマ板で聞け

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

70:デフォルトの名無しさん
08/05/17 16:25:26
OnClose

71:デフォルトの名無しさん
08/05/17 16:59:03
>>69
MainFrameでOnClose

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

73:あは〜ん
08/05/19 18:54:12
あは〜ん

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

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

75:デフォルトの名無しさん
08/05/24 18:10:48
>>74
このへん?
CMFCColorButton


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

77:デフォルトの名無しさん
08/05/25 08:32:41
>>74

これでよい?

URLリンク(www.kumei.ne.jp)

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

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

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

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

80:77
08/05/25 14:22:21
失礼。CMFCColorButton は2008にしかないってことでしたか。

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


81:デフォルトの名無しさん
08/05/25 16:58:27
エクセルのはただのツールバーだろ

82:74
08/05/25 19:22:25
>>77
レスありがとうございます。
形状的にはそうするのが一番形になるような気がします。

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

83:デフォルトの名無しさん
08/05/25 19:31:31
URLリンク(www.codeproject.com)
これ参考にすれば?

84:デフォルトの名無しさん
08/05/25 20:14:33
>>82
ツールバーの中にコンボボックスがあるんだろ。


85:74
08/05/25 20:22:12
>>83
レスありがとうございます。

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




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

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

88:デフォルトの名無しさん
08/05/26 14:13:22
デバッグモードだと
_DEBUGが定義されてるように

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

89:デフォルトの名無しさん
08/05/26 19:08:44
_MFC_VER

90:デフォルトの名無しさん
08/05/27 01:54:21
VC6、MFC、ダイアログベース

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

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



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

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

93:デフォルトの名無しさん
08/05/27 11:00:31
OnPaint を理解してないと思われ

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

95:デフォルトの名無しさん
08/05/29 09:35:55
>>94
URLリンク(msdn.microsoft.com)
ふつーにMSDNライブラリでどーぞ

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

97:デフォルトの名無しさん
08/05/31 11:58:38
メッセージが来てないだけだろ

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

99:デフォルトの名無しさん
08/05/31 14:26:08
そもそもどんなイベントが欲しいんだ?

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


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

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

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

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

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

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

104:デフォルトの名無しさん
08/05/31 16:12:07
>>103

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

感謝

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

106:デフォルトの名無しさん
08/05/31 16:20:19
ユーザー定義メッセージ あたりでググるとよい。

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

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

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

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

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

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

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

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

参考
URLリンク(orangeknowledge.jpn.org)

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

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


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

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

114:デフォルトの名無しさん
08/06/04 23:41:51
質問です。

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

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

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

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

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

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

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

119:デフォルトの名無しさん
08/06/05 00:31:41
なんという恥ずかしいレス

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

121:デフォルトの名無しさん
08/06/05 09:20:58
動画再生ぐらい余裕でできるだろ

122:デフォルトの名無しさん
08/06/05 16:27:10
>>117
Dlgs.h の中の edt1 とかの値が使われている。

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


 



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


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

126:デフォルトの名無しさん
08/06/05 21:08:00
あってると思うけどな。

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

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

129:デフォルトの名無しさん
08/06/06 20:29:32
とおらないんじゃないだろうか。

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

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

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

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


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

132:デフォルトの名無しさん
08/06/06 23:10:21
メニューが二段とかの例外を気にしないならAdjustWindowRect

133:デフォルトの名無しさん
08/06/07 00:14:28
>>131, 132

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

134:デフォルトの名無しさん
08/06/07 01:51:10
そのテのはネットで結構あった気がする

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

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

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

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

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

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


139:デフォルトの名無しさん
08/06/08 14:19:18
>>137

隠蔽されすぎてるのかw

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

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


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

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

142:デフォルトの名無しさん
08/06/08 14:44:17
みんなありがとう。

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

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

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

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

145:デフォルトの名無しさん
08/06/10 14:29:46
インストーラ作れよ

146:デフォルトの名無しさん
08/06/10 14:40:41
>>145
作り方教えてください。

147:デフォルトの名無しさん
08/06/10 14:44:04
ヘルプを見よ

148:デフォルトの名無しさん
08/06/10 14:46:54
これをダウンロードして実行しろ

URLリンク(www.microsoft.com)

149:デフォルトの名無しさん
08/06/10 18:29:14
>>144
URLリンク(rararahp.cool.ne.jp)
VS2005にもスタティックリンク出来ないグレードあるんだっけ?

150:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/06/11 03:25:31
>>150
>解決方法がわかれば教えていただけませんか

>Please use the /MD switch for _AFXDLL builds

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

153:デフォルトの名無しさん
08/06/12 01:17:16
何とかって何?

154:デフォルトの名無しさん
08/06/12 02:24:33
改行文字で止まるのに1000行とはなんぞや

155:152
08/06/12 07:05:45
>>153 154

今ソース、環境が手元に無いので詳細は今日帰宅したらまた書きます。

156:デフォルトの名無しさん
08/06/12 09:46:49
CStringの上限は2GBぐらいだろ

157:デフォルトの名無しさん
08/06/12 14:47:45
m_timerID = SetTimer;

OnTimerでInvalidate(FALSE);

アニメが終わったらKillTimer(m_timerID);

ピクチャーコントロールにビットマップを表示してるダイアログで
これでアニメーションをしてると、
タイマー開始するたびに4Kずつ使用メモリが増えていきます
なぜでしょうか

158:デフォルトの名無しさん
08/06/12 15:31:49
知るかよ
お前んとこのバグに決まってるだろ

159:デフォルトの名無しさん
08/06/12 18:36:16
>>157
m_timerIDって解放しなくてよかったっけ。
時計の電池を抜いて止めても時計の本体は残っている状態のような。

160:デフォルトの名無しさん
08/06/12 18:43:37
>159はキチガイだから無視で

161:デフォルトの名無しさん
08/06/12 22:29:14
CStaticにCBitmapの画像を貼り付けたいのですが、リソースからは上手くいっても
メモリ上からは失敗(何も描画されない)します。
どうするのが適切なのか、教えてください。


//// リソース読み込み
CBitmap m_bmp; // メンバ変数

m_bmp.LoadBitmap(IDB_BITMAP);

CStatic *pPicture = (CStatic *)GetDlgItem(IDC_STATIC_IMAGE);
pPicture->SetBitmap((HBITMAP)m_bmp);


//// メモリ読み込み
CBitmap m_bmp; // メンバ変数
BYTE m_buf[300]; // メンバ変数 bmpの各ピクセルの色データ配列

m_bmp.CreateBitmap(10, 10, 1, 24, m_buf);

CStatic *pPicture = (CStatic *)GetDlgItem(IDC_STATIC_IMAGE);
pPicture->SetBitmap((HBITMAP)m_bmp);

162:デフォルトの名無しさん
08/06/12 22:51:05
水平方向のバイト数が4の倍数じゃないから?
m_buf[(10*24/8+7)&~3*10];


163:デフォルトの名無しさん
08/06/12 22:56:00
>>162
元のは横240*縦240*3バイトだったのを編集したときに4バイトアライメントを失念してました。
すみません。
CreateBitmapでいけることはいけるんでしょうか?

164:デフォルトの名無しさん
08/06/13 00:02:12
m_bmpのデストラクタで破棄されたらそれまで。描画されなくて当然。
Windowsのハンドルは参照カウンタで管理されているわけではないので注意しる。

165:デフォルトの名無しさん
08/06/13 00:03:10
その辺まともに理解してないと、メモリリークとかもやらかしそうだな

166:161
08/06/13 19:45:30
自己解決。
リソース読みのm_bmpを使い回して、32bppに変換したデータをSetBitmapBitsすることで表示されるようになった。

167:デフォルトの名無しさん
08/06/13 21:36:42
どのへんが自己?w

168:デフォルトの名無しさん
08/06/13 22:22:12
あえてWin16時代の名残りであるSetBitmapBitsを使うところが渋いな。
まあ、直接イメージを弄るなら普通はCreateDIBSectionを使う。
MFCならCImageだな。

169:デフォルトの名無しさん
08/06/14 12:20:40
MFC に CImage なんかあるかよ


170:デフォルトの名無しさん
08/06/14 12:28:42
あるある

171:デフォルトの名無しさん
08/06/14 12:57:23
VC++6.0で時間が止まってる人なんだろうな

172:デフォルトの名無しさん
08/06/14 13:15:25
MFC じゃなくて ATL だろが

173:デフォルトの名無しさん
08/06/14 13:29:08
CImage の中身は GDI+


174:デフォルトの名無しさん
08/06/14 13:35:47
GDI の BitBlt はハードウェアを使うので早い
GDI+ の BitBlt はソフトウェアのみで処理するので遅い



175:デフォルトの名無しさん
08/06/14 16:29:18
Vistaではどちらもソフトウェアになるけどな

176:デフォルトの名無しさん
08/06/14 16:31:13
そういえばGDI専用のスレってないんだな
この手の話するならここかWin32になるのか?

177:デフォルトの名無しさん
08/06/15 12:48:15
FTP転送経過情報(転送サイズ)がわかるFTPクライアントを作成したいです。
FTP転送状況を取得するにはOnStatusCallbackをオーバーライド
する、とのことだったのでマニュアルを見たのですが、
▼▼▼
OnStatusCallback
 (DWORD dwContext,
  DWORD dwInternetStatus,
  LPVOID lpvStatusInformation,
  DWORD dwStatusInformationLength)

dwInternetStatus
コールバックの理由を示すステータス コード。指定できる値については、後の「解説」を参照してください。

lpvStatusInformation
このコールバックに関する情報を格納しているバッファへのポインタ。

▲▲▲

上記の引数によりファイルの転送済みサイズとかが取得できるように
なるのかなと思ったのですが、マニュアルにはそれらしき記述はありません
でした。

OnStatusCallbackの中でどのような処理をすれば転送済みファイルサイズとか
取得できるのでしょうか。

ご教示のほど、よろしくお願いします。

178:デフォルトの名無しさん
08/06/15 14:01:26
>上記の引数によりファイルの転送済みサイズとかが取得できるように
>なるのかなと思ったのですが

なんでそんなこと思ったの?

179:デフォルトの名無しさん
08/06/15 15:03:42
FTP転送状況を取得するには、
OnStatusCallbackをオーバーライドして、FTP転送状況を提供
してやるってことじゃねえの?

でなきゃ、オーバーライドする意味ないし。


180:デフォルトの名無しさん
08/06/15 15:21:41
転送状況を取得したいのは判る。MSDNにも取得できると書いてある。
しかし、転送済みサイズが取得できるとはどこにも書いてないし、そもそもなんでそんな発想できるのかと。
# 要は、私もOnStatusCallbackで転送済みサイズが取得*できない*とは確認していないのだけどね。

181:デフォルトの名無しさん
08/06/15 16:21:11
転送状況のステータスはとれても転送済みサイズは取れないってことですかね。
FTPコマンドとかフリーのFTPソフトで転送経過(%)が表示されているのってどうやってるんでしょうね。

182:デフォルトの名無しさん
08/06/15 16:32:10
適当なバイト単位で読む

183:デフォルトの名無しさん
08/06/15 17:12:09
>>181
そりゃぁあんた、FTPクライアントがMFCを使う義理なんてないからねぇ。

184:デフォルトの名無しさん
08/06/18 21:08:44
ダイアログについて質問です。
ダイアログの中のstatic textを変更したいのですが、SetDlgItemTextを呼ぶとassertで止まります。
assertはm_hWnd=NULLが原因です。
しかしCDialogの中のCWnd周りは勝手にやっているので、nullは仕様かと思われます。
m_hWndを必要としない、static text変更の命令はどれに当たるのでしょうか?
またはMFCはそういうことが出来ない仕様なのでしょうか?

185:デフォルトの名無しさん
08/06/18 21:19:31
いつもは GetDlgItem(hoge)->SetWindowText() でやってるな
ちなみに、それを呼び出しているタイミングは?
OnInitDialog()とか?

186:デフォルトの名無しさん
08/06/18 21:42:29
とりあえずメンバ変数に入れておき、OnInitDialogかDoDataExchange辺りで
生成されたウィンドウに対して設定するというのが一般的なやり方。

187:デフォルトの名無しさん
08/06/18 22:33:08
VC7のプログレスバーでマーキースタイルを実装する方法は有りませんか?
VC8と9は重すぎて使用に耐えません。。。

188:デフォルトの名無しさん
08/06/18 22:38:00
VC2008SP1ってリリース予定っていつくらいになるか発表してましたっけ?
夏くらいとも聞いた気もするけど自信がない

189:デフォルトの名無しさん
08/06/19 00:41:07
>>187
CProgressCtrl::Createで直接スタイル指定して作れないか?
リソーススクリプトを直接編集してもいいけど、IDEで弄ったらたぶん消える。

190:デフォルトの名無しさん
08/06/19 02:41:15
ダイアログベースで終了時の処理を行いたいのですが、
OnDestroy()が自動生成されないのですが、これって自分で作らないとだめなんですか?
ためしに自分で
virtural void OnDestroy()でオーバーライドしてみたんですが、
OnDestory()内にコード書いても動作してくれません。

191:デフォルトの名無しさん
08/06/19 06:08:33
OnDestoryはちゃんと呼ばれる

192:184
08/06/19 15:45:20
>>185
試してみたのですが、GetDlgItemも内部でm_hWndがnullだとassertにヒットするので出来ませんでした。
呼び出すタイミングはOnInitDialogでやっています。
もうちょっとしたら別のとこでもやる予定ですが、今は初期値を入れているだけです。

>>186
設定をしようとすると、m_hWndがnullのため設定出来なくて困っています。
自前でダイアログを呼んで返り値のハンドルを保存しているならいいのですが、MFC側で隠蔽され何故か保存されていないため、どうしたらm_hWndに値を入れられるかというのが一番悩んでいるところです。

193:デフォルトの名無しさん
08/06/19 16:12:44
GetDlgItemで存在しないものを呼んでるんだろ

194:デフォルトの名無しさん
08/06/19 16:13:28
>>192
普通はちゃんと入っているよ
そもそもWM_INITDIALOGメッセージを送るのにもウィンドウハンドルは必要だろ?

195:デフォルトの名無しさん
08/06/19 16:40:33
土地を買う → 家を立てる → 家具を買う

いきなり家具を買われても困るだろ

196:デフォルトの名無しさん
08/06/19 17:25:59
>>192
>呼び出すタイミングはOnInitDialogでやっています。
が、CDialog::OnInitDialog を呼ぶ前でした、というオチを想像した。

197:デフォルトの名無しさん
08/06/19 18:53:57
たしかにそのタイミングだと、コントロールにメンバ変数を割り当ててあっても、
CDialog::OnInitDialog → UpdateData → DoDataExchange
が呼ばれる前だから、まだNULLの状態になるな。

198:デフォルトの名無しさん
08/06/19 19:37:07
OnInitDialog()でWM_APP_XXXメッセージを自分にポストして遅延処理する。

199:192
08/06/19 20:24:32
CDialog::OnInitDialogを呼ぶ前でした><
皆さんありがとうございます。

200:デフォルトの名無しさん
08/06/19 20:51:02
あほ

201:デフォルトの名無しさん
08/06/19 20:52:45
大体そんなことだろうとは思ってたw

202:デフォルトの名無しさん
08/06/20 00:03:25
>>190
message_mapにon_wm_destroy定義してある?
自分で記述しないで、どのバージョンか知らんがVSにまかせたら?

203:デフォルトの名無しさん
08/06/22 15:55:10
ドキュメント・ビューアーキテクチャを利用して常駐型アプリを作成したいと考えています。
内容を簡単に説明すると、一つのデータベース(自作)を参照する複数のビューがあり、
それらは同時に表示可能であるといったものです。

ただ、常駐型なのでタスクバーに表示されないようにしたいのと、外見上メインフレームの
みを非常時にしていのですが、メインフレームを非表示にすると、それのビューまでが非表
示になってしまいます。

メインフレームとビューの表示・非表示を個別で制御することはできないでしょうか?


204:デフォルトの名無しさん
08/06/22 16:29:29
>>203
メインフレーム以外のフレームつくればいいんでねえの?

205:デフォルトの名無しさん
08/06/22 17:15:03
子ウインドウは親にひっついてるから
独立したウインドウにして切り離すしかない

206:デフォルトの名無しさん
08/06/22 18:30:31
複数のダイアログで同じ内容のコントロールを使うときはどうすればいいんでしょうか?


207:デフォルトの名無しさん
08/06/22 19:13:16
>>206
複数のダイアログに同じ内容のコントロールを使うことで、何が問題となるのかわからん。

208:デフォルトの名無しさん
08/06/22 19:31:14
>>207

ダイアログを作るたびにコントロールの初期設定とかで同じ処理を何度もコピペして書いて、
修正するときは同じ部分を全部書き直すのが無駄な気がして、もっと楽にできる方法がないかと思って。

209:デフォルトの名無しさん
08/06/22 19:34:58
コモンダイアログ

210:デフォルトの名無しさん
08/06/22 19:53:38
>>208
"同じ内容のコントロール"を持ったダイアログを基底クラスとしてつくって、
そっから派生させたらどうだ?

211:デフォルトの名無しさん
08/06/22 20:24:30
VC8でマウスの右ボタンを押しながらツールバーのボタンを左クリックすると落ちるのですが解決方法はあるのでしょうか。
プロジェクトを作った直後にビルドし、ツールバーにある印刷ボタンなどを押すと落ちました。
自分で置いたツールバー(CToolBar)も同じ状態です。
今までのバージョンでは確認出来ないのですが、VC8では何か処理を噛まさないといけないのでしょうか。

212:デフォルトの名無しさん
08/06/22 20:52:25
プログラムに問題があったのに今まで偶然に動いてただけかもしれないけど
VC側のバグを疑ってるならサポートに聞くしかない

213:デフォルトの名無しさん
08/06/22 21:28:55
>>212
なるほど、そちらで聞いてみます。

214:デフォルトの名無しさん
08/06/22 22:25:38
>>210

その場合MESSAGE_MAP・DoDataExchangeのリソースIDはどうすれば良いでしょうか?


215:デフォルトの名無しさん
08/06/22 22:41:02
>>214
何を問題としているかわからん。

216:デフォルトの名無しさん
08/06/23 00:04:30
> 205
ということはCMDIFrameWndをそのまま使用して実現することは出来ないということでしょうか?



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

4352日前に更新/186 KB
担当:undef