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


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

■MFC相談室 mfc17d.dll■



1 名前:デフォルトの名無しさん mailto:sage [2006/11/21(火) 10:38:31 ]
Microsoft Foundation Classライブラリ専用スレです。

前スレ
■MFC相談室 mfc16d.dll■
pc8.2ch.net/test/read.cgi/tech/1146117893/

72 名前:62 [2006/11/30(木) 22:54:50 ]
とりあえずウィンドウをDLL側で生成して表示させることはできました
フレームとビューとドキュメントをCCreateContextで連結させるのに苦労しました
上手に表示されたときはとってもハッピーになりました

さて、申し訳ないですが本日も質問があります
それはビュー(CFormView)に張り付けたダイアログリソースについてです
なぜか分からないですが、呼び出しアプリケーション側のダイアログリソースに置き換わってしまいます
DLLのダイアログリソースが表示されません
Resource.hが怪しいと思っていますが、どうすれば解決できるのか分かりません
アドヴァイスを頂けませんか?

あと、昨日の質問が残っています
>>62の後半、メモリ開放についてです
CFormWndのインスタンスを持っているのはDLL側です
ユーザが閉じるボタンやAlt+F4でデストロイしたことを察知して2度デストロイやdeleteするのを防ぎたいです
大変にクリティカルな問題なのでとても悩んでいます
インターネット検索や書籍で解決策を探していますが、まだ解決には至っていません
アドヴァイスをお願いします

73 名前:デフォルトの名無しさん mailto:sage [2006/12/01(金) 00:14:31 ]
>>72
相変わらずFrameの位置が不明瞭です...

次の3つの内から一つを選択しなさい。
1.Exe側のCMainFrameにDLL側で作成したCFormViewを結合している
2.ExeとDLLにそれぞれFrame&Viewの対がある
3.その他

上段で上手に表示されたと書いてるけど、中段読むとFrameとViewの
結合に失敗してるし訳分からない。別な話?
下段CFormWndのbase class はCFormView or CFrameWnd ?

74 名前:72 [2006/12/01(金) 00:16:17 ]
>>73
すみません
選択肢1が該当します

75 名前:デフォルトの名無しさん [2006/12/01(金) 00:27:52 ]
dll内でnewしたインスタンスはdll内でdeleteしないといけないのでしょうか。


76 名前:デフォルトの名無しさん mailto:sage [2006/12/01(金) 00:49:13 ]
>>74
であれば、Viewをdeleteする必要はない。
FrameとViewが正しく結合されていれば、exe側Frameが閉じられる際に自動で削除される。
CView::PostNCDestroy()参照。

77 名前:デフォルトの名無しさん mailto:sage [2006/12/01(金) 01:11:51 ]
>>75
うん

78 名前:デフォルトの名無しさん mailto:sage [2006/12/01(金) 01:18:01 ]
>>75
例えば開発時に、EXEがReleaseでDLLがDebugだとすると。
メモリ管理のランタイムが別になるんで、EXEでnewしたメモリをDLLで開放しようとすると、
当然そんなメモリは管理してないから落ちてしまうと。

79 名前:デフォルトの名無しさん mailto:sage [2006/12/01(金) 01:27:38 ]
exe-dllで使用しているMFCのバージョンが同じで >>78の言うことに気をつけていれば
問題ないんじゃないの?
77は根拠を示すべし。

80 名前:デフォルトの名無しさん mailto:sage [2006/12/01(金) 06:53:15 ]
>>79
別のアプリで確保したメモリを別のアプリで解放できるか?って話しになるんじゃない?



81 名前:デフォルトの名無しさん mailto:sage [2006/12/01(金) 09:12:04 ]
この子は何をほざいているのだろう・・・

82 名前:デフォルトの名無しさん mailto:sage [2006/12/01(金) 10:26:11 ]
>>79
バージョンが同じでも、MFCをスタティックリンクしてるとダメだよ。

83 名前:デフォルトの名無しさん mailto:sage [2006/12/01(金) 14:28:49 ]
論点がばらけ過ぎてる

84 名前:55 mailto:sage [2006/12/01(金) 19:42:03 ]
>>71
そんな感じです。というより全く同じですね。
VC6ではやむを得ないと思います。

>>65-67
www.codeproject.com/docking/
www.codeguru.com/cpp/w-d/docking/
スクリーンショット見た感じ、↓のが参考になるかも。
www.codeguru.com/cpp/w-d/docking/article.php/c1447/
www.codeguru.com/cpp/w-d/docking/article.php/c1451/
www.codeproject.com/docking/sizecbar.asp

>>62&>>72
どっかのスレで参考になる文献はないかと聞かれたから
URL貼ったんだが全く読んでないんだな。
考えられる原因の一つは、delete this;して自殺するクラスがあるということ。
CFrameWndやCViewがまさにそういうクラスなのでその可能性があるんじゃない?
76も答えてくれてる通り。


85 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 16:41:12 ]
VC++.NET2003で開発しています。

MDIから別プロジェクトの画面を子画面として表示させたいのですが、
どういう風に作ればいいのでしょうか。

86 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 17:26:41 ]
またMDIか

87 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 17:32:47 ]
このまえ質問してたやつはどこに消えた?

88 名前:49 [2006/12/03(日) 13:05:02 ]
>>84
やはりこういう派生になるのですね。安心しました。
VC7でも同じ問題が発生するようで、VC2005じゃないと直ってないようです。

89 名前:40 mailto:sage [2006/12/03(日) 16:05:47 ]
>CViewのメニューなりからのイベントでCFormViewを開く時は、
の続きで、Viewの差し替えは、Viewクラスでのメニューイベントハンドラーで
CWinApp* myapp=AfxGetApp();
CDocTemplate* mydoctemp=(CDocTemplate*)RUNTIME_CLASS(CDocTemplate);
POSITION myps=myapp->GetFirstDocTemplatePosition();
mydoctemp=myapp->GetNextDocTemplate(myps);//テンプレートリストの1番目を選択するイテレータ
mydoctemp=myapp->GetNextDocTemplate(myps);//テンプレートリストの2番目を選択するイテレータ
mydoctemp->OpenDocumentFile(NULL);
でドキュメントテンプレートに入れられた2番目のViewを新規子ウィンドウで表示できたよ

90 名前:デフォルトの名無しさん [2006/12/04(月) 13:59:24 ]
ダイアログにタブコントロールを乗せ、複数のリストビューの表示をタブで切り替える
ソフトを書いていたんですが、タブに重ねたリストビューの列サイズを操作すると
リストビューの表示が乱れる現象が出てしまいました。

www.uploda.org/uporg604606.zip.html
サンプルプロジェクトです。VC2005で作りました。
www.uploda.org/uporg604603.gif
1つめのリスト。こういう感じで一番右の列境界をタブの外へ右にドラッグすると
スクロールバーが現れます。通常の動作です。
www.uploda.org/uporg604604.gif
2つめのリスト。1つ目と同じく一番右の列境界を右へドラッグするとスクロールバー
が現れるタイミングで表示が乱れます。

どうして2つ目のリストでのみ表示が乱れるのか悩んだ結果、ダイアログのリソース
定義ファイル中の、
> CONTROL "",IDC_LIST1,"SysListView32",LVS_REPORT | (以下略)
> CONTROL "",IDC_TAB1,"SysTabControl32",0x0,7,7,173,186
> CONTROL "",IDC_LIST2,"SysListView32",LVS_REPORT | (以下略)

> CONTROL "",IDC_LIST1,"SysListView32",LVS_REPORT | (以下略)
> CONTROL "",IDC_LIST2,"SysListView32",LVS_REPORT | (以下略)
> CONTROL "",IDC_TAB1,"SysTabControl32",0x0,7,7,173,186
と順番を入れ替えると表示が乱れなくなりました。逆に、タブの行をリストの先頭
に持っていくと今度は両方のタブでリストの表示が乱れるようになります。

結果オーライといえばそれまでなんですが、どうしてこれで問題が解決するのか納得が
いきません。リソース中の定義順が何に影響しているのでしょうか?



91 名前:デフォルトの名無しさん mailto:sage [2006/12/04(月) 14:05:47 ]
普通はプロパティシート

92 名前:デフォルトの名無しさん mailto:sage [2006/12/04(月) 14:46:26 ]
>>90
Zオーダーの問題じゃね?

93 名前:デフォルトの名無しさん [2006/12/04(月) 16:30:03 ]
Zオーダーの問題

94 名前:90 mailto:sage [2006/12/04(月) 22:53:30 ]
確かにZオーダの問題でした。どうもありがとうございます。

リソース定義の順番がZオーダになるというのが将来にわたって保障された
仕様なのかどうかが疑問なので、コントロールを重ねる場合のZオーダは
きちんとSetWindowPosでコード中に書いておくことにします。

95 名前:デフォルトの名無しさん [2006/12/06(水) 06:13:15 ]
VC6.0のMFCで作ったプログラムを実行したときにレジストリへ一切書き込まないようにしたいのですが
HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam\MUICache
に VS_VERSION_INFO の FileDescription の値が書き込まれてしまいます。
FileDescription を消しても実行ファイル名が変わりに書き込まれてしまいます。
どうしたら書き込まないように出来るでしょうか?

96 名前:デフォルトの名無しさん mailto:sage [2006/12/06(水) 10:01:56 ]
そのキーを書込み禁止にすると(・∀・)イイヨ!!

97 名前:デフォルトの名無しさん mailto:sage [2006/12/06(水) 23:59:45 ]
CFtpConnectionを使ってFTPクライアントを実験的に作ってみたのですが、
PASVモードを使ったときにどのポートが使われているかというのは
どうやって取得すれば良いでしょうか?

98 名前:デフォルトの名無しさん [2006/12/12(火) 21:25:29 ]
CListCtrl (以下、リスト)をレポート形式で使用しているのですが、
このリストの特定セルだけ背景色を変えるにはどうしたら良いですか?
ステータス値に応じてセルの色が変わるような機能を実現したいのですが……

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

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

100 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 21:45:51 ]
>>98
カスタムドローじゃねぇの?

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



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

102 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 21:55:03 ]
>>101
www.google.co.jp/search?hl=ja&safe=off&c2coff=1&q=%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%83%89%E3%83%AD%E3%83%BC+CListCtrl&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja

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

104 名前:99 mailto:sage [2006/12/12(火) 22:00:20 ]
>>100
レスありがとうございます。

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

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



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

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


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

108 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 22:38:02 ]
それはえがった

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

CMainFrame::recalcLayout() あたり?


110 名前:デフォルトの名無しさん mailto:sage [2006/12/13(水) 17:02:48 ]
またお前か



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

112 名前:デフォルトの名無しさん mailto:sage [2006/12/13(水) 19:32:03 ]
相談室だから質問しています

113 名前:デフォルトの名無しさん mailto:sage [2006/12/13(水) 19:34:02 ]
>>112
相談しようぜ。
MDIの基本的な部分はOKなん?

114 名前:デフォルトの名無しさん mailto:sage [2006/12/13(水) 19:52:36 ]
ここは自分でできもしないことを相談する所か?

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

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

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

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

119 名前:デフォルトの名無しさん mailto:sage [2006/12/13(水) 21:42:18 ]
CPropertySheet フォント で検索

120 名前:デフォルトの名無しさん mailto:sage [2006/12/13(水) 21:44:25 ]
MDIの基本的な部分はたぶんオケ

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



121 名前:デフォルトの名無しさん mailto:sage [2006/12/13(水) 21:46:33 ]
>>119
あ、やっぱ、手動なんだw

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

123 名前:デフォルトの名無しさん mailto:sage [2006/12/13(水) 21:57:52 ]
>まずは、CMainFrame に MDIタブ用の CDocBar を配置したいのだが、

MFCにCDocBarなんてあったけ?

124 名前:デフォルトの名無しさん mailto:sage [2006/12/13(水) 22:20:15 ]
>>123
すまん CDockBar だった

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

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

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

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

128 名前:デフォルトの名無しさん mailto:sage [2006/12/13(水) 23:47:28 ]
何のためにソースがついてるんだろ

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

130 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 01:57:25 ]
なんかMFC使うほうがかえって面倒くさそうだ



131 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 03:22:11 ]
馬鹿じゃねぇの

132 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 07:02:17 ]
>>130
そういうときもある。

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

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

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

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

134 名前:デフォルトの名無しさん [2006/12/14(木) 10:51:38 ]
  ☆ チン

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

135 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 11:22:30 ]
ソースを読めばわかることだから省略

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

137 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 13:05:50 ]
MDIタブの何を書こうかと迷ってたんだ?

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

139 名前:デフォルトの名無しさん mailto:sage [2006/12/16(土) 17:46:32 ]
>>138
基本クラスのメンバEnableWindowで

140 名前:デフォルトの名無しさん mailto:sage [2006/12/16(土) 18:12:46 ]
なるほど…
やってみます。ありがとうございました。



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

142 名前:デフォルトの名無しさん [2006/12/17(日) 19:21:10 ]
2つ目の質問です

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

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

143 名前:デフォルトの名無しさん [2006/12/17(日) 19:25:35 ]
3つ目の質問です

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

144 名前:デフォルトの名無しさん [2006/12/17(日) 19:29:21 ]
最後の質問です

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

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





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

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

146 名前:デフォルトの名無しさん mailto:sage [2006/12/17(日) 19:45:00 ]
MDI野郎の質問は意味不明

147 名前:デフォルトの名無しさん mailto:sage [2006/12/17(日) 19:51:36 ]
具体的にはOnSizeとかOnSizingとかOnExitSizeMoveとか用途に合わせて使うと吉。

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

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

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



151 名前:デフォルトの名無しさん mailto:sage [2006/12/17(日) 21:43:34 ]
たしかにこうなんもかんもわからんようだとどうしようもないなw

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

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

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

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

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

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

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

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

157 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 17:35:59 ]
配列に直接描画すればいいんじゃない?

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

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

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

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

159 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 17:42:35 ]
1024*768*30000=230億強
それは遅いだろ...

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

結論: 無理



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

162 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 18:01:51 ]
えっと 最後に一回だけ描画してます。

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

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

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

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


163 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 18:13:41 ]
SetPixelをループに入れてる時点で一回だけじゃないじゃん。

164 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 18:17:04 ]
GDIにじゃなくてメモリに対して書くようにすればいいんじゃないの?

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

その後BMPに変換すれば?

166 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 18:54:30 ]
正直MFCと全然関係ない

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

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

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

>>170 スレ違い房乙

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



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

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

GDI+を使っているならこれで速くなるっぽいことが書いてある。
junki.lix.jp/csgr/002ColorDataAccess1.htm

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


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

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

175 名前:153 mailto:sage [2006/12/19(火) 14:54:29 ]
>>172
VC++ のMFCです。
>>174
そうですよね。
いい機会ですし勉強して使えるようにしたいと思います。

176 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 16:20:57 ]
ほとんどMFCと関係ない

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

178 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 23:36:11 ]
mfcにMDIタブなんてものは存在しない

179 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 23:58:47 ]
イヤです

180 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 10:36:29 ]
>>178
存在しないから作るんですよ



181 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 10:49:58 ]
じゃあmfc関係無いのでは

182 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 11:18:15 ]
>>141 LVN_ITEMCHANGING
>>142 LVITEM::iIndent'
>>143 WS_CLIPSIBLINGS

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

と混じれ酢してみる

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

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

186 名前:デフォルトの名無しさん mailto:sage [2006/12/21(木) 01:17:54 ]
ダメです

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

188 名前:デフォルトの名無しさん mailto:sage [2006/12/23(土) 01:28:04 ]
イヤです

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

190 名前:デフォルトの名無しさん mailto:sage [2006/12/23(土) 14:51:25 ]
誤爆?
ここはライブラリの専用スレですよ



191 名前:デフォルトの名無しさん mailto:sage [2006/12/23(土) 14:55:43 ]
>>190
スイマセン、他スレで聞いてきます。

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

193 名前:デフォルトの名無しさん mailto:sage [2006/12/23(土) 15:35:00 ]
WS_HSCROLLやWS_VSCROLLスタイルが付いてるか調べればいいんじゃないかな

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

195 名前:デフォルトの名無しさん mailto:sage [2006/12/23(土) 15:49:27 ]
MSDN見ろよ

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

197 名前:デフォルトの名無しさん mailto:sage [2006/12/23(土) 16:04:12 ]
ビット演算も知らんのか?

198 名前:デフォルトの名無しさん mailto:sage [2006/12/23(土) 16:07:05 ]
MFCの質問じゃない

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

200 名前:デフォルトの名無しさん mailto:sage [2006/12/23(土) 23:28:32 ]
MFCとは関係ないね>>199



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

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

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

203 名前:デフォルトの名無しさん mailto:sage [2006/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 名前:デフォルトの名無しさん mailto:sage [2006/12/25(月) 08:32:31 ]
Windowsの電卓の10進と16進の切り替えがそんな感じだな
あれは表に出ない親ウインドウがあってそこから2つのダイアログを切り替えてる
しまった、ここまで書いて全然MFCと関係ないのに気がついた

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

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

206 名前:デフォルトの名無しさん mailto:sage [2006/12/25(月) 20:24:54 ]
なんですぐMFCと関係無い方向に行くんだ?


207 名前:デフォルトの名無しさん mailto:sage [2006/12/25(月) 20:25:25 ]
はっ
おまいらちゃんとMFCがわかっているのか?

208 名前:デフォルトの名無しさん mailto:sage [2006/12/25(月) 21:03:39 ]
>>206
行くっつぅか元々>192からしてMFCと・・・

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

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



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

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


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

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

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

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

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

217 名前:デフォルトの名無しさん mailto:sage [2006/12/26(火) 09:35:12 ]
日本語でかかず、プログラムを示せや

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

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

220 名前:デフォルトの名無しさん mailto:sage [2006/12/26(火) 19:35:30 ]
普通に作ればいい



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

222 名前:デフォルトの名無しさん mailto:sage [2006/12/26(火) 21:20:18 ]
お前が作ったプログラム

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

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

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

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

226 名前:225 mailto:sage [2006/12/27(水) 18:57:47 ]
今はOnContextMenuに変えています

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

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

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

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


230 名前:デフォルトの名無しさん [2006/12/27(水) 19:37:15 ]
調べろカス



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

232 名前:225 mailto:sage [2006/12/28(木) 10:44:01 ]
>>228
NM_RCLICKで右クリックのイベントは取れました
右クリックしたときのアイテムの取得はどうすればいいのでしょうか?

233 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 11:20:58 ]
>>232
ttp://msdn2.microsoft.com/en-us/library/ms670614.aspx

234 名前:225 mailto:sage [2006/12/28(木) 11:25:06 ]
返答ありがとうございます
調べてみたら
CListCtrl::GetFirstSelectedItemPosition
で取れるようです

235 名前:225 mailto:sage [2006/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 mailto:sage [2006/12/28(木) 12:32:21 ]
自己解決しました
CMenu* pPopup = menu.GetSubMenu(0);
pPopup->TrackPopupMenu( TPM_LEFTALIGN | TPM_RIGHTBUTTON, posMouse.x, posMouse.y, this);

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

238 名前:225 mailto:sage [2006/12/28(木) 15:30:47 ]
ニートじゃないのに1週間も悩んでられるかよ
文句しか言えない無知は黙ってろ

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

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

240 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 16:46:34 ]
MFCと関係ない



241 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 16:49:19 ]
MFCで開発してますがVC++のほうで聞いたほうがよかったですか?

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

243 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 16:55:13 ]
UIスレッドはPostQuitでいいじゃん

244 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 17:00:28 ]
PostQuit?

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

246 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 17:14:10 ]
PostQuitMessageだろう

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

248 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 17:34:50 ]
UIスレッドなら

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

249 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 17:37:02 ]
なるほど
ありがとうございますやってみます

250 名前:デフォルトの名無しさん mailto:sage [2006/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 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 22:17:09 ]
エラーメッセージそのまんまじゃん

252 名前:250 mailto:sage [2006/12/28(木) 22:30:23 ]
>251

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

253 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 22:44:34 ]
相当古いよそれ

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

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

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

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


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

257 名前:デフォルトの名無しさん mailto:sage [2006/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 名前:デフォルトの名無しさん mailto:sage [2006/12/30(土) 02:20:50 ]
>表示はできたんですけど

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

259 名前:デフォルトの名無しさん mailto:sage [2006/12/30(土) 09:25:15 ]
こいつ思い出した
結果オーライ

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

260 名前:デフォルトの名無しさん [2006/12/30(土) 15:35:51 ]
MDIタブ age



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

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

262 名前:デフォルトの名無しさん mailto:sage [2006/12/30(土) 16:50:16 ]
ダイアログを終了する時にInitInstanceなのか?

263 名前:デフォルトの名無しさん mailto:sage [2006/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 名前:デフォルトの名無しさん mailto:sage [2007/01/01(月) 19:01:01 ]
>>260
ヒント:
void CMainFrame::RecalcLayout(BOOL bNotify)
CWnd::RepositionBars()

265 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 12:09:43 ]
Hello, Worldと同じ
文字列を表示するだけ

267 名前:265 mailto:sage [2007/01/03(水) 12:39:21 ]
>>266
レスありがとうございます。
試してみます。

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

269 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 18:40:16 ]
CButtonの基底クラスのメンバ関数

270 名前:268 mailto:sage [2007/01/03(水) 19:06:07 ]
>>269
ありがとうございます。
普通にSetWindowTextで変更できたのですね。
助かりました。



271 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 21:16:14 ]
Unicodeネタいい加減飽きた('A`)

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

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

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

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

277 名前:デフォルトの名無しさん mailto:sage [2007/01/04(木) 10:07:56 ]
275は仲間を見つけて喜んでいるようだ

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


279 名前:デフォルトの名無しさん mailto:sage [2007/01/04(木) 21:35:19 ]
奥さんが欲しいです

280 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/01/05(金) 13:58:48 ]
先生!なぜかループが一回も回りません!

282 名前:デフォルトの名無しさん mailto:sage [2007/01/06(土) 09:18:47 ]
>>281
femaleが空なんじゃないか?
つーか、FEMALE_MAXが0なのか。

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

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

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

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

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

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

286 名前:デフォルトの名無しさん mailto:sage [2007/01/06(土) 09:47:49 ]
>>281
しょうがない、female -> maleに置き換えるんだ。

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

288 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/01/06(土) 12:20:49 ]
あまりにもバグって気持ち悪くなってきた

290 名前:デフォルトの名無しさん mailto:sage [2007/01/06(土) 13:06:39 ]
VC6にはCImageないんだよな



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

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

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

293 名前:デフォルトの名無しさん mailto:sage [2007/01/07(日) 02:56:21 ]
MDI野郎の文体だね

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

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

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

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

297 名前:デフォルトの名無しさん [2007/01/08(月) 17:27:33 ]
追加で質問をさせてください

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

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

299 名前:デフォルトの名無しさん mailto:sage [2007/01/08(月) 18:30:36 ]
>>298
スレタイを2万5千回ぐらい嫁。

300 名前:デフォルトの名無しさん mailto:sage [2007/01/08(月) 18:36:21 ]
>>299
6時間も7時間もやってらんない。



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

302 名前:デフォルトの名無しさん mailto:sage [2007/01/08(月) 18:52:35 ]
>>298は的確だと思ったな

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

303 名前:デフォルトの名無しさん mailto:sage [2007/01/08(月) 18:52:59 ]
>>301
要求仕様のさばき方相談室じゃないんだよー

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

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

306 名前:デフォルトの名無しさん mailto:sage [2007/01/08(月) 22:19:30 ]
いや、>>295な。

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

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

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

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

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

309 名前:デフォルトの名無しさん mailto:sage [2007/01/09(火) 12:48:24 ]
初心者はIDC_STATICではまる

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



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

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

の認識でOKですか?

312 名前:デフォルトの名無しさん mailto:sage [2007/01/13(土) 23:58:14 ]
いや

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

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

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

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

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

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

314 名前:311 [2007/01/14(日) 00:12:54 ]
ありがとうございます

315 名前:スイ [2007/01/14(日) 00:22:26 BE:311467872-2BP(0)]
えっと、すいません、↓で討論?みたいなのをしているんですけど、
jbbs.livedoor.jp/bbs/read.cgi/game/19692/1168442603/
私は、真珠さんって少し変わった趣味を持った人だなー、とかは思いますけど、それだけで叩いたりするのってひどいと思いませんか?
私はあまりネットには詳しくないのでよくわからないんですが、なんかほなみんさんが2chとか言ってたので調べてみると見つかったので書き込んでみました。
このままだと真珠さんがかわいそうなんで、誰か真珠さん側についてほなみんさんを叩き返してくれませんか?私じゃ勝てそうにないので。

316 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 00:46:00 ]
↓ハイ、次の方どうぞ。

317 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 01:44:25 ]
えっと、これ本番ですか?


318 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 06:58:08 ]
>>313
なんで初心者に向かって何の前置きも無しに、あまりお目にかからないMDIのさらにレアな
複数のドキュメントタイプを持つアプリの解説を始めるのか、理解に苦しむよ。
VS2005でMFCアプリのデフォルトプロジェクトがMDIになったのは大失敗な気がする。

>>311
msdn2.microsoft.com/ja-jp/library/4x1xy43a(VS.80).aspx
この解説が分かりやすいよ。

319 名前:デフォルトの名無しさん [2007/01/14(日) 08:06:10 ]
>>318
ええ!?
>>313のどこをどう読めばが複数ドキュメントの解説がメインになってるの?
とんだ濡れ衣だ!勘違いなら謝ってよ!

320 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 08:06:57 ]
X複数ドキュメント
○複数ドキュメントタイプ



321 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 09:00:21 ]
>新規作成でできるもんがドキュメント+ビューを型にしたインスタンスであることって方が
>重要のような気がするがわかっているならOK。

SDIでは100%成り立たないし、単一のドキュメントタイプをもつMDIなら自明で重要性は感じられない。
これが重要な意味を持つのは複数のドキュメントタイプをもつMDIしかないように思った。
確信犯だと思ったんだが、気に障ったのなら謝るよ。漏れの知らない世界があるんだろうね。

322 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 10:00:53 ]
>>321
え?じゃあ、君の勝手な妄想で俺につっかかってきたの?
それとあきらかにその文章で複数ドキュメントタイプの説明なんて書いてないのにその態度はなんなの。
しかも、確信犯の使い方も間違ってるし。
こんなの業務でやったら大変だぜ。改めろよ。

323 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 10:23:18 ]
いや、改めなくていいから一切社会活動を行なわないでください。

324 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 10:27:37 ]
>VS2005でMFCアプリのデフォルトプロジェクトがMDIになったのは大失敗な気がする。
これ昔からだろ、2005ではじめて触ったのか

325 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 11:07:34 ]
SDI MDI
MFC以前からある

ドキュメント/ビュー
MFC2.0で追加された

326 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 12:59:31 ]
CFrameWndの派生クラスをドキュメントテンプレートから閉じるにはどうしたらいいでしょうか。
つまり class CHogeDocTemplate : public C[Single/Multi]DocTemplate
の OpenDocumentFile で特定のフレームを閉じる様にしたいのですが、
閉じる時に CFrameWnd::DestroyWindow や OnCloseDocument を使うと
OnClose が呼びだされないがこれで大丈夫なのか、
だめだとしたら正しい閉じ方はどうなのかを教えていただきたいのです。
よろしくお願いします。

327 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 13:14:37 ]
普通に閉じればいいじゃん

328 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 13:34:04 ]
CFrameWnd::OnCloseからDestroyWindow呼んでるから
OnClose が呼びだされないのは当たり前

329 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 13:39:10 ]
>>327
普通にとはどのようにでしょうか?

>>328
その通りです。OnClose から閉じる方がドキュメントを閉じる等の処理も
正しく行われるように読めたので出来ればそうしたく質問しております。

330 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 13:47:01 ]
OnCloseからOnCloseDocument呼んでるから
OnCloseDocumentからOnClose が呼びだされないのは当たり前



331 名前:デフォルトの名無しさん mailto:sage [2007/01/15(月) 21:50:20 ]
OnCloseはウィンドウを閉じる時
OnDocumentCloseはドキュメントを閉じる時
と考えれば何も問題ないべ

332 名前:デフォルトの名無しさん [2007/01/16(火) 04:24:49 ]
CPUやメモリをあまり気にせずにプログラム書いてたら
起動しただけでCPU使用率50%という異常な状態になっていました。
このプログラム自体、起動と同時に行う処理はほとんどなく、
SDIのスケルトンと同じようなもののはずなんですが。。

処理がないのにCPU使用率が高いまま下がらないのは
原因としてどのようなことが考えられますか?
もしくは原因を調べる方法とかってありますか?

333 名前:win32apiスレ17 mailto:sage [2007/01/16(火) 04:36:15 ]
pc10.2ch.net/test/read.cgi/tech/1168708801/17
に最初書き込みましたが、こちらのが適切かなと思って移動してきました。

Acrobatのページサムネール表示、あるいはPowerPointのスライド一覧表示のように、
イメージのリストを表示し、かつ、その順番をマウスのドラッグで調整したいと思ってます。
ドラッグ中、イメージが挿入される場所にカーソルの様な縦線が出てきて欲しいなと思ってます。

こういうコントロールの既存の実装やコードのサンプルなど御存知でしたら御教示頂けないでしょうか?
codeguru、codeprojectは廻ってみたものの、どうにもサムネールの表示どまりでして・・・


334 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 05:27:51 ]
>>332
情報少なすぎでどうespしろと?


335 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 05:36:21 ]
>>333
自分でエディタとか作ったことない?


336 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 08:03:52 ]
>>332
プロファイルで

337 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 09:03:52 ]
ある場所から突然malloc(255)がNULLになります。直前のmallocは必ず成功で、場所は一定
HEAP、スタックを2000000(2M)や20000000(20M)で試しましたが、タイミングや場所は変わらないようです
お手上げです。解決策をお知りの方おりませんか?

338 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 09:15:52 ]
直前のmallocまでのすべての戻り値をここにさらしてごらん

339 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 09:42:17 ]
直前のmallocの戻り値でいいですか?

malloc(255);//必ず成功。 戻り値:0x00b72e68
WideCharToMultiByte
MultiByteToWideChar
malloc(255);//必ず失敗

こんな感じです

340 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 09:59:04 ]
ヒープ壊してんじゃねえの



341 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 10:05:25 ]
解決しました!
MultiByteToWideCharを2度使いmallocのサイズを指定していたのですが、wchar単位でNULLが含まれていないため少なくなっていました
成功するほうをmalloc((len+1)*sizeof(wchar_t));で動きました。
ありがとうございました。

342 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 12:49:33 ]
CStringWじゃ駄目なのか?

343 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 17:35:59 ]
>>332です。

>>336
ありがとうございます。
プロファイルで調べたところOnIdle()のreturnが原因だったようです。

そのreturnのことで質問なのですが、
OnIdle内でのレンダリングによってCGアニメーションを表示するプログラムを書いているのですが、
return TRUE;だと前述のようにCPU使用率が高くなるのですが、
アニメーションは正常に表示されます。
return CWinApp::OnIdle(lCount);だとCPU使用率の問題は解消されるのですが
OnIdle()が呼ばれる間隔が長くなるためか、アニメーションが滑らかに表示できません。

この2つを同時にクリアできる良い方法はありませんか?
よろしくお願いします。

344 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 19:02:17 ]
んー、、、目的の fps が取れてるなら Sleep(0)を呼ぶとかどうだろう、Sleep(1)でもいいが

345 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 19:27:01 ]
ほっといてやれ

346 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 21:57:57 ]
>>344
ありがとうございます!!
どうやらすごく基本的なことのようですね。。

347 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 21:52:58 ]
マルチラインエディットボックスで
水平方向のスクロールバーの位置から
列の何文字目から表示している知りたいのですが
どうすればいいのでしょうか?

やりたいことはエディットボックスの中身を編集して
かきかえても書き換える前と同じ位置を表示したいのです。
LineScrollを使用すれば垂直はうまくいくのですが、水平がうまくできません。

また、SetScrollPosを使用してもエディットボックス内が更新されないのでこまっています。

348 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 23:52:25 ]
>>347
「書き換えても書き換える前と同じ位置」というのもよくわからないんだけど、
わざわざスクロールバーを使っているのはなぜ?
単純にGetSelでカーソル位置を取得しておいてSetSelで戻すだけじゃダメ?
あと、エディットボックスの更新するにはUpdateData(FALSE)とUpdateWindow()
じゃない?
質問がよくわかってないのではずしてるかも知れんけど。

349 名前:347 mailto:sage [2007/01/19(金) 14:44:11 ]
>>348 さん
レスありがとうございます。

自己解決しました

350 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 16:13:48 ]
CWnd* CWnd::GetDlgItem(int nID); で得られるCWndのインスタンスの解放は
誰に責任があるんでしょうか?ソースコードを少し追ってみると、独自のアロケータ
でごにょごにょやってるような感じなんですが。



351 名前:350 mailto:sage [2007/01/19(金) 16:23:11 ]
自己解決しました。こういう一時的に作ったオブジェクトはMFCが勝手に
CWinApp::OnIdle() → CWnd::DeleteTempMap() あたりで解放するんですね。



352 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 16:23:37 ]
ソース追うのもいいけど、ヘルプもみよう

353 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 16:34:29 ]
いや、だってヘルプには「返されるポインタは、一時的なポインタです。後で使用するために保存しておくことはできません。
」としか書いてないから、誰がどこでいつ解放するか気になるじゃん?

354 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 16:39:54 ]
一時的なポインタを解放するのか?

355 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 17:09:59 ]
そりゃ解放するでしょ。問題は誰がいつどこで開放するかであって、それに
よって「一時的なポインタ」とやらの有効範囲が決まってくるわけだから。

356 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 17:21:08 ]
クラスがなんだかわかってないのでは?

357 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 18:22:15 ]
あれ、FromHandle()あたりからDeleteTempMap()をたどって知ったんだったかな、、、
ヘルプだけで一時的なCWnd*がいつ消されるかも読んだ気がしたが・・・

358 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 18:27:04 ]
>>357
それがヘルプに書いてあれば悩む必要がないのにね。

359 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 18:39:22 ]
すいません。
自作でエクスプローラ風アプリケーションを作りたいのですが、
それ風なサンプルを説明しているサイトとか知りませんか?

全く、それ系のインターフェイス名も知らないんで、
ググれなく困っています。

360 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 19:00:58 ]
せっかく教えても無駄になりそうだからやめておこう



361 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 20:54:50 ]
>>359
えー!!
そんな殺生なぁ

362 名前:361 mailto:sage [2007/01/22(月) 20:56:48 ]
>>360
おねがいっす!!

363 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 11:03:34 ]
質問なんですけど
AppクラスからDocumentクラスのポインタの取得方法を教えてください
よろしくお願いします。

364 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 11:12:52 ]
自分で持ってそうな気がするけど

365 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 11:13:20 ]
Viewが一つだけなら
GetFirstDocTemplatePosition()、GetNextDocTemplate()、GetFirstDocPosition()、GetNextDoc()
あたりで。

366 名前:363 mailto:sage [2007/01/23(火) 11:19:24 ]
>365
GetFirstDocPosition()、GetNextDoc()で取得できました。
ありがとうございます。

367 名前:デフォルトの名無しさん [2007/01/25(木) 16:20:26 ]
スライダについて質問です

slider.SetRange(0, 100, true);
slider.SetTicFreq(10);
slider.SetPos(0);

このようなスライダを作り、スライダで設定した値をEditBoxに表示しています。
このとき、スライダのつまみをドラッグした場合には正しい値が得られますが
クリックで設定しようとした場合が上手くいきません

例えば、70を設定しようと思って該当する目盛りのあたりをクリックすると、
70の位置には来ず、マウスボタンが押されるたびに60と80で切り替ってしまいます。
クリックでも値を設定できるようにするには、何か特殊な処理が必要なのでしょうか?




368 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 18:32:40 ]
スライダの現在位置が0の時に70の位置をクリックしたら
0+GetPageSize()で得られる位置に移動するのがスライダ
コントロールの仕様だと思うんですが。

仕様が気に入らないのであれば、自分で必要なイベントを拾ってSetPos()すれば良い。

369 名前:デフォルトの名無しさん [2007/01/26(金) 01:06:48 ]
CEdit::SetFoces()に関する質問です。

任意のテキストフィールドをフォーカスさせたい場合は
CEdit::SetFocus()を行うと実現できますが、
このとき、フォーカス対象のテキストフィールドに文字列が
入力されているとき、文字列全体を範囲選択した状態で
フォーカス移動させるにはどのような手法があるでしょうか?

イメージとしてはタブでフォーカス移動させたときのような感じです。

よろしくお願い致します。

370 名前:369 mailto:sage [2007/01/26(金) 01:14:49 ]
ごめんなさい。自己解決しました。

CEdit::SetFocus();
CEdit::SetSel(0,-1);
で実現できるようでした。



371 名前:デフォルトの名無しさん [2007/01/27(土) 01:54:56 ]
ダイヤログベースのアプリです。
英語化について教えてほしいです。

タイトルアイコンをクリックした時のシステムメニューや、
AfxMessageBoxを表示させたときのキャンセルの表示など
あらかじめ用意されている部分に日本語が表示されますが、
すべて、一切がっさいを英語にしたいと考えています。

どのような方法で英語かすることができるでしょうか?

372 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 02:56:08 ]
>371

アプリケーションを実行するとき、デフォルトのコードページを英語に変更する。
でも、システムのバグをたたくこともあるからお勧めしない。


373 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 06:21:45 ]
英語環境でビルドしてあるやつでもそうなるから
OSの問題だろ

374 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 13:08:41 ]
だから実行時指定

375 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 15:15:32 ]
>>371
日本語関連を全くインストールしていない、設定も悉く日本にしていない端末で、実行する。

376 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 15:21:43 ]
MFCは全くの初心者なのですが、MFCにもバージョンはあると思うのですが
Visuall C++(VC6)に付属のMFCのバージョンはいくらになりますか?


377 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 15:31:00 ]
6.0

378 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 17:48:04 ]
WikipediaのMFCの項目、批判の所見てワロタ。
どこの知障だよ、書いたの。

379 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 18:41:44 ]
>378
DelphiやJavaはライブラリらしい。しかも、C++はコンパイル時間が長いらしい。

380 名前:372 mailto:sage [2007/01/27(土) 19:01:12 ]
>371

あと、afxMessageBoxにはユーザ拡張用の前呼び出し処理があるから、
それを横取りして自作のメッセージボックスを表示する。

とかかな。




381 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 19:01:26 ]
コンパイル時間は長いとは思うけど、他のオブジェクト指向言語と
比べてどうなのかはわからんな。

ただ、「C++だから」ってより「色々インクルードするから」長いんだけど。


382 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 19:06:08 ]
実行時コンパイルの方が好感もたれるのか

383 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 19:52:07 ]
すみませんMFCど素人です
ANSIの
unsigned char foo[64]
MFCではどの様に書いたらいいのでしょうか?
コンパイラはVC6です

384 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 20:20:34 ]
unsigned char foo[64]

385 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 20:47:58 ]
ガベコレがないのが致命的欠点であるかどうかは検証不可能だから
これはもちろんWikipediaに書いてはいけない。

Delphiの方にもしょうもない書き込みしてるが、
群を抜いているのなら特定のソフトウェアをあげつらう必要はなかろうに。
「中立的な観点」を欠いてしまっているのが分らないのかね。

386 名前:デフォルトの名無しさん [2007/01/27(土) 23:24:57 ]
何で C# って使われてないの?
VC++ ネイティブのより多少計算とか遅いかもしれないけどさ、
開発が VB 並にめっちゃ楽だし、
文法は Java そっくりで習得も移行も容易だし、
全体的にスマートな印象を受けるじゃん
いい加減 VC++ 信仰は止めて欲しいんだよね
一々 Windows と UNIX(Linux) 版を作りたくねーんだよ
もうさ、時代は中間言語の時代だと思うね
頼むから、ネイティブ信仰は止めようぜ


387 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 23:34:26 ]
>>386
TPOで使い分けるでFAだろ。
まあその手の議論は実りがないから他でやったほうがいいな。

388 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 08:18:59 ]
InitDialog中で、必要なファイルがあるかのチェックをして
なければSendMessage(WM_CLOSE);として終了するようにしているのですが
一瞬Windowが表示されてしまいます。。。
Windowを表示させずにそのまま終了する方法はないでしょうか?

389 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 08:37:30 ]
ダイアログ出す前に調べる

390 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 10:07:30 ]
>>388
モーダルならEndDialog、モードレスならDestroyWindow。



391 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 11:06:29 ]
ほほぉ、それからそれから?

392 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 12:29:47 ]
VC8のMFCではダイアログボックスに貼り付けるボタンやテキストボックスのサイズや
表示位置をそれぞれのプロパティから数値で詳細に設定できるのですが、VC6のMFCでは
そのようなプロパティに項目が見当たりません、VC6で皆さんは位置決めやサイズを
何処で設定されているのでしょうか?

393 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 13:03:17 ]
テキストエディタ

394 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 13:16:13 ]
>>389、390
ありがとうございました!

395 名前:デフォルトの名無しさん [2007/01/28(日) 16:34:24 ]
ダイアログベースのアプリです。
ウインドウサイズをマウスで自由に変更できるようにするには
どのような設定、または処理を作れば良いでしょうか?
SDI/MDIベースでないとできないですか?

396 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 16:48:03 ]
いいえ。

397 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 17:04:26 ]
サイズ可変のスタイル付ければダイアログ自体のサイズは変えられるようになるが
中のコントロールもそれにあわせて調整したければ、自分で書くしかない。

398 名前:デフォルトの名無しさん [2007/01/28(日) 17:17:53 ]
>>397さん
お返事ありがとうございます。
サイズ可変のスタイルのつけ方は、具体的なコードイメージを教えていただけないでしょうか。
ダイアログ内部に設置したCEditのコントロールもあわせて変更するように実装します。

399 名前:396 mailto:sage [2007/01/28(日) 17:44:13 ]
スルーされたから要点だけ突っ込み。
>サイズ可変のスタイルのつけ方は、具体的なコードイメージを教えていただけないでしょうか。
MSDN嫁。リソースで定義したダイアログならリソースエディタのプロパティの該当項目をチェックするだけ。

>ダイアログ内部に設置したCEditのコントロールもあわせて変更するように実装します。
サイズ変更のメッセージハンドラを書く必要がある(勿論そこでCEditのサイズを調整する)ので、
初心者向けの解説サイトでも探して解説を読め。

400 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 18:57:22 ]
すいません。でも方法教えていただきありがとうございました。
これからはMSDNみてから質問します。
CEditのほうもありがとうございました。



401 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 21:19:27 ]
>>392ですが、どうしたらいい?


402 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 21:38:35 ]
>>401
VC6の場合画面の右下のステータスバーに座標とサイズが表示されてるから
それを見ながら、マウスかキーボードで配置する。
[↑↓←→]で位置の変更、[Shift]+[↑↓←→]でサイズ変更。
もしくはリソーススクリプトを直接編集する。

403 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 05:11:45 ]
ダイアログ上にコントロールを大量に貼り付けて等間隔に位置を合わせるtips。

1.テキストエディタで.rcファイルを開く。
2.DIALOG内のCONTROL行をcsvファイルとして保存する。
3.以下省略。

404 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 05:36:57 ]
すごい大量のとき役立ちそうだなw

405 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 06:20:10 ]
ダイアログエディタに位置そろえる機能ついてるけど

406 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 15:36:03 ]
>>403の3.の部分はストリングテーブルを書くときに便利だな。
defineと日本語/英語の文字列が一気に書ける。同時に仕様書も作れて一挙両得。
defineの数値はドラッグすれば1づつ増やせるからバグもでない。

407 名前:デフォルトの名無しさん [2007/01/30(火) 23:29:19 ]
フレームウィンドウとかの OnDestroy について質問です
通常 OnDestroy の中では親クラスの OnDestroy を呼んでいますが、
その親の OnDestroy の直前の部分でメモリ開放処理を行うのは良くないですか?
リストに登録されているアイテムを開放したいのですが・・・

408 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 23:50:16 ]
>>407
良くないと思う理由は?
リストってリストボックスやリストビューコントロールのこと?

409 名前:デフォルトの名無しさん [2007/01/31(水) 00:00:58 ]
>>408
CListCtrl のことです
これに new で生成したオブジェクトを登録?しています
そのまま終了するとメモリリークが発生してしまうので、
ウィンドウが破棄される直前に開放しようと思いました
それで OnDestroy に追加することにしました

良くないと思った理由は、親クラスの OnDestroy を
呼んでいるところの下にデフォルトで「ここに追加」
的なコメントが入っているからです

410 名前:デフォルトの名無しさん [2007/01/31(水) 00:10:13 ]
CListCtrlが消えるのいつなん?
プログラムが生成→消滅→生成→消滅→・・・ってやってるか
生成→表示→非表示→表示→非表示→・・・消滅ってやってるかでタイミング違ってくるじゃん。
生成したインスタンスを消したいタイミングはいつよ?
最終的に(それがいつだかはアプリにもよるが)インスタンスを確実に消滅さしときゃ問題ねーんだしよ。



411 名前:デフォルトの名無しさん [2007/01/31(水) 00:29:46 ]
リストは起動時から終了時までずっと表示です
終了時に一覧情報を保存して破棄することにしています

できるだけ綺麗な(オブジェクト指向的な)ソースコードを
書きたいので、親の OnDestroy の前が正解か後ろが正解か
が気になります

412 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 00:49:58 ]
>>411
WM_DESTROYを処理してる間は、子ウィンドウは存在している。
ttp://msdn2.microsoft.com/en-us/library/ms632620.aspx

リストビューアイテムに設定しているデータを削除するのは、LVN_DELETEITEM, LVN_DELETEALLITEMSでやるといい。

413 名前:デフォルトの名無しさん [2007/01/31(水) 00:51:06 ]
>>412
ありがとうございます!
やってみます!

414 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 00:52:14 ]
>>411
だったらOnDestroyは関係ないんじゃない?
つか、親のOnDestroy後にCListCtrlにアクセスされたら(するのか?)死ぬじゃない。
親のデストラクタでdeleteしとけばいいんじゃね?やってみ、やってみ。やってみたら結果報告ヨロ

415 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 00:53:07 ]
CMainFrame::OnDestroy()の前後どっちか2択と言われたら後に1票。

個人的には、Documentで扱っているデータなら
CHogeDocument::OnCloseDocument() or OnSaveDocument()
ViewのみでやってるならCHogeView::PostNcDestroy()でやると思う。
CMainFrameにCListCtrlのデータ持たせるとViewからデータへの
アクセスが面倒じゃない?

416 名前:デフォルトの名無しさん [2007/01/31(水) 01:08:09 ]
>>414-415
ありがとうございます!
いろいろと試してみます!

417 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 08:40:38 ]
親ウインドウと関係あるのはopenからcloseまで
closeしたらウインドウ関係ないから心配いらん

>綺麗な(オブジェクト指向的な)ソースコード

普通はデストラクタで解放

418 名前:デフォルトの名無しさん [2007/02/01(木) 00:21:49 ]
CListCtrl コントロールのイベント処理ですが
クリック時とダブルクリック時とで処理を分けたいと思っています
しかし、ダブルクリック時には先に必ずクリックイベントが
発生してしまってうまくいきません
NM_DBLCLK の直前に NM_CLICK が発生するのを
防ぐことはできませんか?

419 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 00:53:14 ]
仮にNM_CLICKが発生しないようにしたらシングルクリック時の処理が出来ない。
コントロールの身になって考えれば、ユーザーのクリックがシングルなのかダブルの1発目
なのかの判断はできない。

シングルクリック時の処理開始をしばらく待ってみる以外手はないと思う。

420 名前:デフォルトの名無しさん [2007/02/01(木) 01:11:47 ]
>>419
レスありがとうございます
つまり、NM_DBLCLK 前には NM_CLICK が
絶対に発生してしまうということですね
何か良い手はないですかね・・・



421 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 01:20:02 ]
だからシングルクリックのイベント後、しばらく待ってみてダブルクリックが来ないようなら
シングルの処理。来たらダブルの処理するだけ。

VBのサンプルではタイマー使ってるみたい。
support.microsoft.com/kb/109865/ja

422 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 09:45:30 ]
本来はダブルクリックってーのは、シングルクリック→メニュー等選択
のショートカットだから、シングルクリックのあとにダブルクリックがきても
何も困らないんだけどな。
ダブルクリックを変なことに使おうとするからこうなる

423 名前:デフォルトの名無しさん mailto:sage [2007/02/03(土) 19:33:32 ]
これからMFCの勉強を始めたいのですが
書籍の「標準講座MFC」って今でも役に立つでしょうか?

MFC6.0ってちょっと古いみたいですが、最新のバージョン(MFC8.0?)と
大きく違うところってあるのでしょうか

424 名前:デフォルトの名無しさん mailto:sage [2007/02/03(土) 20:20:00 ]
仕事でどうしても必要なのか?
でなければ止めとけ。

425 名前:デフォルトの名無しさん mailto:sage [2007/02/03(土) 20:42:57 ]
>>423
新しいUI関連のクラスがいくつか無いだけで、基本はそんなに変わってないと思うけど。

426 名前:デフォルトの名無しさん mailto:sage [2007/02/03(土) 21:18:50 ]
www.shoeisha.com/book/hp/pc/book/MFCMaster/
ソースは公開されてる

427 名前:デフォルトの名無しさん [2007/02/03(土) 21:57:59 ]
お前ら教えてください。
ツールバーのボタンに文字列のみ表示したいのですが、
TBBUTTON::iBitmapにNULLを指定しただけでは
イメージ(アイコン?)のスペースの分のスペースが空き、
そこから先から文字列が描画されてしまいます。
どうすればいんでしょうか?

428 名前:デフォルトの名無しさん mailto:sage [2007/02/03(土) 22:40:06 ]
CToolBarでできそうな気がするけど

429 名前:427 [2007/02/03(土) 22:47:49 ]
>>428
なるほど!
CToolBar::SetSizes()の中にやり方が書いてありました。
助かったよ!ありがとう!

430 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 09:09:06 ]
今、Visual C++ 6.0 を使ってるのだが、開発環境をバージョンアップしようとしたら
どれを導入すればいいのだろう?

無料で配布されている Visual C++ 2005 Express は MFC は入ってないんですよね?

それとも、あと少し待って次のバージョンが出たときのほうがいいんでしょうかね。



431 名前:デフォルトの名無しさん [2007/02/04(日) 09:26:03 ]
>>430
そりゃおめ、vista上で動くモン買えや。
いま、XPでなにやら揃えるのは無駄でしょ?

432 名前:デフォルトの名無しさん [2007/02/04(日) 11:30:15 ]
IEのメニューの用に画面に収まりきらないメニューがある場合は
「>>」を表示し、「>>」を押せば残りのメニューが表示されるようにしたいのですが、
そういったコントロールがあるのでしょうか?
どなたかヒントだけでもわかる方おられましたら教えてやって下さい。

433 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 11:39:00 ]
軍人や警官の袖に付いている山形の袖章のことをいうのだそうです(多分)。

434 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 12:05:06 ]
USECHEVRONあたりで探せば?


435 名前:432 [2007/02/04(日) 12:31:54 ]
>>434
「>>」はChevronって言うんですか用語自体知りませんでした。
Chevronでぐぐればすぐにでてきました。
教えていただかなければ数日ははまるとこでした、
ありがとうございます。

436 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 14:14:26 ]
フランス車に詳しければ直ぐに判るんだがな。

437 名前:デフォルトの名無しさん [2007/02/04(日) 22:58:24 ]
CFont::CreateFontとかCFont::CreateFontIndirectって
CFont オブジェクトを使い終わったら、最初にデバイス コンテキストからフォントを選択して、それから、CFont オブジェクトを削除します。
ってあるけどデストラクタで解放してくれないの?

解放しないままアプリ終了したらリソースリークするのかな?

438 名前:デフォルトの名無しさん [2007/02/04(日) 23:01:29 ]
CClientDC::SelectObject
よばなきゃ問題ないのか???
よくわからん

439 名前:デフォルトの名無しさん [2007/02/04(日) 23:06:49 ]
エディットボックス内のフォントを変更すのみで
DCで直接使用しない場合は問題ないのか???

MSさんさっぱりわかりませんorz

440 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 23:19:29 ]
SetFontで



441 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 00:11:26 ]
>>437
デバイスコンテキストに選択されたままだと解放されないと思った。

442 名前:デフォルトの名無しさん [2007/02/05(月) 17:27:27 ]
CHtmlViewについてお聞きしたいのですが
www.microsoft.com/japan/msdn/columns/webteam/webteam02052001.aspx
ここを参考にしてタブではないブラウザを作成したのですがこの通りに記述しても
JAVAスクリプトで行っているブラウザのリサイズが正常に動きません。

テスト用に適当に選んだサイトですが
www3.ocn.ne.jp/~motiya/java/sample-4/window_choice1.htm
ここのsmall windowを押してもフレームのサイズが変更されません。
RecalcLayout等してもダメでした。メインフレームが正しくリサイズされる
方法をどなかた教えて頂けないでしょうか。

環境
VC6.0 WindowsXp SP2

443 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 20:47:25 ]
|あいう |^|
|えおか| | |
| | |
| | |
5| | |
| | |
| リッチエディット   | |
| | |
| | |
10| | |
| | |
| | |
| | |
| | |
15|--------------------------|↓|

スクロールバー

こんな感じの画面を作ることになったのですが
右のスクロールバーと左の行数のコントロール?(何でもいい)で
同期をとりたいのですがどのようにしたらよいのでしょうか?
なにかヒントでもありましたらご教授をお願いいたします。
環境:VC++2005 MFC

444 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 01:38:15 ]
すみません。CFileFind について、みなさんのお知恵を貸してください。
エディットボックスに入力したパスを CFileDialog で開く、という処理を作ってまして、
入力したパスの存在チェックを CFileFind で行っています。

ですが、C:\ や、\\hoge\ 等、ドライブのルートを指定した場合に存在を検出できず、
前回開いたフォルダがFileDialog で開かれてしまい、困っています。

どなたか良い方法をご存知でしたら、ご教授ください。
よろしくお願い致します。

445 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 02:55:00 ]
単独で現れる\記号の数をカウントすればいいんじゃないかい
"\\"はReplaceで別の記号に置き換えるとかして、
その後で"\"が1個だけならルート

446 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 04:19:44 ]
つか、そのまえになんでCFileFindってそんな厨仕様なの?
なんか意味あんじゃね?

447 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 06:07:07 ]
試してないけどCFileDialogで存在しないパスは指定できないような気がするけど

448 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 06:14:37 ]
ああそうか指定したパスをCFileDialogで開きたいのか

449 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 06:39:44 ]
>>444
ルートディレクトリが検出されないのは、内部で呼び出しているAPI側(FindFirstFile)の仕様。
CFileFindの仕様としては書かれてないかも。

FindFirstFileの説明にはルートディレクトリの属性を取得するにはGetFileAttributesを使えと書いてある。

450 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 06:42:23 ]
ところでみんなフルコントロールの拒否とかってどうやって判断してる?



451 名前:デフォルトの名無しさん [2007/02/08(木) 17:40:42 ]
メニューをoffice風にするため調べたら
”ツールボックスからメニューをペタペタ”をすればいいらしい
しかし、MFCを使わなければならないことが判明

win32アプリにツールボックスからメニューをペタペタはできない
Wwindowsフォームで作るとできる
しかしForm.h、Form.resxとか変なファイルが中身見ると分けわかんなくなってるしWinmainがないぞ
C++とMFCは別物なのか!!


2005express

452 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 18:10:06 ]
>>451
それは.NET frameworkじゃね

453 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 18:12:30 ]
知らないうちにC++/CLIを使っている。いかんこれはゲイツの罠だ。

454 名前:デフォルトの名無しさん mailto:sage [2007/02/12(月) 00:31:01 ]
初めて任されたツールが遂に完成シマスタ^^
予定では後一週間あるので連休明けはブラックボックステストと
ロゴの作成にかかりたいのですが、VC6 MFCのリソースエディータって
しょぼいですね(^^;フリーでお勧めのリソース編集ソフト知ってたら
教えてくださいオナガイシマス

455 名前:デフォルトの名無しさん mailto:sage [2007/02/12(月) 03:21:06 ]
>>454
ロゴの作成にリソースエディタってお前馬鹿じゃないのか?

456 名前:デフォルトの名無しさん mailto:sage [2007/02/12(月) 08:22:50 ]
いるんだよ、ソースコードもロゴ画像もIDEで編集しないと気がすまない馬鹿って奴が。

457 名前:松井康明 mailto:sage [2007/02/12(月) 10:05:18 ]
>>456
バカバカ言ってないで教えてやれよ

458 名前:デフォルトの名無しさん mailto:sage [2007/02/12(月) 10:22:31 ]
ロゴの作成をMFCスレで質問するのは脳に異常があるんだろうな
進行が進まないうちに早めに治療を受けたほうがいいよ

459 名前:デフォルトの名無しさん mailto:sage [2007/02/12(月) 11:40:34 ]
>>457
教えるも何も、「画像を作る」って聞いたら藻前様は何を使うと仰るのですか?
#ふつー、画像編集ソフトを使うと思うのだが。

460 名前:デフォルトの名無しさん mailto:sage [2007/02/12(月) 21:25:22 ]
別にいいんじゃね、リソースエディタでも。センスがあれば。



461 名前:デフォルトの名無しさん mailto:sage [2007/02/13(火) 05:43:02 ]
>リソースエディタでロゴ作成業務 8H
やべぇw脳勃起してきたw

462 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 10:25:44 ]
印刷プレビューをダイアログベースのプログラム(VC6.0)で実現するにはどうすればよいのでしょうか?
検索するとSDI/MDIのプログラムばかりで途方に暮れています。


463 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 11:57:02 ]
MFCのソース見れ

464 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 12:47:54 ]
印刷プレビューのアーキテクチャ
msdn2.microsoft.com/ja-jp/library/edak6tf8(VS.80).aspx

465 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 13:44:30 ]
りえ子、結婚してくれ

466 名前:465 mailto:sage [2007/02/19(月) 14:17:23 ]
自己解決しました


467 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 14:54:28 ]
おめでとう

468 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 20:27:55 ]
いや、うまくいったら、自己解決とは言わない気が…。


469 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 22:17:09 ]
自己解決 = 脳内解決
だな

470 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 14:48:31 ]
誰か、知っている方、教えてもらえませんか。
リストの表示で、拡張スタイルにLVS_EX_HEADERDRAGDROPを指定し
仮想リストビューでアイテムの表示を行っております。
そして、カラムのドラッグ&ドロップで順番を入れ替える事が出来るのですが、
順番を入れ替えると、カラムのアイテム表示が、新しい表示と古い表示の両方が
出てしまいます。なぜでしょう?
------------------------
Colum1 | Colum2 | Colum3
------------------------
1 | 2 | 3
1 | 2 | 3

カラムの順番を入れ替えて、幅を広げると
古い表示が出てくる。
------------------------
Colum1 | Colum3 | Colum2
------------------------
1 | 3 2 | 2
1 | 3 2 | 2


VS.2005でMFCをスタティックでリンクに設定しております。





471 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 15:02:59 ]
123→132は判った。
123→312ではどうなる?

472 名前:470 mailto:sage [2007/02/22(木) 15:20:09 ]
>>471
312ではColum3の表示が"3 1 2"となりました。


473 名前:470 mailto:sage [2007/02/22(木) 15:21:42 ]
>>471
あ、言葉が足りませんでした。
Colum3のアイテム表示が"3 1 2"です。

474 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 15:53:06 ]
なんとなく、メモリ管理が失敗している悪寒。

475 名前:470 mailto:sage [2007/02/22(木) 16:19:39 ]
原因が判りました。
スタイルにLVS_OWNERDRAWFIXEDが指定されていました。
MFCのROWLIST サンプルを元に、変更を加えていったのですが、
CListViewExで、LVS_OWNERDRAWFIXEDが指定されておりました。
レスをしてくれた方がには、お礼申し上げます。

476 名前:デフォルトの名無しさん [2007/02/22(木) 20:26:53 ]
MFCを使って、できるだけ簡単にHTMLメールを
ダイアログベースで表示したいのですが、
どんな方法があるでしょうか?



477 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 21:13:27 ]
もうちょっと仕様検討してから来てください

478 名前:デフォルトの名無しさん [2007/02/22(木) 22:17:26 ]
>>477
できるだけ簡単にできる方法に合わせて仕様を決めようかと思って。


479 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 22:51:31 ]
メールを表示するソフトなんて聞いたことがない

480 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 10:17:31 ]
HTMLを表示(レンダリング)するコントロールを探せ



481 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 10:19:12 ]
よくあるペイントソフトのような複数の画像表示ウィンドウに
共通のパレットダイアログを持つようなプログラムを作ろうと考えています。
MDIで生成すると、例えばファイル→開くを選択すると
ドキュメント以外にビューも生成されて、ビューが持っているパレットダイアログ(モードレス)
までが複数生成されてしまいますが、これを阻止するにはどのようにすればよいのでしょうか?

482 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 10:26:24 ]
パレットをビューに持たせてるのが間違い。

483 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 10:33:26 ]
>>482
確かにおっしゃるとおりです。
ウィンドウを切り替えたときにパレットの内容をアクティブなウィンドウの
情報に変えたいので、そのあたりの情報などを管理できる部分にまとめようと思うのですが
この場合、パレットを持たせるのはMainFrameでしょうか?

484 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 21:47:33 ]
すいません教えてください。
VC++6.0です。
ツールバーのボタンに対してプロパティからプロンプトという項目を設定すると実行時にボタンの説明文が出せますよね。
あれをダイアログのボタンやエディットボックスにも出したいのですがどうすればいいでしょうか。


485 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 21:54:39 ]
つ CToolTipCtrl

486 名前:484 mailto:sage [2007/02/23(金) 22:23:14 ]
即レスありがとうございます。
調べてみます。

487 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 13:49:06 BE:87345195-2BP(222)]
>>483
CDialogBar

488 名前:デフォルトの名無しさん [2007/02/26(月) 18:13:00 ]
自分自身のProductVersion の読み出し方法は?

色々探したのですが、どうも自分自身のProductVersionを
読み出す方法が見つかりません。

自身の実行ファイルのフルパスを探し出し.... という方法は
見つけましたが、何だかなぁという感じで。

CString::LoadString のような感じで読み出す方法はないのでしょうか?


489 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 18:53:34 ]
ストリングテーブルになかったか?

490 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 18:54:56 ]
なんだ質問者が答えてるじゃないか
キチガイの独り言はやめほしいな



491 名前:デフォルトの名無しさん [2007/02/26(月) 19:18:29 ]
>>489
> ストリングテーブルになかったか?

ストリングテーブルには登録されてないよ。


492 名前:デフォルトの名無しさん [2007/02/26(月) 19:19:07 ]
>>490
> なんだ質問者が答えてるじゃないか
> キチガイの独り言はやめほしいな

CString::LoadString で読み出せるのか?
IDは、何を設定するの?


493 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 19:43:48 ]
何だかなぁ

494 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 19:53:29 ]
わざわざ教えてやっても何だかなぁと言われたら馬鹿だし

495 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 20:02:23 ]
>>488
ttp://tgws.fromc.jp/prog/versioninfo/

496 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 20:04:24 ]
FindResourceから始めれば出来なくは無いな。

497 名前:483 [2007/02/26(月) 21:52:54 ]
>>487
CDialogBarを利用してみました。ソースは以下の通りです。

(MainFrm.cpp)
if (!m_wndDlgBar.Create(this, IDD_DIALOG_HOGE,
CBRS_ALIGN_TOP, AFX_IDW_DIALOGBAR)){
TRACE0("ダイアログバーの作成に失敗しました。\n");
return -1;
}

しかし、ダイアログを移動するとダイアログのあった場所が再描画されません。
CBRS_ALIGN_TOPを指定しているせいでしょうか?
また、サイズがリソースで作成したものと変わっていたり(横いっぱいに広がっている。ALIGN_TOPの影響?)
しています。

ttp://www.alpha-net.ne.jp/users2/uk413/vc/VCT_DlgBar.html
このようなドッキングされた状態の作成方法はいろいろ紹介されているのを確認しましたが、
通常のモーダレスダイアログのような振る舞いをさせる方法が分かりません。(任意の座標に表示させるとか)
どういった方法をそればいいのでしょうか?

498 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 22:02:08 ]
ダイアログバーのサンプルならMSDNについてる

499 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 23:07:39 ]
ウインドウの動かしかたも知らんのか

500 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 11:53:59 ]
こうですか?
うまくいきました!!



501 名前:MDI今日始めます [2007/02/27(火) 18:18:27 ]
すみません。ど素人ですm(__)m

MDIのプログラム今日始めました。ウィザードでMDIのプロジェクトを作成後、
クラスビューでOnDraw(CDC* pDC)という関数を発見し、これで描画できると
思いましたが、子ウィンドウを新規作成するたびに同じ描画を繰り返すだけ。
子ウィンドウ毎に違う描画をしたいのですが、どうしたらいいんでしょう?

メインのソースたどろうにも、CWinApp::OnFileNewはライブラリになっていて
ソースの実体が無くどうしていいのかわかりません(ToT

502 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 18:40:27 ]
その違う描画、は何を持って違うことになるのか
それによってOnDrawでの動作を変えりゃいいだろ

503 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 18:40:34 BE:62112948-2BP(222)]
同じ描画になるのは同じ描画しかしないコードを書いているから。
CView::OnDrawでCDocumentのインスタンスを識別してそれぞれで描画するようにしれ。

504 名前:デフォルトの名無しさん [2007/02/28(水) 01:39:33 ]
ListViewの初期化方法、削除方法を教えてください。

505 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 13:40:52 ]
>>504
MSDN読め

506 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 22:14:14 ]
教えてください。
VC++6.0でMDIです。
MDIの子ウィンドウとしてCFormViewを継承したクラスが2つあります。
このクラスを仮にA,Bとします。
Aのウィンドウのボタンが押されたときにBのウィンドウの
エディットボックスの内容を更新したいのですがどうすればよいでしょうか。
MDIGetActiveとGetNextWindowをつかってウィンドウをたどっていき
if(pWnd->IsKindOf(RUNTIME_CLASS(B)))で判定すればBのウィンドウの
ポインタが取れると思ったのですが、このif文がなぜか真になりません。
何がまずいのでしょうか。

507 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 23:27:13 ]
>>506
MFCの問題っちゅーかプログラミング能力の問題じゃねぇの?それ。
まあ、問題の切り分けができないってのもわからないでもないが・・・
そういう機能はAとB2つに影響を与えることができるクラスに付けなきゃ駄目だよ。
AやBはその機能を呼ぶだけ。
>>203-205の問題と似てネーか?

508 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 09:30:44 ]
>>506

そもそも基本ができていない
やろうとしていることの前に、基本から勉強しなおせ


509 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 15:05:40 ]
基本的な質問なのです、よろしくお願いします。
VS2005でMFCアプリケーション(ダイアログベース)を作ったのですが。
新規にダイアログベースを作成してそのまま何も加工せずにセットアップ
ウィザードを使ってsetup.exeを作って他のPCでインストールしようとしたら
.NET framwork2.0をするように指示する画面がでました。
これは、VS2005で開発したものはframework2.0が必要?それとも
インストーラーがframework2.0が必要?なんですか?
frameworkが必要ないとおもってMFCにしたのですが、framework不要に
する設定ありますか?よろしくお願いします。

510 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 15:07:08 ]
訂正です。
x  .NET framwork2.0をするように指示する画面がでました。
○ .NET framwork2.0をインストールするように指示する画面がでました。



511 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 15:45:02 ]
CHtmlDialog使ってる?

512 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 17:30:44 ]
それはじめてききましたので意識的にはつかってないかと

513 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 18:51:13 ]
んー、普通に作ればいらんけどな。
とりあえず、新規プロジェクトで何もしないでウィザードだけでできあがったダイアログで
試したらどうなる?

514 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 18:51:54 ]
セットアップがあやしいな

515 名前:デフォルトの名無しさん [2007/03/01(木) 21:06:55 ]
『標準講座MFC6.0―Visual C++による効率的なWindowsプログラミング』
という本を以前読んで、大変勉強になったのを覚えています。
無くしたので、他の本と一緒に買おうかと思うのですが、どうせならVC++.net
関連の本がいいと思っています。サンプルも欲しいです。
何かお勧めはありますでしょうか?



516 名前:デフォルトの名無しさん [2007/03/01(木) 22:50:39 ]
VC++2003 のリソースエディタで作成したポップアップメニューについて質問です

やりたいことは簡単でポップアップメニューのサブメニュー(横に開いたやつ)を
状況(その時の変数値など)に応じてグレーアウト(Enable が FALSE の状態)したいだけです

OnUpdateXX(メニュー名) で pCmdUI->Enable(FALSE) することで
普通のポップアップメニューをグレーアウトすることはできました
しかし、ポップアップメニューのサブメニューに同じようなことをやってもうまくいくません
サブメニューを選択して初めて OnUpdateXX と OnXX が走っているようです
どうにかして同じようにサブメニューをグレーアウトさせることはできないでしょうか?

517 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 22:54:35 ]
スレ違い。書籍スレへどうぞ。

518 名前:デフォルトの名無しさん [2007/03/01(木) 23:19:43 ]
そんなことおっしゃらずに教えて頂けないでしょうか?

519 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 00:42:30 ]
>518
ここはMFCスレ。.netやりたいならそういうスレで聞けば?MFCなら標準講座でいいだろうし。

520 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 09:27:14 ]
なんで.NETだと思うんだ?



521 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 12:20:53 ]
>>516
OnUpdate〜に頼らず、自分でグレーアウトさせる。

522 名前:デフォルトの名無しさん [2007/03/02(金) 14:04:34 ]
VC++6.0使っています。
MFCでAPIである
SetWindowText(hWnd ,"(@_@)");
を使いたいのですが、MFC上でこの関数を実行すると
ウィンドウハンドルの引数が省略されてしまい、コンパイルできません。
MFC上で、任意にウィンドウハンドルを指定してSetWindowText関数を
使う方法はありますでしょうか?



523 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 14:09:24 ]
スコープ演算子

524 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 14:20:29 ]
>>522

C++ の基礎からやりなおせ


525 名前:デフォルトの名無しさん [2007/03/02(金) 14:32:43 ]
>>523
>>524
ありがとうございます。
勉強しながらなので、
お教えいただいたヒントを元に
答えを探ってみたいと思います。

526 名前:デフォルトの名無しさん [2007/03/02(金) 14:39:48 ]
>>523
>>524
どこに対してスコープを設定すればよいのか
見当もつかなかったので、試しに関数の頭にスコープ演算子だけつけてみたら
なぜかうまくいきました。


527 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 14:55:29 ]
>>522
>MFCでAPIである 
WindowsのAPIなのかMFCクラスのメンバー関数なのかはっきりしる。

528 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 15:03:02 ]
すでに解決済

529 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 15:31:06 ]
CListBoxなどのコントロールでの文字列の扱いは
TCHAR(LPCTSTRとか)になってますが
実行時にマルチバイトでCListBoxを使うか
UNICODEで使うかを選択することはできないものなんですか?

530 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 15:33:45 ]
マクロはコンパイル時に展開されるから
マクロ使わないで使い分ければいい



531 名前:529 mailto:sage [2007/03/04(日) 15:45:56 ]
>>530
すいません。その辺知識不足なんですが、
Win32APIで例えるとANSI版とUNICODE版があって、
それを使い分けれるってことですか?

532 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 10:54:26 ]
いいえ、MBCS版とUNICODE版です。

533 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 12:45:59 ]
知識はいらない
MFCのソース見るだけ

534 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 13:15:40 ]
ライブラリが違うな

535 名前:529 mailto:sage [2007/03/05(月) 21:33:00 ]
ソース見たところ、
MBCS版とUNICODE版を同時に使える仕様にはなってない感じですが…。
よくわからんです。

とりあえず素直に別々にコンパイルして
本体を98系とNT系に分けて用意する方が楽っぽいですね。

536 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 10:23:29 ]
実行時に切り替える必要はない

537 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 19:12:36 ]
>>509 の人です。
VS2005で作ったMFCプログラムを同様にVS2005のセットアップウィザードを作ったsetup.exe
で実行してFramework2.0をインストすれというメッセージが出たものです。
結論からいうと、このsetup.exeを使わないで~~~.exeだけをコピーして動作させたら動きました。
MFCはスタティックリンクしました。ということで容疑者はセットアップウィザードらしいことが
判明。まあ使わなければいいという短絡的な結論になりました。

538 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 21:00:41 ]
あほか
容疑者はおまえだよ
セットアッププロジェクトをきちんと作れば何の問題もない



539 名前:デフォルトの名無しさん [2007/03/09(金) 00:20:07 ]
MFC にtemplateを組み合わせたフレームワーックってあります?

例えばCCOMBOBOXにSetItemDataPtr使ってある型を足してく場合とかに
をやってくれるようなtemplate関数とかが用意してあるやつとか

MFCのコントロールとtemplateを組み合わせるのって普通はしないものなんでしょうか?
上記のある型を設定した後にプログラムからSetItemDataptrで設定した型のある値を指定したら
SetCurSel あたりで指定した項目に対応するやつを選択状態にしてくれるようなやつとか



540 名前:デフォルトの名無しさん [2007/03/09(金) 00:25:10 ]
ダイアログ以外だとポトぺタってできないんですか?



541 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 00:36:03 ]
ポトペタしたいなら.NETの方がいいよ

542 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 03:03:47 ]
VB6の間違いだろ

543 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 00:47:51 ]
FormViewは?

544 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 01:38:01 ]
VC++のエディタのようなウィンドウを作ろうとしています。
(テキスト表示の右側に●とか矢印が出るウィンドウ)
それで、自分なり考えたのですが、

1. CEditView からビューを作成。
2. OnCreateで左側のマージンを空ける。
3. OnDrawとかで●とか矢印を書く。

でも、そもそもOnDrawが呼ばれません。
他のアプローチがあれば教えていただけないでしょうか?
ちなみに当方WindowsのGUIプログラミングはド素人です。

545 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 06:23:12 ]
CEditViewの中はCviewにeditコントロールを貼り付けてあるだけで
位置調整に関係するのはCEditView::CalcWindowRectあたりか

546 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 10:52:35 ]
>>544
CEditView なんぞ使ったらだめ。
CView に全部自前で実装しろ。
どのみち、ど素人にできるテーマではない。
その前にいろいろ勉強してから出直して来い。



547 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 13:31:21 ]
>>544
とりあえず参考までに。
ttp://www.vcppclub.com/samples/vwdoc/p_leditor/leditor.html

548 名前:544 mailto:sage [2007/03/11(日) 00:45:00 ]
>>545-547
レスありがとうございます。
>>545
こんなメンバがあったのですね。しらなんだ orz
勉強になります。
>>546
ごめんなさい。今勉強中で行き詰まったので、ちょっと甘えてみました。
>>547
てか、行番号のところに●とか矢印描画したらやりたいことそのままではないですか!!
まだ、ちゃんとソース見られてませんが、これからじっくり追って行きたいと思います。
ありがとうございます。

良スレ発見!!

549 名前:548 [2007/03/17(土) 14:50:17 ]
            __,,..、、- - - .、、...,,___
       ,,、‐''"~ ̄            ̄``''‐、、
     /                      \
    /                         ヽ
   /                           ヽ
   /  / ~~` '' ‐- 、、 ,,__   __ ,,..、、 -‐ '' "~~\  ヽ
   |  /    __           ̄       __   ヽ  |
  .|  {  ´   ‐- ....__    __... -‐   `   } .|
  .|  〉,,・^'' - .,,      ~  i ~    __,,.- ^`・、.〈  |
./ ̄|  /,/~ヽ、  `'' ‐--‐ ,.| 、‐-‐'' "~   _ノ~\,ヽ | ̄ヽ
| (` | / ヽ,,_____`‐-、_、..,,___ノ八ヽ___,,.._-‐_'"´___,, ノ ヽ .|'´) |
| }.| ./'   \二二・二../ ヽ  / ヽ、二・二二/  'ヽ | { |
.| //| .|          / |  |. \         | |ヽヽ|
.| .| | .|        /    |  |.    \       | | | .|
|ヽ.| |      /     .|  |.     ヽ      .| .|./ .|
 |  .| |     /      |  |        ヽ     |  | /   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ヽ .| |    /       .|  |       ヽ    |  | /  |  用件を
  .ヽ.| |    /     '二〈___〉二`       ヽ   |  |./  <
    | |          `-;-′         |  |     |  聞こうか…
     iヽ|.      ,,... -‐"`‐"`'‐- 、、     |/i       \_________
     |  ヽ     /...---‐‐‐‐‐----.ヽ    /  .|
     |   ヽ.    ,, -‐ ''"~ ~"'' ‐- 、    /   |
    .|    ヽ         !          ./   .|
    ,,|     ヽ.         |        ./     |、
    |\.     ヽ            /     /.|
   .|.  \.      ヽ、____   ___/    /   .|
   '     `            ̄ ̄       ´     '

550 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 01:58:13 ]
CDialogBarのダイアログで
List Controlを利用しているのですが
カラムを初期化するタイミングはどれがよろしいのでしょうか?

CDialogの場合はOnInitDialogがあったんですが
CDialogBarには無いみたいで



551 名前:デフォルトの名無しさん [2007/03/18(日) 10:07:39 ]
>>550
Create()の中で、CDialogBar::Create()呼び出し後にやってます


552 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 23:04:42 ]
CPropertySheetEx/CPropertyPageEx(PSH_WIZARD97)を利用して、
各ページの上部ヘッダ部に画像付きのウィザードを作成しています。

Windows Vista上で、この方法で作成したウィザードを実行すると、
なぜか各ページの上部の画像が表示されなくなってしまいます。
(Windows XPでは問題なく表示されます)

これを回避する方法はありますでしょうか?


553 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 10:47:48 ]
Vistaを見捨てる

554 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 03:11:06 ]
Vistaの互換性の問題なのか、>>552のプログラムがトンチキなのか

555 名前:デフォルトの名無しさん [2007/03/21(水) 19:50:40 ]
先生、MFCでアプリ作ってたらエロイ人が
「.NETのメニューみたいにかっこよくしろ」
とか言ってきました。

556 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 19:59:11 ]
そもそも2ちゃんねるで聞くなんてww
最新スレ50しか読んでないが、質問主は殆ど玉砕だな
昔の2ちゃんねるは玉石混在で光るものもあったが、今は石しかない
プログラム技術@2ch掲示板なんて止めて、
質問主を煽る技術@2ch掲示板として、スレッドも一つか二つにまとめたらどうよ

557 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 20:03:16 ]
本気で困ってたら2chなんかで聞かないって
特にム板はクズの集まりだしな

558 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 20:16:01 ]
【審議中】
    ∧,,∧  ∧,,∧
 ∧ (´・ω・) (・ω・`) ∧∧
( ´・ω) U) ( つと ノ(ω・` )
| U (  ´・) (・`  ) と ノ
 u-u (l    ) (   ノu-u
     `u-u'. `u-u'

559 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 22:34:13 ]
手前の二人に耳が無いのが気になる

560 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 17:49:07 ]
>>556-557
トンチキな質問をして煽られたのか。

>>559
「手前」と思わせといて、実は下。
つまり、上に乗っかってる奴で隠れている。



561 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 03:44:26 ]
>>556
       _,,:-ー''" ̄ ̄ ̄ `ヽ、
     ,r'"           `ヽ.
 __,,::r'7" ::.              ヽ_
 ゙l  |  ::              ゙) 7
  | ヽ`l ::              /ノ )
 .| ヾミ,l _;;-==ェ;、   ,,,,,,,,,,,,,,,_ ヒ-彡|
  〉"l,_l "-ー:ェェヮ;::)  f';;_-ェェ-ニ ゙レr-{   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  | ヽ"::::''   ̄´.::;i,  i `'' ̄    r';' }   | 久々にトンチキ
 . ゙N l ::.  ....:;イ;:'  l 、     ,l,フ ノ   | 玉石混在で光るものもあった
 . |_i"ヽ;:...:::/ ゙'''=-='''´`ヽ.  /i l"  < のが、昔の2chなんだよな
   .| ::゙l  ::´~===' '===''` ,il" .|'".    | 今は石しかないから困る
    .{  ::| 、 :: `::=====::" , il   |     \________
   /ト、 :|. ゙l;:        ,i' ,l' ノト、
 / .| \ゝ、゙l;:      ,,/;;,ノ;r'" :| \
'"   |   `''-、`'ー--─'";;-'''"   ,|   \_



562 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 03:46:22 ]
>>559
pd3dDevice->SetRenderState(D3DRS_ZENABLE, TRUE);


563 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 00:12:04 ]
コナミの麻雀ゲームの名前なんだっけ

564 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 05:06:26 ]
真・麻雀だろ、スーファミの

565 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 03:33:23 ]
mobile fan club の略

携帯で月額料金を支払って登録すると会員になるファンクラブのこと

会員になると

チケットの先行予約やデジタル会報の閲覧

待受け画像や着うた、着メロ、ムービー等のサービスを利用できる。


566 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 03:34:20 ]
Mass Flow Controlerの略称。

気体の流量制御装置のこと。

真空装置などに微量、あるいは一定流量の気体を導入する時などに使用される。


567 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 14:03:09 ]
ttp://ja.wikipedia.org/wiki/MFC

568 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 15:27:02 ]
game11.2ch.net/test/read.cgi/gamestg/1159375041/

1 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2007/03/12(月) 15:26:41 ID:VIP/Boon
語れ

2 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2007/03/12(月) 15:27:05 ID:9qlxL9Bm
>>1
ちょ、何そのIDwwwwwwwwwwwwwwwwwwwwwwww

569 名前:sage mailto:sage [2007/03/29(木) 01:36:44 BE:830995788-2BP(0)]
質問です。

XP, Vista 上で動くプログラムを書いているのですが、
ダイアログやその他のUI系フォントとして、XPだと
MS Gothic 系 に、Vista だと主に メイリオ にしたいと考えて
います。

名前直指定とかは行わず、テーマとかシステムに
即したコードにしたいのですが、そもそもMFCのダイアログに
使われるフォントを、うまく切り替える方法すら分かりません。

そもそも、OSのフォントの扱いからしてよく分かってないのですが、
ここから調べていきたいと考えています。

なにかいい解決策がないでしょうか?

570 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 01:46:24 ]
MFCのダイアログの文字って
リソースで指定するんじゃないんの?




571 名前:569 mailto:sage [2007/03/29(木) 01:53:07 BE:363560674-2BP(0)]
>>570
その通りで、リソースで指定しています。ひとまず、ダイアログの
プロパティにて、"Use System Font" を true にしています。
そうすると、フォント名が"MS Shell Dlg" になります。

あと、開発環境を忘れていましたので、書いておきます。
VS2005 pro sp1
xp sp2, vista

572 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 06:02:23 ]
ダイアログのフォントを変えたい場合は CDialog::CreateIndirect を使う。
それかダイアログを表示した後でコントロールごとにフォントを変更する。

573 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 13:39:04 ]
親ダイアログの初期化処理が行われていることを知らせるために、
ポップアップダイアログを作って、プログレスバーで処理中が
わかるようにしようとしています。

プログレスバーは処理が行われていることが分かればよく、
タイマイベントに応じて単純にカウントアップするだけです。

具体的な手順として
@親ダイアログのOnInitDialogで、プログレスバーをもつ子ダイアログを作成
A子ダイアログのタイマイベントを起動(SetTimer)

B親ダイアログの初期化処理
(この間に、子ダイアログのWM_TIMERイベントでプログレスバーをカウントアップ)

C子ダイアログのタイマイベントを終了(KillTimer)
D親ダイアログのOnInitDialog終了

としています。
しかし意図した通りには動作しません。
原因として、Aで起動したタイマイベントが、Dのあとに動作を開始しているためです。
(Cの処理をコメントアウトしたところ、親ダイアログの表示後に、
OnTimerイベントが呼び出されていることを確認しました。)

そこで質問なのですが、

(i) Aで起動したタイマが、実際はDのあとまで起動されない理由と、
(ii) Aで起動したタイマを、Aのタイミングで動作させる方法

です。わかる方いらっしゃったらお願いします。


574 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 13:53:48 ]
>>573
(i)WM_TIMERはメッセージキューに置かれるが
そのメッセージを取りに行く処理(メッセージポンプ)が処理が終わるまで行われていないため。
(ii)子ダイアログを別スレッドで作成する。

とりあえずこれ読んで
ttp://msdn2.microsoft.com/en-us/library/ms644927.aspx

575 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 14:22:49 ]
>574
ありがd。
ただ、子ダイアログを別スレッドにしても、
メッセージポンプ自体が動いてないのだとすると、
子ダイアログの描画がイベントはちゃんとおこなわれるのん?

576 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 14:39:40 ]
>>575
>>574のURLを読んでくれ

577 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 14:56:30 ]
(゚д゚)読まぬ!

578 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 17:31:31 ]
読みたくないんだい

579 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 23:09:10 ]
>>573
(ii)どうしてもタイマ使いたいってんなら>>574の通り

親のOnInitDialog()の進行状況を表示したいだけなら
親側からユーザー定義メッセージをSendMessage()してやればよい
これ一番単純


このスレ死んでんのかと思ってたよ
>>573が態々ネタ創作したようにも見えるが

580 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 01:13:11 ]
タイマを使うのが、コード書く分には一番楽だなあ、ぐらいの考えです。
スレッド化はしてみたけど、どうにもうまく動かないところ。
別のところでこけてるのだろけど、いまのとこ原因不明です。

進行を知らせるダイアログをシングルトンで実装して、
MFCクラス、一般C++クラスを問わず、時間のかかる処理のときは、
動作中であることを気軽に示せるようにして、↓みたいな使い方を考えてます。

LoadingDialog->inst()->starg()

//時間のかかる処理

LoadingDialog->inst()->stop()



581 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 06:13:47 ]
普通に考えたら時間のかかる処理を別スレッドにする。
プログレスバーはステータスバーに表示

582 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 08:25:19 ]
>>580
逆に考えるんだ。
GUIスレッドはあくまでもGUIに徹し、時間の掛かる処理はワーカスレッドで行なう。
それがイベントドリブンということだ。

583 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 08:25:41 ]
質問は普通のプログラムの作りかたじゃなくて楽したいということか
だったらどうでもいいや

あと、よく考えたらWinRarなんかはダイアログにプログレスバーだな
あれはダイアログ側で時間のかかる処理か

584 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 14:26:50 ]
>>571
XP用とヴィスタ用の両方のダイアログを作る
OS種別でどっちかを使う


585 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 20:08:54 ]
>>556です
>>573
整理した方がいいよ
ワーカースレッドのタイミングで描画させようとすると君のようなパラドックスに嵌ります
この場合ワンクッション置いて、子ダイアログの遷移を親ダイアログがGETできるようにすれば
いいと思う、(インラインでGET関数を記述すればいい、SET関数も必要になると思う)
あくまでも主体は親で子は遷移を知らせるだけ(描画できるタイミングを通知)
一見普通に処理しているように見えてもワーカースレッドのタイミングで描画を行う
プログラムは間違いなく破綻します。

586 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 20:25:44 ]
>>558です
>>556に騙されるな

587 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 20:51:13 ]
>>586
>>585だが
なんだよ、マジレスしてるのにww
いいよ585の反対で実装してごらん面白いことになるよww
それから>>573は簡単だからタイマー割り込み使うって書いてたけど
MFCでタイマーの使い方ってネットでたまに見かけるけど
まともな使い方してない場合が多いよMSDNのコードも漏れ的には不満なんだが

588 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 21:31:23 ]
>>586です
>>556です」とか突然言い出すからネタで返しただけ。気にするな。
で、まともじゃないタイマーの使い方の説明キボンヌ。何か気になる。

589 名前:デフォルトの名無しさん [2007/04/11(水) 13:37:48 ]
各種コントロールを乗せた、WS_CHILD スタイルのダイアログ リソースを用意して、
CControlBar 派生クラスの OnCreate で CDialog::Create を呼び出して
コントロールバーの中にダイアログを入れています。
このとき、ダイアログ上のコントロールのメッセージは、
どうやって受け取ったらよいでしょうか?

int CFooControlBar::OnCreate(.....)
{
......
// コントロールを乗せたダイアログをリソースから読み取る
m_hogeDlg.Create(IDD_HOGE_DIALOG, this);
m_hogeDlg.ShowWindow(SW_SHOW);
}

m_hogeDlg のメッセージを受け取るには?

590 名前:586 mailto:sage [2007/04/11(水) 19:42:13 ]
>>588
マジレスはもうおしまい後は自分で考えてねww
それではそっけないのでヒントは 「一意」
サービスしすぎww以上
>>>589
C++から勉強しなおした方がいいYOというか
585で説明してるしww
皆さん結果を求めたいがために焦りすぎ、実装する以上もっと気の細かい
シーケンスが必要ですww
質問「何々の関数に、赫々しかじかの引数を与えましたが結果がでません」
答え「準備不足です」





591 名前:556 mailto:sage [2007/04/11(水) 19:44:18 ]

すまん>>556です

592 名前:デフォルトの名無しさん [2007/04/12(木) 09:38:16 ]
CListCtrlについて質問です。
ある関数で、CStringの文字列を引数として渡し、リスト内に同じ項目が
存在しない場合、追加処理を行っています。

LVFINDINFO listInfo;
listInfo.flags = LVFI_STRING;
listInfo.psz = inStr;

// Itemを検索
int findItem = listCtrl.FindItem(&listInfo);

このとき、FindItemを使って検索するときに大文字と小文字を別物として検索することはできますか?
今のままだと、AAAの後にaaaを追加しようとしたときに既に追加されていると判断され、
リストにはAAAしか存在しない状態になってしまいます。


593 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 09:49:38 ]
>>592
できない。

594 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 11:10:59 ]
>>592
FindItemで見つけた後、一致しているかどうか自分でチェックしたら?

595 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 03:27:54 ]
つ仮想リストビュー

596 名前:592 mailto:sage [2007/04/13(金) 14:43:38 ]
ありがとうございました。FindItemで見つけた後strcmpで再度比較することで対応しました。
ただ、3つ以上重複した場合(aaaa,AAAA,AAAA, aaAAなど)、の場合、
AAAAのが2つ重複して追加される問題があるので
仮想リストビューにする方法も含めて、何か対応を考えて見ます

597 名前:デフォルトの名無しさん [2007/04/13(金) 23:24:35 ]
見つかった文字列+1を指すポインタアドレスを引数として再起呼び出しをすれば如何?

598 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 14:07:26 ]
メッセージを投げたいオブジェクトを生成するために
安易に画面も持たないのに CDialog を継承したクラスをCreate してたり
するんだけど、(要は他のオブジェクトからメッセージを投げるのに、
有効なm_hWndが欲しいだけ)
CDialog じゃなくて CWnd を継承して有効な m_hWnd をもつ
オブジェクトを生成する手段ってあります?

599 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 15:13:15 ]
CWndを継承すればいいじゃない。何が問題なんだ?

600 名前:598 mailto:sage [2007/04/14(土) 16:07:09 ]
>>599
CWnd を継承したオブジェクトを Create しても
h_hWnd は 0x0000 なので CDialog を Create してます
なにか、画面に関係しないで CWnd を Create して 有効な
h_hWnd を得られれば文句無いんですが



601 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 17:12:16 ]
うちでは問題なく作成できるから、あなたのコードに問題がある。

602 名前:デフォルトの名無しさん [2007/04/14(土) 18:04:49 ]
コントロールバー (CControlBar) にツールバー (CToolBar) を乗せることはできないでしょうか?

603 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 18:23:04 ]
>>598
::CreateWindowExでメッセージonlyウィンドウ作って、
CWnd::SubclassWindow使えばいいんじゃね?

604 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 18:33:19 ]
仮想リストビューってSetItemCountEx()で設定できるのは
1億件までですよね?ドキュメントにはDWORDの最大数まで
サポートしているようなことが書いてありますが、
実際にそこまで設定することは出来ますか?
SetItemCountExを辿っていくとSendMessageで投げていますが、
1億を越える数字を設定するとSendMessageがFALSEを返すので
APIのバグのような気もしますけど。


605 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 18:36:08 ]
>>604
出来ません。

606 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 19:05:42 ]
>>604
>ドキュメントにはDWORDの最大数までサポートしているようなことが書いてありますが
実際はメモリ量とか空間の限界とかあるから無理。

607 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 19:13:09 ]
SetItemCountEx の仕様見ると int になってるけど

608 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 19:29:02 ]
そりゃまあ実際に限界があるのは仕方ないけど、
なんで「一億」にしてあるのかがわからん。
100000001件にすると表示されないのな。ワロス。
MSDNに書いとけよ。これじゃアメリカ国民全員の名前を
リストコントロールで表示することは出来ないじゃん。
マイクロソフトのくせに自国民の数すらサポートできない
コントロールを作るなんて非難の対象だな


609 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 20:35:56 ]
大丈夫、マイクロソフトなんて国はないから自国民は一人もいないので。

610 名前:598 mailto:sage [2007/04/15(日) 08:16:10 ]
>>601>>603
ありがとうございます
今は休み中にてVSEしかないのでMFCが無いので試せないので
明日にでも試そうと思います
ちなみに画面を持たないCWndオブジェクトをCreate()する場合、
どんな引数が望ましいのでしょうか?




611 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 09:00:12 ]
非表示ウインドウでもhWndはあるだろ
なかったらShowWindowで表示することもできない


ShowWindow
指定されたウィンドウの表示状態を設定します。

BOOL ShowWindow(
HWND hWnd, // handle to window
int nCmdShow // show state of window
);

パラメータ

hWnd
ウィンドウのハンドルを指定します。

nCmdShow
ウィンドウの表示状態を指定します。

612 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 22:16:49 ]
質問です。
MFCで作成したソフトを公開したいのですが、VS.net2003の入っていないパソコンで
自分の作ったソフトを実行してみると、
mfc71d.dll msvcp71d.dll msvcr71d.dll
が必要です、とでてきます。
これらのdllは勝手に配布しても大丈夫なのでしょうか?

613 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 22:30:07 ]
いいえ、デバッグ版を勝手に配布してはいけません。

614 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 22:34:11 ]
>>613 mfc71.dll などdがついていないものなら配布しても大丈夫なのでしょうか?

615 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 23:04:36 ]
>>614
MSに訊け。つーか付属ドキュメントくらい読め。

616 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 00:55:13 ]
>615
便乗で質問なんだが、その手の質問は
MSDN購読してなくても答えてもらえるの?

617 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 06:01:25 ]
そういう重要なことを正規ユーザーが知らないはずがない。
無料のexpressユーザー?と思ったけど
MFCなら製品版使ってるんだろうし、どうやって手に入れたんだろう?

618 名前:デフォルトの名無しさん [2007/04/16(月) 17:40:12 ]
すいません。くぐっても答えが見つからないので教えてください。
MFC AppWizerdで作ったDLLを
Win32 Application(SDK)から呼び出せますでしょうか?

619 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 22:46:38 ]
DLLの作りによる

620 名前:デフォルトの名無しさん [2007/04/21(土) 20:43:01 ]
…そのまんまやなw



621 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 02:12:22 ]
>>617
> 正規ユーザーが知らないはずがない
いや、キッチリとは知らんよ俺は
VC4,VC6,VS8の正規ユーザーなんだけどさw


622 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 07:54:49 ]
そらあほだ。

623 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 11:35:15 ]
電車乗ったことあるけどキップの買い方知らないとかそういうレベル

624 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 11:36:16 ]
地方の人は知らないかもしれないけれど、今や切符を買わなくても電車に乗れるからねぇ。

625 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 12:38:59 ]
喩えの誤謬に突っ込む莫迦ありき。

626 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 13:00:28 ]
いや、寧ろ誤謬と思ってないからこそ。
実際、知らなくても利用できると言いたかった。

627 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 14:21:36 ]
他のソフトならいざ知らず、開発ツールでそんなやつがいるとは驚きだw

628 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 14:56:35 ]
_bstr_t strData[3];
strData[0] = "0000";
strData[1] = "1111";
strData[2] = "2222";

COleSafeArray sa;
sa.CreateOneDim(VT_BSTR, 3, strData);

_variant_t va = sa;

とやってみると、_variant_tのコンストラクタで例外が出てしまいます。
sa.CreateOneDim(VT_BSTR, 3, strData);
sa.CreateOneDim(VT_BSTR, 3);
とすると通過するので、CreateOneDim()にstrDataを渡す方法が
間違ってるのかなと思うんですけど、
_bstr_t配列はどうやって渡すものなんでしょうか。
それとも、CreateOneDim()には_bstr_t配列は渡せない?


629 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 14:58:29 ]
> sa.CreateOneDim(VT_BSTR, 3, strData);
> sa.CreateOneDim(VT_BSTR, 3);
> とすると通過するので

sa.CreateOneDim(VT_BSTR, 3, strData);
の部分を
sa.CreateOneDim(VT_BSTR, 3);
とすると通過するので

のミスです。失礼しました。
よろしくお願いいたします。

630 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 16:25:30 ]
_bstr_tの配列≠BSTRの配列



631 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 16:41:39 ]
>>630
ということは、_bstr_t配列のままだとCreateOneDim()に直接は渡せないということですよね。
SAFEARRAYとかはまったくの未知で、このへんの使いかたって、
ネット上を探してもなかなか見つからないのですが、
_bstr_t配列やCString配列からCreateOneDim()に渡すBSTR配列を作る方法って、ご存知無いでしょうか。

632 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 17:06:44 ]
ソース見るかメモリダンプして内部構造調べてみれば?

633 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 17:21:39 ]
切符買わないってどうやるの?

634 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 17:29:32 ]
オレはもう何年も切符買ってないなあ
Suicaとパスネットでやってきたが、最近はパスネットもいらなくなったし
オートチャージで入金もない。
車はETCで料金所はとまらないし、旅行先でレンタカー
借りるときもETC車載かどうかを気にしてる

635 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 17:30:45 ]
飛行機もfelica携帯使ってチェックインもカウンターに行かないし
並ぶことがほとんどなくなった

636 名前:デフォルトの名無しさん [2007/04/27(金) 23:24:51 ]
で、これらは相談か?

637 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 02:40:31 ]
いいえ相談ではありません
日本語の練習です


638 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 11:12:47 ]
VC6 MFCです
プロジェクトの設定の、デバッグ、C/C++、リンクにプロジェクトオプションがあるのだが
コマンドラインからビルドする場合この引数をどの様に渡したらいいの?


639 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 11:21:41 ]
CL をコマンドラインから起動するときは、次の構文でオプションとファイル名を指定します。

CL [option...] file... [option | file]... [lib...] [@command-file] [/link link-opt...]

640 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 11:40:00 ]
>>639
サンクス



641 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 02:23:43 ]
msdev MyProject.dsp /MAKE "MyProject - Win32 Debug" /REBUILD
とかは?

642 名前:デフォルトの名無しさん [2007/04/30(月) 22:58:55 ]
おそらくかなり初歩的な質問なのですが、ダイアログから別ダイアログを開くためにはどうすればよいのでしょうか?
VBのShowのようなコマンドがあるのかと思ったのですが、よくわかりませんでした。
よろしくお願いします。

643 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 23:05:30 ]
CAboutDlgを参考に

644 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 05:06:10 ]
>>642
インスタンス生成してから
a) Create() して ShowWindow()
b) DoModal()
のどちらでも。つか、MSDNくらい嫁。

645 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 12:44:36 ]
VC6 MFCです
メニュー→ツール→オプション→ディレクトリ配下の
インクルードファイル、ライブラリファイルは何処に保存されているのしょうか?
C:\program Files\Microsoft Visual Studio配下はgrepしてみましたがありませんでした
レジストリに記録されているのでしょうか?
知ってる人いたら教えてホスイ


646 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 13:45:47 ]
パスの順番でファイルを検索する。

647 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 14:50:26 ]
>>645
ちょっと探してみたがレジストリの
HKEY_CURRENT_USER\Software\Microsoft\DevStudio\6.0\Build System\Components\Platforms\Win32 (x86)\Directories
に入ってるみたいだよ

648 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 17:28:42 ]
>>647
>>645ですが
神が降臨しました、ありがとう実は現在ではVC6 MFCのUIが非常に悪いので
秀丸のマクロと融合させてできる限りの操作を秀丸中心にお行おうと思っていたところです
そういう訳で探していました、本当にありがとね
処でMFCで作成したプログラムはコマンドラインからビルド、コンパイルまで出来るのでしょうか?
(rcファイルはVCで作ってあると仮定してです)?

649 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 17:40:50 ]
そりゃあできるっしょ。
プロジェクトのプロパティで、コンパイルとリンクのコマンドライン見られなかったっけ
それ参考にしたらいいと思う。

650 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 17:45:48 ]
>>649
サンクスです、取り合えず今レジのバックアップを保存したところです
これからゴリゴリとマクロを書いていきますww



651 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 18:35:22 ]
全然見当はずれの方向に進んでるみたいだけど
相当頭堅そうだから本人のやりたいようにやらせて置くのが一番だな
わざわざレジストリの場所教えてやったやつはかわいそう

652 名前:デフォルトの名無しさん [2007/05/01(火) 21:19:12 ]
Platform SDKについてるMFCのソースをビルドすれば
OSについてるものとまったく同じDLLが出来上がるんですか?

653 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 00:37:19 ]
おい、Platform SDKはもう無くなったって、誰か教えてやれ。

654 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 17:48:50 ]
VC2005 MFCです。
複数のモードレスダイアログを入れ子のような感じで作成したいのですが
孫のウィンドウを作成したところで正常に動作しなくなってしまいました。
実際のコードは下のように書いています。

//ビューでマウスがクリックされたら子ウィンドウとしてモードレスダイアログを生成
void CtestView::OnLButtonDown(UINT nFlags, CPoint point)
{
CTestDlg *testdlg;
testdlg = new CTestDlg();
testdlg->Create(CTestDlg::IDD);
testdlg->SetParent(this);
testdlg->ShowWindow(SW_SHOW);
CView::OnLButtonDown(nFlags, point);
}

//ビューで作成した子ウィンドウのボタンが押されたら、孫のモードレスダイアログを生成
void CTestDlg::OnBnClickedButton1()
{
CTestDlgB *testdlg;
testdlg = new CTestDlgB();
testdlg->Create(CTestDlgB::IDD);
testdlg->SetParent(GetParent());
testdlg->ShowWindow(SW_SHOW);
}

何か根本的な勘違いをしてしまっているのでしょうか?
初歩的な質問ですいません、よろしくお願いします。


655 名前:654 mailto:sage [2007/05/02(水) 17:52:31 ]
少し変えて試してみたコードをそのまま書き込んでしまいました。
testdlg->SetParent(GetParent());

testdlg->SetParent(this);
でした。

656 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 18:58:47 ]
「正常に動作しなくなってしまいました」を説明してくれ。
解決の重要な手がかりなんだから。

657 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 19:14:54 ]
関係ないけど
モーダルならそういう風にローカル変数でもいいけど
モードレスだと関数抜けた後のことが気になる。

658 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 19:17:27 ]
ローカル変数ではないでしょ。
PostNcDestroy で delete this が入ってるか、メッセージで何とかしてるのかと

659 名前:654 mailto:sage [2007/05/02(水) 21:03:30 ]
>>656
すいません、説明不足でした。
わかっている限りだと2パターンの変な挙動をしていて
1つはダイアログのウィンドウ自体は生成されているようでウィンドウの移動などはできるのですが
再描画のコードが動作していない時のような感じになる事があるのと(必ずというわけでも無いようです)
生成した孫ウィンドウがアクティブな間は何の問題も無く動作しているように見えるのですが
一度、子のウィンドウをアクティブにしてしまうとアプリケーション自体がフリーズしたような
状態になってしまうといった感じです。
念のためSDIの新規プロジェクトを作り直して見ても結果は同じでした。

>>657,658
一応 PostNcDestroy で delete this をしていました。
こういう場合でもスタティックかグローバル変数にしておいた方が安全なのでしょうか?


660 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 21:44:10 ]
>659
思いつきで書いただけだから
「関係ないけど」と断ってる



661 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 21:45:08 ]
>>659
ttp://msdn2.microsoft.com/en-us/library/ms633541.aspx
>if hWndNewParent is not NULL and the window was previously a child of the desktop,
> you should clear the WS_POPUP style and set the WS_CHILD style before calling SetParent.
>Windows 2000/XP: When you change the parent of a window, you should synchronize the UISTATE of both windows.

なんでSetParent使ってるの?
ダイアログリソースに子スタイル設定して、Createで親指定すればいいのに。

662 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 00:14:49 ]
あの最低な質問かもしれないですが、万が一という可能性もあるかもしれないので
質問させてください
MFCでコンソールアプリって作成出来ないですよね、バージョンは問いません。


663 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 00:24:43 ]
いや、普通にできるが。

664 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 00:52:33 ]
>>663
え〜まじっすか?
新規作成→プロジェクトからはMFC ActiveX ContorolWizard or MFC AppWizard(dll) or MFC AppWizard(exe)しかないのだけど?
これじゃあコンソールアプリは作成できないよね?


665 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 00:57:51 ]
>>664
Win32コンソールプロジェクトを選択して、詳細でMFCサポート追加しろ。

666 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 01:16:56 ]
>>665
そういう裏技があったのね、サンクス

667 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 09:51:02 ]
CStringを返す関数から戻ってきたクラスは自分で廃棄しないでも良いですか?

668 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 10:28:54 ]
CStringを返すと、呼び出し側ではそれのコピーを受け取るだろう。

669 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 00:16:24 ]
よくこういう仕様のクラスあるけど腐ってるよね?>CString
一見便利そうに見えるけどインスタンスがハッキリしないから
すげー扱いづらい
こういう仕様デフォにする奴ってアフォだろ

なげー文字列をCStringで扱うとアフォかってほど遅くなる
結局、使えない

670 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 00:49:03 ]
   ○○○
  ○(・ω・)○ ソンナコトイワレテモ
   ○○○   ウチ、ボン・デ・ライオンヤシ
  .c(,_uuノ



671 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 11:46:34 ]
>>669
>インスタンスがハッキリしないから
君が何を言っているのか判らないよ…
理解できてないだけじゃ?

672 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 11:54:13 ]
>>669
せめて他の文字列を取り扱う手段と比較してから結論を出してくれ。

673 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 17:21:39 ]
なんか、C/C++以外の言語と勘違いしてんじゃね?


674 名前:デフォルトの名無しさん [2007/05/07(月) 18:55:30 ]
リソースエディタでダイアログボックスを作って、
CDialogを継承した派生クラスを作りました。
コントロールは、追加したメンバ変数を操作して
扱えましたが、ダイアログ自身はどうやれば操作
できるのでしょうか。
タイトルバーの文字列を変更する方法を模索中です。
this->SetWindowText("タイトル文字列");
を試すと異常終了だし。

675 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 19:29:26 ]
宇宙天地 與我力量 降伏群魔 迎来曙光
我が左手に封じられし鬼よ
今こそその力を、示せえーー!!
うおおおおおおーーー!!!
俺の生徒に、手を出すなあーーー!!!!

676 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 20:10:38 ]
>>674
異常終了の詳細キボンヌ

677 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 20:22:51 ]
>>676
「Visual C++ Runtime Error [中止][無視][キャンセル]」
のような感じ文面のダイアログが出て終了。

本来ならそれで正解のはずということでしょうか。
何らかのプログラム上のミスが原因で異常終了が出てるのではないか
という意味でしょうか。

678 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 20:30:27 ]
SetWindowTextをどこで呼び出してる?
コンストラクタの中とかじゃダメだよ。
ちゃんとウィンドウが作成されてCDialogオブジェクトに
アタッチされてからじゃないと。

679 名前:デフォルトの名無しさん [2007/05/07(月) 20:40:02 ]
>>672
じゃ、mallocで確保した領域に突っ込んだ文字列でいいよ
これで想像付く?
後付けであれがないこれがないごちゃごちゃいうなよぶっ殺すぞ

680 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 20:43:58 ]
>>678
エディットコントロールやスタティックテキストの値を変更している直後
で呼び出してます。
SetWindowTextで正解で、やはり何かプログラム上のミスでしたか。
わかりました、ありがとうございます。



681 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 20:50:22 ]
CDialogもCWndの派生クラスだしな
そもそもエラーで止まったところで何エラーなのか調べなさいよ

682 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 20:58:27 ]
イヤです


683 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 22:29:57 ]
>>679
想像も何も、あんたが比較して実際に遅いかどうか判断しなさいよ。

684 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 22:39:03 ]
>>683
CStringは糞だろ
文字列に1文字ずつ足していくとどんどん遅くなってく類だろw

685 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 22:42:11 ]
どうやって足しているのか興味深いなぁ。
まさかとは思うが、CString foo = ""; for (;;) {foo = foo + '-'; std::cout << foo << std::endl;} とかしちゃってるんだろうかw

686 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 23:04:49 ]
横レスだけど、それで突然思い出したから自分用のメモ代わりに書いとく。

CString hoge, hoge2;
strcpy(hoge.GetBuffer(20), "this is a test.");
hoge="";               //クリアしたつもりだけど何故かクリアされていない
int length=hoge.GetLength();   //この値は確かにゼロ
hoge2=hoge;             //でもhogeもhoge2も"this is..."が入る

hoge="AAA";            //これなら上書きされる
int length2=hoge.GetLength();  //この値は3
hoge="";              //今度はきちんとクリアされる

687 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 23:06:47 ]
>>685
mStr += strbuff;
mStrはCString型のメンバ変数、strbuffは引数からうけとったchar*
メソッド実行するたびに鬱になるw

後、CStringの変数を引数に突っ込んで中身を変更したいときとかウザイ
transUnko(char* unko,char* chinko)
ってときにいちいち移し変えなきゃいけねぇじゃん
それか
transUnko(CString *unko,char *chinko)
作らなきゃいけねぇじゃん(俺の知識だと)
後、
strXXX系の関数でいい感じにすでにこさえてあるC言語自分ライブラリ使いたいときも面倒
つーか、気軽に文字列型として扱えないところがウンコだね
うにこーど?いらねぇってw対応予定ねーよ。マジでw

って書いてみたけどさ、
もし簡単にできるにしてもできることがわかりにきぃ
ねっとりべっとりしてやがんだこのクラス
つかいにくーい!

688 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 23:18:12 ]
MFC以外でもCString使いたいという話をよく聞くし、
MFCの中では評判いいクラスだと思う。
慣れないと使いにくいのは確か

689 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 23:24:37 ]
>686
CString::GetBuffer

解説
GetBuffer 関数から返されるポインタを使って文字列の内容を変更するときは、
次に他の CString メンバ関数を使う前に、ReleaseBuffer 関数を呼び出す必要があります。

690 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 23:38:10 ]
MFCを使うDLLの遅延ロードってNGなのかな?

というのも、delayimp.libの中ではAfxLoadLibrary()ではなく、
LoadLibrary()を使っているから、どうなんだろう??



691 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 01:12:30 ]
もともと遅延ロードってのは、セグメントを分けてれば Windows がちゃんとやってくれたんだよな。
MFCが自動的にやってくれるようになっただけで。


692 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 03:18:26 ]
GetBuffer 関数から返されるポインタを使って文字列の内容を変更するときは、
次に他の CString メンバ関数を使う前に、ReleaseBuffer 関数を呼び出す必要があります。


CString hoge, hoge2;
strcpy(hoge.GetBuffer(20), "this is a test.");
hoge="";               //クリアしたつもりだけど何故かクリアされていない
int length=hoge.GetLength();   //この値は確かにゼロ
hoge2=hoge;             //でもhogeもhoge2も"this is..."が入る
↑↑↑ここでコンパイル時にエラー出してくれりゃいいのに

hoge="AAA";            //これなら上書きされる
int length2=hoge.GetLength();  //この値は3
hoge="";              //今度はきちんとクリアされる



693 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 05:58:01 ]
>>692
逆だな。ReleaseBuffer()する前にそうやってバッファを変更できないようにするためにGetBuffer()があるんだ。
つまり、fclose()しないでfopen()し直して、ファイルが更新されていないって文句言うようなもんだ。

>>687
少なくとも、レガシーな文字列とCStringを混在させて使うのが間違い。
型が違うのだから、相互にそのまま使えないのは当然だと思うが。
例えばprintf()に渡すように文字列を変更しないならキャストオペレータのお蔭で手間要らずなんだし。
Ex.
void printSample(const char * foo) {printf("%s\n", foo);}
CString bar = "Bar";
printSample(bar);
文字列を変更する関数は参照でも渡せばいいし。
Ex.
void buildString(CString & foo) {foo += foo;}
CString bar = "Bar";
buildString(bar);


694 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 11:21:24 ]
いまいち、>692 がなにをしたいのか、全くわからん。
C++の事を何か勘違いしてるんじゃないだろうか。



695 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 11:25:02 ]
レガシー大好きっ娘に何言っても無駄

696 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 22:15:50 ]
ATLやWTLってSTLやBOOST、LOKIと親和性ありますか?

697 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 22:56:29 ]
ないよ

698 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 23:29:51 ]
STLと親和性高いWin32GUIライブラリがあった気がするんだが思い出せない

699 名前:デフォルトの名無しさん [2007/05/08(火) 23:45:24 ]
リストビューオブジェクトに一次元配列を直接セットする方法はないでしょうか?
いまはループで回してsetItemでセル一個ずつにセットしてます。
もっと効率がいい方法があればいいのですが。
よろしくお願いします。

700 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 00:47:08 ]
>>699
つLVS_OWNERDATA



701 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 01:13:12 ]
>>698
Win32 GUI Generics
www.torjo.com/win32gui/
sourceforge.net/projects/win32gui/

702 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 14:03:56 ]
>>694
>C++の事を何か勘違いしてるんじゃないだろうか。
いやいや、
>↑↑↑ここでコンパイル時にエラー出してくれりゃいいのに
なんて書くくらいだから
勘違いとかそういうレベルじゃない。

703 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 15:19:50 ]
ATL/STLはSTLと一緒に使える

704 名前:デフォルトの名無しさん [2007/05/09(水) 21:51:00 ]
VC6.0で下記のページをみてステータスバーをダイアログにセットしたのですが、
SetTextしても文字が表示されません。
ttp://athomejp.com/goldfish/mfc/dialog/statusbar.asp
MSDN等調べてみたのですが、実装方法がいろいろありすぎて、
どれが最適で何をしたらいいのかわかりませんでした。
すみませんが、よろしくお願い致します。

705 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 21:58:18 ]
>>701
ちょっと期待してたんだけど、全然更新されてないね…

706 名前:デフォルトの名無しさん [2007/05/13(日) 01:32:28 ]
宣伝なんだが、構いませんね!
wiki.livedoor.jp/vipshogi/d/FrontPage
ここで、将棋の駒を擬人化するプロジェクトをやってるんだけど、プログラマにソースをもって逃げられてしまいました。
ついては、オープンソースで、新しくプログラムを作ろうと思っています。
MFCを使って作られたプログラムを弄れて、ギャルゲっぽいものに興味があって、協力出来る人がいたら、来てくれませんか。
現行スレは、↓です。
wwwww.2ch.net/test/read.cgi/news4vip/1178980360/
宜しくお願い致します。

707 名前:デフォルトの名無しさん [2007/05/13(日) 01:41:34 ]
>>706
追記です。
現行スレが落ちていたら、↓に書き込みを下さい。
ex14.vip2ch.com/test/read.cgi/part4vip/1178465966/

708 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 02:10:27 ]
>>706
少しはまともな奴がいるっぽいけど
雑魚ばっかで話にならない
所詮妄想ばっかり先行してる烏合の衆か。
将棋部分に興味ないとかまったくわかんないとかレスが出るだけで俺は参加したくない。
馬鹿じゃねぇの

突破口だけいうと
フリーで将棋プログラム公開してる人に頼み込んで
画像表示部分だけちょいっと弄らせてもらって好きな絵表示できるようにしてもらったほうが
ナンボか可能性ある。

709 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 02:39:52 ]
>>708
どこを見たのか分からんが結構な物言いだな、特に前半
ちらっと覗いてみたが、そんなレスはなかったと思うが


710 名前:デフォルトの名無しさん [2007/05/13(日) 03:27:34 ]
>>709
だいたいこの状況じゃ
一番苦しいのってまちがいなくメインプログラマーでしょ?
絶対やんねぇよ
ゲーム製作をなめてる
絵のことしか興味ないならビューワーでも作ってろっての
好き勝手要望出すだけの立場の奴等なんかプログラマーは殺意しか湧かない
ゲーム製作現場だって金もらえるからしょうがなく仕事してるのがプログラマーだ

この状況でソフト作ったらまちがいなくすべて俺の手柄だと俺だったら思うね。ていうか間違いねーよ。
それなのにオープンソースにします?はぁ?ふざけろ

だからさ、こういうのやるつもりなら企画をする人間が間違いなくメインプログラマーを張れる人間でなければ絶対に頓挫する
ゲーム製作で一番大変なのはまちがいなくプログラマーだ
実際身動きとれないでしょ?

どういうシステムにしてどういう形のデータが必要になるのか?
プログラマーがいなくてもここまではできますっていう部分あるか?
欠片も浮かばねーだろ?一歩も身動きがとれないでしょ?



711 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 04:12:48 ]
うん、しかも金の流れが気になるー
偉そうにリーダー気取ってる奴の懐にいくらか入ってんじゃねーの?
ブログとも繋がってるしな

712 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 06:21:48 ]
>Q、バグ多すぎってレベルじゃねーぞ!!
>  A、バグ報告は多ければ多いほど、プログラム修正の参考になります。
なりません。

713 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 08:30:02 ]
手伝うどころか、優越感を得るための突っ込み先になってるな
大人気ないぜ

714 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 08:31:06 ]
>>711
え、どこに繋がってる?

715 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 12:30:42 ]
>>713
興味が先行してうっかりこれのメインプログラマーになっちゃった奴が可哀想だなと

716 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 14:10:01 ]
VC++ 2005で開発を行っています。

CListCtrlで「大きいアイコン」表示をした時、スクロールの方向はどうしても、横スクロールになってしまいますが、
これを縦スクロールに変更したいと思っています。


どうやれば、縦スクロールに変わるのでしょうか。
よろしくお願いします。

717 名前:デフォルトの名無しさん [2007/05/13(日) 14:43:03 ]
くだすれVisual C++(超初心者用)その4
pc11.2ch.net/test/read.cgi/tech/1164787254/946-951
から引っ越してきました。よろしくお願いします。

VS2005のMFCです。 
CMainFramのID_FILE_NEWからOnFileNew関数を追加しました。 
この関数で必要な処理の後、追加前の本来の処理を呼びだすか、 
同等の処理を行いたいのですが方法がわかりません。その方法を教えてください。 



718 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 14:44:14 ]
>717
馬鹿には使えないからあきらめましょう

719 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 14:47:10 ]
教えるだけ無駄だな

720 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 15:33:57 ]
MFCに嫌気がさした人の数→
pc11.2ch.net/test/read.cgi/tech/1059196520/



721 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 16:12:08 ]
>717
OnFileNewを呼ぶ

722 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 16:12:30 ]
>>717
どちらかというと、CDocument::OnNewDocumentでどうにかすべきじゃね?

723 名前:717 mailto:sage [2007/05/13(日) 16:19:03 ]
とりあえず解決しました。
CMainFrameにメッセージを割りあてたのが間違いでした。
CWinAppにプロテクトのOnFileNewがあってこれがデフォルトの処理のようです。
CxxAppに割り当てて、もとからあった
ON_COMMAND(ID_FILE_NEW, &CWinApp::OnFileNew)を削除したら目的の動作になりました。
OnFileNewがプロテクトメンバだったので無いとか呼べないとか思ってしまったようです。

724 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 16:29:45 ]
>>715
なるほど、このスレの住人に対する優越感だったってわけか

725 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 16:43:45 ]
なんかよくわからんこと言ってるけどそのwiki誰に金入ってるかわからんぞ

726 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 16:50:27 ]
>>725
アフィってこと?
そんな感じに見えないんだけど……。

727 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 17:07:40 ]
可哀想だと思う事が優越感だって、わからんのかね

728 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 17:49:34 ]
>>726
じゃあ、稼がせてやったらいいよw

729 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 18:18:01 ]
>>728
質問に答えないで笑うだけとは、お前、アフォにしか見えんな
そんなに貶めたいなら、向こうで文句言ってくればいいだろうに
こっちに問題を持ち込むなよ

730 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 18:22:59 ]
>>729
そのレスを>>706に付けずに俺に言う辺り、お前も相当頭おかしいだろw



731 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 18:27:15 ]
>>730
反応するよりましだと思うが
まあいいや、お前がいなくなったらまたこよう

732 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 18:32:43 ]
なんか、大変な事になってる……
俺はただ単に、アフィしてるような場所ならいかないけど、そうじゃないなら手伝っても良いかなって思っただけなんだけど

733 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 18:50:05 ]
だからそういう話はあっちでやってくれ頼む

734 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 20:27:54 ]
>>716お願いします。

735 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 23:10:24 ]
>>716
LVS_ALIGNTOP。
プロパティウィンドウなら、表示-Alignment-Topを選択。

736 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 00:31:26 ]
>>735
ありがとうございます、一発で解決しました。

737 名前:デフォルトの名無しさん [2007/05/17(木) 01:56:51 ]
CMenu の TrackPopupMenu でポップアップ表示状態で処理がいったん停止している状態のプログラムがあるとします
これに対して外部からの通信などによって破棄処理がキックされたとします
すると TrackPopupMenu の後の処理が終わっていないためなのかエラーとなって不正終了してしまいます
これを防ぐにはどうしたら良いでしょうか?
(≒ OnDestroy でポップアップを正常に終了させるにはどうしたら良いでしょうか?)
(  つまり TrackPopupMenu の後の処理を実行させるということです)
VK_ESCAPE をポップアップの親ウィンドウに SendMessage することなどを考え付いたのですが、
それでもうまくいかずにほとほと困っております
何かご存知でしたら教えてくださいm(_ _)m

738 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 18:27:58 BE:27175027-2BP(222)]
>ポップアップ表示状態で処理がいったん停止している状態

にならないようにする=時間のかかる処理の合間にメッセージループを回すようにする

739 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 18:39:02 ]
>>738
TrackPopupMenu の動作を知らんのか

740 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 00:15:39 ]
>>737
>TrackPopupMenu の動作云々の前にお前が何をしたいのかが解らんなw




741 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 10:29:32 ]
>>737
EndMenu

742 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 12:17:31 ]
CStringのFormatMessageはFORMAT_MESSAGE_FROM_SYSTEM使えないですか?

743 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 12:43:18 ]
CString::FormatMessageのソース見ればわかる

744 名前:デフォルトの名無しさん [2007/05/22(火) 00:53:15 ]
>>741
情報ありがとうございます

ところで、その関数はどのように使用すればよろしいですか?
インターネットで検索してみたのですが、適切な情報が見つからなかったのですが……

745 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 01:55:02 ]
>>744
ttp://msdn2.microsoft.com/en-us/library/ms647637.aspx

746 名前:デフォルトの名無しさん [2007/05/22(火) 22:37:22 ]
>>745
ありがとうございます

英語ですか……
中学の時英語は常に1or2だった自分には辛いですねorz

747 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 05:34:15 ]
Win32APIに(*´Д`)ハァハァできるようになれば、すぐ読めるようになるよ♪
マニュアル英文だから変な構文も使われていないし、まともに日本語訳する必要も無い。

748 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 14:33:09 ]
CMainFrame::OnInitMenuPopup()で
メニューのポップアップ内を動的に作ろうとしてるんですけど、
このポップアップ項目の種類(たとえば「お気に入り」とか)は
どうやって調べればよいのでしょうか。
ポップアップ項目自身にはIDは付けられませんよね。

メニューの複数箇所やコンテキストメニューにも
同じ「お気に入り」ポップアップを置きたいので、
OnInitMenuPopup()の中で「お気に入りかどうか」を判断したいのですが。

749 名前:デフォルトの名無しさん [2007/05/25(金) 18:33:49 ]
誘導されてきました。

通信受信プログラムで受信データをエディットコントロール(複数行表示)に表示しているのですが、
以下のコードでは、エディットコントロールに文字列を追加する際に必ずスクロールされてしまいます。
スクロールされない方法を教えてください。

LineScrollで戻すと、1行書くごとに「下へスクロール→上へスクロール」となり、上下にスクロールが発生してしまい
とても見づらくなってしまいます。
「スクロールなし」でエディットコントロールに文字列を追加できないものでしょうか?

int iLen = edit->GetWindowTextLength();
edit->SetSel(iLen, iLen);
edit->ReplaceSel("Hello\n");

WinXP & Visual Studio 2003 & mfc7です。

750 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 18:36:41 ]
>>749
pc11.2ch.net/test/read.cgi/tech/1178432985/594の名前欄は調べた?



751 名前:デフォルトの名無しさん [2007/05/25(金) 19:09:59 ]
>>750
そ、そんなところに... (^^;)
やってみます。

752 名前:印刷が遅いのですが mailto:sage [2007/05/26(土) 12:43:26 ]
ただいま、印刷のテストをしてます。
ネットで見つけたサンプルコードで、印刷はできたのですが、
ものすごく遅いのです。
3000*3000の画像をプリントするのに、1時間かかります!

WindowsXPですが、他のアプリから印刷する場合は数分で印刷できるので、
プリンタやOSやドライバの問題ではなく、プログラムの仕方の問題だと思うのですが、

単純にプリンタ用のpDCに画像を送るだけでは速くはならないのでしょうか?




753 名前:印刷が遅いのですが mailto:sage [2007/05/26(土) 12:51:16 ]
以下は、ネットで見つけたサンプルコードで、このままでパターンが印字されます。

〜View::OnFilePrint(){
CPrintDialog myPtDlg(FALSE); HDC myPtDC; CDC myDC; DOCINFO myDocInfo;
if(myPtDlg.DoModal() == IDOK){
myPtDC = myPtDlg.GetPrinterDC(); myDC.Attach(myPtDC);
myDocInfo.cbSize = sizeof(myDocInfo); myDocInfo.lpszDocName = NULL; myDocInfo.lpszOutput = NULL;
myDocInfo.lpszDatatype = NULL; myDocInfo.fwType = 0;
myDC.StartDoc(&myDocInfo); CDC* pDC=GetDC();
myDC.StartPage();
for(y=0;y<3000;y++){ for(x=0;x<3000;x1++){
myDC.FillSolidRect(x,y,1,1,RGB(x,y,+y));
} }
myDC.EndPage();
myDC.EndDoc(); ReleaseDC(pDC); ::DeleteDC(myPtDC);
} }

754 名前:印刷が遅いのですが mailto:sage [2007/05/26(土) 13:06:10 ]
すみません>>753の訂正です。CDC* pDC=GetDC(); は不用でした。

>>753のコードをいじれば画像も印刷できるのですが、遅いです。
たとえば、下のように記述すると速いのですが、

for(y=0;y<30;y++){ for(x=0;x<30;x1++){
myDC.FillSolidRect(x,y,100,100,RGB(x,y,x+y));
} }

大きい画像の場合は、1ドットずつ描くしかないですよね?






755 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 14:11:23 ]
いいえ

756 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 15:04:14 ]
>>754
なんで大きい画像だと1どっとずつやるしかないの?

757 名前:印刷が遅いのですが mailto:sage [2007/05/26(土) 15:48:38 ]
>>756

1ドットずつやらないで済む方法があれば、それを知りたいわけです。




758 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 16:25:45 ]
頭悪いな

759 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 16:59:17 ]
>>757
小さい画像は1ドットずつじゃないの?

760 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 17:00:51 ]
ドットインパクトプリンタの話はスレ違いだぞ



761 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 17:04:24 ]
試しに3000*3000のビットマップ印刷してみれば?

762 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 17:08:29 ]
>>757
BitBltとかいう関数ねぇ?

763 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 17:09:47 ]
>>760
みたとこアホの子なので問題の切り分けなんて無理でしょう

764 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 17:28:15 ]
1ドット書くのにFillSolidRect使うアホ

765 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 17:41:42 ]
もうちょっと頭使ってもバチ当らないよねw

766 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 17:59:20 ]
3Dを使うゲームよりドット絵のゲームが好きだ!!!!

767 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 18:13:36 ]
>>766
 ∧_∧
 ( ・ω・) <俺にそんなこと言われてもね
 ( MFC )
 ./  つ
 ( / ̄∪

 ∧_∧
 ( ・ω・) <どっちかっていうと俺の出番じゃね?
 ( GDI+)
 ./  つ
 ( / ̄∪

 ∧_∧
 ( ・ω・) <いやいや俺だろ
 (DirectX)
 ./  つ
 ( / ̄∪

768 名前:印刷が遅いのですが mailto:sage [2007/05/26(土) 18:15:28 ]
>>755-766

そんなことを言ってる貴方たちも、本当は知らないのでしょう?

それとも印刷に関しては企業秘密かなんかですか?
自分が苦心して見つけた方法を、簡単に他人に話したくない気持ちはわかりますよ。

一緒に問題を解決しようという気持ちはないわけですか?
自分が知ってる方法が、最善だという確信があるわけですか?

BitBltを使う方法はもちろん知ってます。
ただ、それだと若干手順が増えますのでね。



769 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 18:22:16 ]
>>768
だから俺がBitBltって教えてやったじゃんw

770 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 18:22:16 ]
おぬしなにやつじゃ



771 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 18:25:19 ]
>>768
何様だよお前w
BitBlt抱えて空へ羽ばたけよw

772 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 18:26:18 ]
>そんなことを言ってる貴方たちも、本当は知らないのでしょう?
適材適所なので、あんたの求めるケースの適切解は内容が判らない限り説明しようが無い。

>それとも印刷に関しては企業秘密かなんかですか?
企業秘密にならない範囲でなら説明するに吝かではない。

>自分が苦心して見つけた方法を、簡単に他人に話したくない気持ちはわかりますよ。
勝手に判られても困る。寧ろ、それが判ると言い張るならもう少し言葉を選べ。

>一緒に問題を解決しようという気持ちはないわけですか?
ないな。

>自分が知ってる方法が、最善だという確信があるわけですか?
いいや、あくまでも適材適所。

>BitBltを使う方法はもちろん知ってます。
>ただ、それだと若干手順が増えますのでね。
増えるから何? 手順が増えてもそれが適切解なら選択すべきでは?
#適切解かどうかは知らんが。

773 名前:印刷が遅いのですが mailto:sage [2007/05/26(土) 18:42:00 ]
>>772

>>ただ、それだと若干手順が増えますのでね。
>増えるから何? 手順が増えてもそれが適切解なら選択すべきでは?

そうですか。
だらだら、手順が増えていいなら、どんなこともできますよ。
一応、なるべく、簡潔なコードで、よりよい効果を期待してプログラムをしてるわけで、
コードの増えるBitBlt以外にも方法があるかどうか知りたかったのですが、
BitBltが最善なら、それで行くことにしますよ。



774 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 18:46:19 ]
ダメだこりゃ

775 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 19:09:17 ]
馬鹿な・・騙りじゃなかったのか

776 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 19:15:19 ]
apiを無駄に3000*3000回呼んでも見た目が大事だよな

777 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 19:23:20 ]
>>773
おお、成長したじゃんw
1ドット書くのにFillSolidRect使ってたアホの言葉とは思えないねw

778 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 20:03:39 ]
>>777
sylphys.ddo.jp/upld2nd/manani2/src/1180177396812.jpg

779 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 23:43:50 ]
まあ、昔は大きな画像をプリンタDCに BitBlt出来なかったって事はある。
だから、ひとつひとつFillRectしたような実装や、大きいBitmapを小さく小分けしてBltしたりとか、
そりゃ小技を使ったよ。

それ、いまでも、ダメなのかな。

780 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 00:05:18 ]
いくらか小分けにすればいいだけであって1ドットずつはやらんよなw



781 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 00:29:43 ]
もっと簡潔なやり方があるに違いない病だな

782 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 07:14:12 ]
WinMainの記述はどこのフォルダのなんと言うファイルに書かれていますか?

783 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 07:42:55 ]
>>782
君の心の中に・・・

784 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 09:22:51 ]
appcore.cpp(96): // in non-running state until WinMain
appmodul.cpp(19): // export WinMain to force linkage to this module
appmodul.cpp(21): extern int AFXAPI AfxWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
appmodul.cpp(25): _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
appmodul.cpp(28): // call shared/exported WinMain
appmodul.cpp(29): return AfxWinMain(hInstance, hPrevInstance, lpCmdLine, nCmdShow);
appterm.cpp(27): // Standard cleanup called by WinMain and AfxAbort
makefile(402): $D\winmain.obj $D\barcore.obj $D\bartool.obj $D\bardlg.obj \
wincore.cpp(3553): // Standard init called by WinMain
winfrm.cpp(762): nCmdShow = pApp->m_nCmdShow; // use the parameter from WinMain
winmain.cpp(18): // Standard WinMain implementation
winmain.cpp(21): int AFXAPI AfxWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
alpha\mfc42.prf(961): ?AfxWinMain@@YAHPAUHINSTANCE__@@0PADH@Z
alpha\mfc42u.prf(761): ?AfxWinMain@@YAHPAUHINSTANCE__@@0PAGH@Z
intel\mfc42.def(1341): ?AfxWinMain@@YGHPAUHINSTANCE__@@0PADH@Z @ 1576 NONAME
intel\mfc42.prf(466): ?AfxWinMain@@YGHPAUHINSTANCE__@@0PADH@Z
intel\mfc42d.def(949): ?AfxWinMain@@YGHPAUHINSTANCE__@@0PADH@Z @ 1190 NONAME
intel\mfc42u.def(1334): ?AfxWinMain@@YGHPAUHINSTANCE__@@0PAGH@Z @ 1569 NONAME
intel\mfc42u.prf(321): ?AfxWinMain@@YGHPAUHINSTANCE__@@0PAGH@Z
intel\mfc42ud.def(946): ?AfxWinMain@@YGHPAUHINSTANCE__@@0PAGH@Z @ 1187 NONAME







[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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