■MFC相談室 mfc17d.dll■
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2006/11/21(火) 10:38:31前スレ
■MFC相談室 mfc16d.dll■
http://pc8.2ch.net/test/read.cgi/tech/1146117893/
0002デフォルトの名無しさん
2006/11/21(火) 10:54:080003デフォルトの名無しさん
2006/11/21(火) 14:30:37>>1乙
0004デフォルトの名無しさん
2006/11/21(火) 23:02:46> 意外と使えるCMemFile
その CMemFileの内容を、ディスクに保存せずに、CHtmlView で
表示出来ないかなぁ。
0005デフォルトの名無しさん
2006/11/21(火) 23:38:42今SDIアプリケーションで開発しているのですが
メインフレームのタイトルが
xxxxx - xxxxxxxxxx
のようにハイフンがついております。
このハイフンを消すことは可能でしょうか?
0006デフォルトの名無しさん
2006/11/22(水) 00:11:42〜\n\n〜\n\n\n〜\n〜
となっていると思うけれど、このうちのどれかの〜がメインフレームのタイトルになっていて、そのハイフンを消せばタイトルからハイフン消える。
CHtmlView::GetHtmlDocumentでhtmlドキュメントのIDispatchを取得して、
IHTMLDocument2::writeで注入。
0009デフォルトの名無しさん
2006/11/22(水) 22:05:49できれば2、3冊くらい
0010デフォルトの名無しさん
2006/11/22(水) 22:58:590011デフォルトの名無しさん
2006/11/23(木) 02:55:20いや、そうは思わんけど・・・w
0012デフォルトの名無しさん
2006/11/23(木) 06:21:35↓
MFCのライブラリのソース読む
MFCはこれぐらいで十分
あとはwin32apiでもやった方がいい
0013デフォルトの名無しさん
2006/11/23(木) 15:28:54子画面の作成方法は分かったのですが、
それにダイアログのようにコントロールを貼り付ける方法が分かりません・・・
CFormViewを土台にクラスを作ると子画面にできないですし、
CMDIChildWndを土台にクラスを作るとコントロールが使えません
両方の良いとこ取りをしたようなクラスはありませんか?
もしくは子画面でコントロールを使う方法を知りませんか?
(上は標準作成の子画面ではなく自作するクラスの方の話です)
0014デフォルトの名無しさん
2006/11/23(木) 15:36:460015デフォルトの名無しさん
2006/11/23(木) 16:03:54色々と試してみたのですが無理でした
クラスの新規作成でCMDIChildWndを継承したクラスを作り、
グローバル関数でインスタンス生成して呼び出していますが、
表示されないですし、コントロールも貼り付けられませんです
0016デフォルトの名無しさん
2006/11/23(木) 16:36:100017デフォルトの名無しさん
2006/11/23(木) 16:41:34標準で作られる子画面ではなくてですか?
0018デフォルトの名無しさん
2006/11/23(木) 16:45:09初心者向けの入門書でも読んどけ
0019デフォルトの名無しさん
2006/11/23(木) 17:44:38通常はウィザードで選択したViewで表示を行い、特定のDocumentを扱う場合のみ
新しいView(FormView派生)で表示したいってことかな?
0021デフォルトの名無しさん
2006/11/23(木) 19:26:44任意のviewで表示できるけど
0022デフォルトの名無しさん
2006/11/23(木) 19:58:58FormViewのMDI子ウィンドウはウィザードで普通にできるけれど、
もしかして、スプリッタやろうとしてるんじゃないのかな?
それならウィザードじゃ、FormViewはじかれて、できない。
FormViewの派生自作し、CreateStaticでスプリッタ作らないと。
Doc2つ作ってそれぞれにDoc-View割り付ける方法もあるらしいけれど、
オーソドックスに行くなら、この例ならTreeViewをウィザード使ってDoc-View使って、FormViewはDoc-View使わず、他のクラスからのアクセスはFormViewのオブジェクト宣言。
002322
2006/11/23(木) 20:02:04作ってみればわかるけど、スクロールバーでボタンなどのコントロールが隠れたりして、
ありえないというか、まずチマタじゃ見ないFormになる。
蛇流ゆえに作っていくと色々とワナがあるよ。
002422
2006/11/23(木) 20:12:08CVIEWで作って、CMDIChildWndのハンドル取得して、オーナードローがいいよ。
DDX使えなくて、MFCの恩恵は使えないけど。
0025デフォルトの名無しさん
2006/11/23(木) 20:29:23{
m_button1.ShowWindow(SW_HIDE);
}
これにより、ボタン2を押すとボタン1は非表示状態になるのですが、
void CTestDlg::OnButton3()
{
m_button1.SetRedraw(FALSE);
m_button1.SetRedraw(TRUE);
m_button1.Invalidate();
}
としてボタン3を押すと、ボタン1が再び出てきてしまいます。
Invalidateだけだと出てきません。
SetRedrawって、SW_HIDEも勝手に戻してしまうものなのでしょうか?
これから作ろうとしているものは、
SetRedraw(FALSE)〜SetRedraw(TRUE)の間でいろいろ内部情報の更新をして、
その結果に合わせて表示状態も切り替えようとしているのですが、
非表示にしても、最後のSetRedraw(TRUE)で表示状態に戻ってしまいます…。
0026デフォルトの名無しさん
2006/11/23(木) 20:47:56非表示なものにSetRedraw()やInvalidate()をする意味は?
非表示の間は描画処理は必要ないでしょ。
0027デフォルトの名無しさん
2006/11/23(木) 20:48:11SetRedrawの実際の処理WM_SETREDRAWをMSDNで見ても何も書いてないね。
m_button1の表示状態見て処理するしかないんじゃない?
002825
2006/11/23(木) 21:30:17>>27
非表示なものにSetRedrawをするわけではなくて、
SetRedrawの最中に、更新結果によっては非表示にする
ということをやりたかったのです。
SetRedraw(FALSE)をした以上は、
最後は必ずSetRedraw(TRUE)を呼ばないとダメですよねぇ。
0029デフォルトの名無しさん
2006/11/23(木) 21:31:21this->SetRedraw(TRUE);
this->Invalidate();
もしくは
SetRedraw(FALSE);
SetRedraw(TRUE);
Invalidate();
にしたらうまくいったけど、なんでか分からん。
0030デフォルトの名無しさん
2006/11/23(木) 22:04:46いいんでしょうか?
誰か教えてください。
それと勉強できるホームページとか。
よろしくです。
0031デフォルトの名無しさん
2006/11/23(木) 23:33:34つ[MSDN]
003213
2006/11/23(木) 23:40:38返事が遅くなって申し訳ございません
>>19
そうです
普段はウィザード生成の標準子画面で操作を行い、
ボタンが押されたときに別の子画面を表示する感じです
(他にも同じ子画面が複数表示されないような制御も
行いたいと考えています)
>>22-24
基本的にやりたいことは単純にダイアログのようにコントロールが
貼り付けられて、それへの操作を処理のトリガとする子画面を持つ
MDIアプリを作りたいだけです
しかし、思ったように上手く、とても困っている状況です
つい数ヶ月前までVBしか経験のない状態でしたので、VC++6.0(MFC)の
ドキュメントビューアーキテクチャなども理解できていません
MFCで作れないWindowsアプリは無いと聞いたのと処理速度の問題から
こちらの言語での開発を始めたのですが・・・
0033デフォルトの名無しさん
2006/11/23(木) 23:59:31「フォーム ベースの MFC アプリケーションの作成を開始するには」
これでフォームひとつはできるはず。
0034デフォルトの名無しさん
2006/11/24(金) 00:32:44MSDNにのってるよ。
http://support.microsoft.com/kb/141499/JA/
このサンプルでは切り替える時に今までのViewを削除してるので
ちょっと変更が必要。切り替えより生成が面倒な感じ。
SDIで切り替える場合はこっち
http://support.microsoft.com/kb/141334/JA//
0035デフォルトの名無しさん
2006/11/24(金) 00:40:42ありがとうございます
それらのサイトで調べてみます
0036デフォルトの名無しさん
2006/11/24(金) 00:54:031:新規MFCウィザードMDI、後すべてデフォルトでプロジェクト作成。
2:リソースで新規ダイアログ作る
3:新規フォームじゃなく新規クラスでCFormViewの派生クラスを作る(2のリソースID指定)
4:新規クラスでCDocumentの派生クラスを作る
5:リソースstringテーブルに次を追加する
Form\n\nForm(*.frm)\n.frm
注)\n\nの間に何か入れるとアプリケーション立ち上がり時、もしくはメニュー>新規作成時にCViewとCFormView選択可になる。
今は、CViewのみ立ち上がる。
6:C〜AppのInitInstance実装のAddDocTemplate(pDocTemplate);の下に以下を追加
pDocTemplate = new CMultiDocTemplate(
IDR_〜,//5のstringID
RUNTIME_CLASS(C〜Doc),//4のクラス名
RUNTIME_CLASS(CMDIChildWnd),
RUNTIME_CLASS(C〜View));//3のクラス名
AddDocTemplate(pDocTemplate);
6:このファイルの頭の#includeの後に追加した、FormViewとDocumentクラスの.hファイルを#includeを記述
7:これで実行(Formを確認したい時は4の\n\nの間に何か入れる)
けれど、C++はできるなら、VCは普通はWIN32アプリから入るんだけど、この先かなり難儀するかもしれないな。
0037デフォルトの名無しさん
2006/11/24(金) 01:00:01細かなご回答、ありがとうございます
その手順で試してみます
0038デフォルトの名無しさん
2006/11/24(金) 01:03:03003913
2006/11/24(金) 01:08:10教えて頂いたことを試してみます
0040デフォルトの名無しさん
2006/11/24(金) 01:22:00CViewのメニューなりからのイベントでCFormViewを開く時は、
CChildFrameのオブジェクトを取得して(CViewクラスからならGetParentFrameで取得できる。
ドキュメントテンプレにdoc-frame-viewの枠組みは登録されているので、新たにnewしてはいけない。)
これを*pChldFrmとすると、
イベントハンドラに
if(!pChldFrm->LoadFrame(・・・
{
return FALSE;//もしくは失敗した時の例外処理
}というようにFormを作り、
pChldFrm->ShowWindow(〜/*定数*/);
pChldFrm->UpdateWindow();
して表示してやる。
0041デフォルトの名無しさん
2006/11/24(金) 01:30:34Form\n\nForm(*.frm)\n.frm
を
\nForm\n\nForm(*.frm)\n.frm
しておいてもらえるかな。やれば意味わかると思う。
0042デフォルトの名無しさん
2006/11/24(金) 01:55:21#include"C〜Doc.h"
#include"C〜View.h"
の順番で。たまたまコンパイルビルドとおっちゃうかもしれないけど、
includeの順番はとっても重要だから。
0043デフォルトの名無しさん
2006/11/25(土) 13:15:51ありがとうございました
この件に関しての問題は解決しました
次はDLL側にある子画面を呼び出し側(MDI)で表示/利用することに
挑戦しようと思います
また質問に来るかもしれませんが、よろしくお願いします
0044デフォルトの名無しさん
2006/11/26(日) 14:17:52このクラスで256色以上のビットマップを
貼り付けるにはどうしたらよいのでしょうか?
リソースエディタ上は16色しかでません。
何かうまい方法ありましたらご教授願いたいです。
004544
2006/11/26(日) 14:33:200046デフォルトの名無しさん
2006/11/26(日) 16:02:20http://www.google.co.jp/search?q=CToolBar+256+&ie=Shift_JIS&oe=Shift_JIS&hl=ja
256bitmap使うだけなら簡単だけど、あれこれカスタマイズしようとすると結構大変。
004744
2006/11/26(日) 16:32:370048デフォルトの名無しさん
2006/11/26(日) 18:01:17class CMyList : public CListView
としたのですけど、以下の一連の処理、
OnPreparePrinting()
OnBeginPrinting()
OnPrepareDC()
OnPrint()
OnEndPrinting()
が、ファイルメニューの印刷プレビュー項目を選択すると呼び出されるのですが、
同じく、印刷項目からですと何の反応もありません。
標準的な機能として呼び出されるのが当たり前と思っていたので、
ちょっと困ってしまっています。
OnPrint()に印刷処理を記述してプリンターに出力したいのですが、
どのようにしたら良いのかご存知の方、教えていただけませんか。
環境は.NET2003+XP SP.2です。
(後々のメンテナンスのことも考えて、
あまりトリッキーなことをしないで実装できるのが理想です。。。)
0049デフォルトの名無しさん
2006/11/27(月) 21:30:49試していただきたいんですけど、
・SDIアプリケーションをデフォルトのままビルド
・デバッグ開始してツールバーをフローティングさせる
・そのツールバーをセカンダリモニタ上に移動
とやったあと、そのツールバーをサイズ変更できますか?
自分の環境(VC6.0)ではセカンダリモニタ上ではサイズ変更できないんですけど…。
0050デフォルトの名無しさん
2006/11/27(月) 22:15:40このダイアログの上で他のウィンドウをぐりぐり動かすとダイアログが再描画された時に
背景が部分的に欠けてしまう(ダイアログの地の色が出る)事があるんですが、
これってどんな理由が考えられるでしょうか。
005150
2006/11/27(月) 22:27:390052デフォルトの名無しさん
2006/11/27(月) 22:40:320053デフォルトの名無しさん
2006/11/27(月) 23:30:570054デフォルトの名無しさん
2006/11/28(火) 00:13:23標準的なCViewのサブクラスは印刷時に
CView::OnFilePrint();を呼び出している。
ただしCListViewから呼び出しても印刷できるかどうか
わからん。
0055デフォルトの名無しさん
2006/11/28(火) 19:46:02試した。確かにサイズ変更できない。
原因は非公開クラスのCDockContext内のStretch()にあって
dockcont.cppの314-315行目のサイズ取得のところ。
最新のMFCではこっそりと修正されてる。
(VC6SP6)
HWND hWndDesk = ::GetDesktopWindow();
::GetWindowRect(hWndDesk, &rectDesk);
(VC2005)
rectDesk.left=GetSystemMetrics(SM_XVIRTUALSCREEN);
rectDesk.top=GetSystemMetrics(SM_YVIRTUALSCREEN);
rectDesk.right=rectDesk.left+GetSystemMetrics(SM_CXVIRTUALSCREEN);
rectDesk.bottom=rectDesk.top+GetSystemMetrics(SM_CYVIRTUALSCREEN);
VC6ではCToolBarとCDockContextを派生させて対処するしかない(当方では一応成功)。
非公開クラスなのでググってもほとんど情報がないけど
修正内容は違うがCDockContextを弄ってるのはあった。
http://www.ddj.com/184410272 英語だがStep3,Step4の文章が多少参考になる。
http://www.tkb-soft.hmcbest.com/diary_2005_03.htm 日本語。最後の方がグダグダでかなり強引。
0056デフォルトの名無しさん
2006/11/29(水) 01:44:19フォルダやファイルのフルコントロール拒否ってどうやってみたらいいでしょうか?
今はとりあえず、書きこんで見て書けなかったら・・・とかやっています。
もっとスマートな方法はないでしょうか?
0057デフォルトの名無しさん
2006/11/29(水) 06:17:19IEの履歴ウィンドウみたいなのあるじゃないですか?
あのスプリッタに「X 閉じるボタン」が付いてるやつ。
あれってMFCの機能で実現出来るものですかね?
スプリッタウィンドウにして一つのViewをFormViewにして
その中に各種のコントロールを設置すればそれっぽくなりますけど
閉じるボタンが押された時に、スプリッタを完全に非表示にしないといけない訳で
スプリッタの大きさ0じゃなく、動的にスプリッタの数を変更とか出来るのでしょうか?
0058デフォルトの名無しさん
2006/11/29(水) 08:58:38あれはBrowser Extension の Explorer Bar
http://msdn2.microsoft.com/en-us/library/aa753587.aspx
>あれってMFCの機能で実現出来るものですかね?
本人次第
0059デフォルトの名無しさん
2006/11/29(水) 09:49:59サブクラスで操作(数だけじゃないよ)すればできる。
流れ書こうかと思ったけどCodeGuruとか見たほうが早い。
ペインが左右に1つずつしかないなら、ほんの数行で済むはず。
0060デフォルトの名無しさん
2006/11/29(水) 10:31:28なるほど… そういう物だったんですね…
>>59
今、色々試していた所、CDialogBarを利用して
似たような事が出来るかも知れないと思いました。
出来ればVC++のIDEみたく、ドッキング可能にもしたかったので
こっちの方がより理想に近いのかもしれません。
006149
2006/11/29(水) 20:45:04試していただきありがとうございます。
やっぱりこれグラフィックカードの問題とかではなかったんですか…。
ツールバーももちろんなんですが、
http://support.microsoft.com/kb/143255/ja
↑を参考にサイズ変更可能なダイアログバーを用意したんですけど、
セカンダリモニタ上でサイズ変更ができないのがかなり痛いです。
これって、VC6のままMFCだけ最新のものを使うということは無理で、
VC2005の環境にしてしまうか、派生クラスを自分で作ることになるんですよね?
ドッキングを捨ててモードレスダイアログにしてしまったほうがいいのかな…。
まずは教えていただいたサイトなどを元にして
なんとか挑戦してみたいと思います。
ありがとうございました。
0062デフォルトの名無しさん
2006/11/29(水) 22:26:25仕組みそのものは簡単で、アプリケーションからグローバル関数を通じて呼び出されます
グローバル関数は子画面ごとに用意し、関数の引数にポインタを指定する形でデータの受け渡しを行います
それで早速これを作り始めたのですが、自分の知識が乏しいこともあって問題が発生してしまいました
それは、ウィンドウを上手く表示させて処理させることができないということです
ダイアログの方はモーダル表示であるためか、特に問題なく表示させて処理させることができました
しかし、ウィンドウの方は違いました
新規クラス作成でCFormViewを継承したクラスを追加しているのですが、生成の段階で問題が発生してしまいます
コンストラクタがprotectedとなっているため、newで生成したときにエラーとなるのです
これは手動でpublicに変えることで表面上は解決しました
しかし、標準でprotectedになっていたことには何か意味があるのではないかと不安に思えてきました
大丈夫なのでしょうか?
また他にも問題があります
それは、メモリの開放です
ウィンドウはモーダルではないため、基本的にグローバル変数として使っています
これが問題となるのはユーザが閉じるボタンでウィンドウをデストロイした場合です
グローバス関数では、対応するウィンドウのグローバル変数がNULLでない場合に明示的にDestroyWindowを呼んでいます
その後にdeleteをしております
しかし、ユーザがすでにウィンドウをデストロイしていた場合、エラーが発生します
これをどうにか防ぎたいのです
ウィンドウがすでにデストロイされていることを知る手段はありませんか?
またはメモリが未開放であることを知る手段はありませんか?
とても困っております
知恵を貸してください
0063デフォルトの名無しさん
2006/11/29(水) 23:18:34Viewの作成は通常newは使わず
CView *MyView = (CView *)RUNTIME_CLASS(CMyView)->CreateObject();
context設定して MyView->Create( ・・・ );
とかいう感じ。
後半はframeを保持しているのがどっちか不明なのでパス。
006462
2006/11/30(木) 00:09:29レスに大感謝です
参考にさせて頂きます
グローバル変数を保持しているのはDLLです
つまり、ウィンドウ&ダイアログは常にDLLの管理下にあります
アプリケーションは子画面の表示を指示するのとデータ受け渡しのみです
0065デフォルトの名無しさん
2006/11/30(木) 00:50:100066デフォルトの名無しさん
2006/11/30(木) 04:17:02私も興味あります。
VC++6というか、VisualStudioのようなMDIを実現する方法。
006760
2006/11/30(木) 04:56:11前書き込んだ者ですけど、多分、ダイアログバーを自分で改造して
似た様な物が出来るんじゃないかと思うんですが。
設置したコントロールもダイアログの状態によって位置、大きさを変更する等して。
外観は全部自分で独自に描画して似せて。
例えば、あの二本線のRebarみたいなのも自分で描画して。
CDialogBarのDDXが効かないのは、CDialogに書き直せば確かOKだった筈ですし。
0068デフォルトの名無しさん
2006/11/30(木) 19:00:30リソースを日本語版と英語版を用意して、以下のような設定にしています
英語版ビルド時には日本語を無視
日本語の場合には英語リソースを無視
この方法でビルドした場合、ダイアログに直接貼り付けてあるStaticテキストや
ボタンのCaption等は正しく言語の切替が行われていますが
StringTableから読み込んで表示する場合、英語版が全て空白になってしまいます
正しく読むにはどうしたらいいでしょうか?
0069デフォルトの名無しさん
2006/11/30(木) 19:09:49007068
2006/11/30(木) 19:43:41開発しているのはプラグインなのですが、対象となるソフトの言語設定を変更したら上手く行きました
007149
2006/11/30(木) 22:37:56CDockContextの派生クラスを作成し、以下の3つをオーバーライド。
・virtual void StartResize(int nHitTest, CPoint pt);
・void Stretch(CPoint pt);
・BOOL Track();
StartResize()とTrack()は、CDockContextのものをそのまま手を入れずにコピー。
Stretch()は、例の部分をVC2005版に修正し、それ以外はそのままコピー。
そのほかに、これらの関数で使われている定数や構造体の宣言をそのままコピー。
CToolBarの派生クラスを作成し、EnableDocking()をオーバーライド。
m_pDockContext = new CDockContext(this);
の部分を、上のCDockContextの派生クラスをnewするように修正し、
それ以外はそのままコピー。
というソースファイルを作成し、
SDIのツールバーをこのCToolBarの派生クラスに置き換えてみたところ、
無事にセカンダリモニタ上でもサイズできました。
「当方では一応成功」っていうのも、やはりこのような感じなのでしょうか?
007262
2006/11/30(木) 22:54:50フレームとビューとドキュメントをCCreateContextで連結させるのに苦労しました
上手に表示されたときはとってもハッピーになりました
さて、申し訳ないですが本日も質問があります
それはビュー(CFormView)に張り付けたダイアログリソースについてです
なぜか分からないですが、呼び出しアプリケーション側のダイアログリソースに置き換わってしまいます
DLLのダイアログリソースが表示されません
Resource.hが怪しいと思っていますが、どうすれば解決できるのか分かりません
アドヴァイスを頂けませんか?
あと、昨日の質問が残っています
>>62の後半、メモリ開放についてです
CFormWndのインスタンスを持っているのはDLL側です
ユーザが閉じるボタンやAlt+F4でデストロイしたことを察知して2度デストロイやdeleteするのを防ぎたいです
大変にクリティカルな問題なのでとても悩んでいます
インターネット検索や書籍で解決策を探していますが、まだ解決には至っていません
アドヴァイスをお願いします
0073デフォルトの名無しさん
2006/12/01(金) 00:14:31相変わらずFrameの位置が不明瞭です...
次の3つの内から一つを選択しなさい。
1.Exe側のCMainFrameにDLL側で作成したCFormViewを結合している
2.ExeとDLLにそれぞれFrame&Viewの対がある
3.その他
上段で上手に表示されたと書いてるけど、中段読むとFrameとViewの
結合に失敗してるし訳分からない。別な話?
下段CFormWndのbase class はCFormView or CFrameWnd ?
007472
2006/12/01(金) 00:16:17すみません
選択肢1が該当します
0075デフォルトの名無しさん
2006/12/01(金) 00:27:520076デフォルトの名無しさん
2006/12/01(金) 00:49:13であれば、Viewをdeleteする必要はない。
FrameとViewが正しく結合されていれば、exe側Frameが閉じられる際に自動で削除される。
CView::PostNCDestroy()参照。
0077デフォルトの名無しさん
2006/12/01(金) 01:11:51うん
0078デフォルトの名無しさん
2006/12/01(金) 01:18:01例えば開発時に、EXEがReleaseでDLLがDebugだとすると。
メモリ管理のランタイムが別になるんで、EXEでnewしたメモリをDLLで開放しようとすると、
当然そんなメモリは管理してないから落ちてしまうと。
0079デフォルトの名無しさん
2006/12/01(金) 01:27:38問題ないんじゃないの?
77は根拠を示すべし。
0080デフォルトの名無しさん
2006/12/01(金) 06:53:15別のアプリで確保したメモリを別のアプリで解放できるか?って話しになるんじゃない?
0081デフォルトの名無しさん
2006/12/01(金) 09:12:040082デフォルトの名無しさん
2006/12/01(金) 10:26:11バージョンが同じでも、MFCをスタティックリンクしてるとダメだよ。
0083デフォルトの名無しさん
2006/12/01(金) 14:28:49008455
2006/12/01(金) 19:42:03そんな感じです。というより全く同じですね。
VC6ではやむを得ないと思います。
>>65-67
http://www.codeproject.com/docking/
http://www.codeguru.com/cpp/w-d/docking/
スクリーンショット見た感じ、↓のが参考になるかも。
http://www.codeguru.com/cpp/w-d/docking/article.php/c1447/
http://www.codeguru.com/cpp/w-d/docking/article.php/c1451/
http://www.codeproject.com/docking/sizecbar.asp
>>62&>>72
どっかのスレで参考になる文献はないかと聞かれたから
URL貼ったんだが全く読んでないんだな。
考えられる原因の一つは、delete this;して自殺するクラスがあるということ。
CFrameWndやCViewがまさにそういうクラスなのでその可能性があるんじゃない?
76も答えてくれてる通り。
0085デフォルトの名無しさん
2006/12/02(土) 16:41:12MDIから別プロジェクトの画面を子画面として表示させたいのですが、
どういう風に作ればいいのでしょうか。
0086デフォルトの名無しさん
2006/12/02(土) 17:26:410087デフォルトの名無しさん
2006/12/02(土) 17:32:47008849
2006/12/03(日) 13:05:02やはりこういう派生になるのですね。安心しました。
VC7でも同じ問題が発生するようで、VC2005じゃないと直ってないようです。
008940
2006/12/03(日) 16:05:47の続きで、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を新規子ウィンドウで表示できたよ
0090デフォルトの名無しさん
2006/12/04(月) 13:59:24ソフトを書いていたんですが、タブに重ねたリストビューの列サイズを操作すると
リストビューの表示が乱れる現象が出てしまいました。
http://www.uploda.org/uporg604606.zip.html
サンプルプロジェクトです。VC2005で作りました。
http://www.uploda.org/uporg604603.gif
1つめのリスト。こういう感じで一番右の列境界をタブの外へ右にドラッグすると
スクロールバーが現れます。通常の動作です。
http://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
と順番を入れ替えると表示が乱れなくなりました。逆に、タブの行をリストの先頭
に持っていくと今度は両方のタブでリストの表示が乱れるようになります。
結果オーライといえばそれまでなんですが、どうしてこれで問題が解決するのか納得が
いきません。リソース中の定義順が何に影響しているのでしょうか?
0091デフォルトの名無しさん
2006/12/04(月) 14:05:470092デフォルトの名無しさん
2006/12/04(月) 14:46:26Zオーダーの問題じゃね?
0093デフォルトの名無しさん
2006/12/04(月) 16:30:03009490
2006/12/04(月) 22:53:30リソース定義の順番がZオーダになるというのが将来にわたって保障された
仕様なのかどうかが疑問なので、コントロールを重ねる場合のZオーダは
きちんとSetWindowPosでコード中に書いておくことにします。
0095デフォルトの名無しさん
2006/12/06(水) 06:13:15HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam\MUICache
に VS_VERSION_INFO の FileDescription の値が書き込まれてしまいます。
FileDescription を消しても実行ファイル名が変わりに書き込まれてしまいます。
どうしたら書き込まないように出来るでしょうか?
0096デフォルトの名無しさん
2006/12/06(水) 10:01:560097デフォルトの名無しさん
2006/12/06(水) 23:59:45PASVモードを使ったときにどのポートが使われているかというのは
どうやって取得すれば良いでしょうか?
0098デフォルトの名無しさん
2006/12/12(火) 21:25:29このリストの特定セルだけ背景色を変えるにはどうしたら良いですか?
ステータス値に応じてセルの色が変わるような機能を実現したいのですが……
0099デフォルトの名無しさん
2006/12/12(火) 21:26:36各コントロール毎に違う背景色を設定したいのですがどのようにすればよいのでしょうか?
OnCtlColor()メソッド内でコントロールの判定ができればよいと思うのですが・・・。
どなたかご教授の程よろしくお願い致します。
OSはWinXP SP2、開発環境はVC++ 2005です。
0100デフォルトの名無しさん
2006/12/12(火) 21:45:51カスタムドローじゃねぇの?
>>99
普通にウィンドウハンドル比べたらどうよ?
010198
2006/12/12(火) 21:47:33無知で申し訳ないのですが、カスタムドローとはどのようなものですか?
0102デフォルトの名無しさん
2006/12/12(火) 21:55:03http://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
010398
2006/12/12(火) 21:57:44すみません、自分で検索するべきでした
どうもありがとうございました
010499
2006/12/12(火) 22:00:20レスありがとうございます。
if(GetDlgItem(IDC_STATIC_COLOR1) == pWnd){
AfxMessageBox(L"一番目のコントロール");
}
//以降コントロールの数分else if
試しにこんなコードでやってみたのですが引っかかりませんでした。
比較処理が悪いのでしょうか?
0105デフォルトの名無しさん
2006/12/12(火) 22:06:07まあ、駄目だったら、そもそもIDC_STATIC_COLOR1が本当にそいつの直下に配置してあるコントロールなのかどうなのか
ってところがあやしいんじゃね?
010699
2006/12/12(火) 22:22:41OnInitDialog内で
GetDlgItem(IDC_STATIC_COLOR1)->SetWindowText("あいう");
で文字は表示されたので問題はないと思うのですが・・・。
もう少し調べてみます。
010799
2006/12/12(火) 22:31:54すみません、教えていただいた
pWnd->m_hWnd == GetDlgItem(IDC_STATIC_COLOR1)->m_hWnd
でできていました。(メッセージボックスが表示されていなかったのでできていないと思っていました)
どうもありがとうございます。
0108デフォルトの名無しさん
2006/12/12(火) 22:38:020109デフォルトの名無しさん
2006/12/13(水) 16:35:12まずは、CMainFrame に MDIタブ用の CDocBar を配置したいのだが、
どこをどうオーバーライドしたらいいんだ?
CMainFrame::recalcLayout() あたり?
0110デフォルトの名無しさん
2006/12/13(水) 17:02:480111デフォルトの名無しさん
2006/12/13(水) 19:25:44なんだかこの間からぶち当たった問題をことごとく質問してないか?
0112デフォルトの名無しさん
2006/12/13(水) 19:32:030113デフォルトの名無しさん
2006/12/13(水) 19:34:02相談しようぜ。
MDIの基本的な部分はOKなん?
0114デフォルトの名無しさん
2006/12/13(水) 19:52:360115デフォルトの名無しさん
2006/12/13(水) 20:17:28MFCって結構むずいじゃん。
俺、ドキュメントビューアーキテクチャーとかいう仕組み覚えるのに何日も必要だったぞ。
まず、ドキュメントビューアーキテクチャーの構造なんて大して重要なもんだと思ってなかったし(SDIで組んでたのもあって)。
この状態でMDIプログラミング特攻すると、はっきりいってハマルじゃんw
0116デフォルトの名無しさん
2006/12/13(水) 20:57:27ダイアログをいくつか作成(このときフォントをMSゴシックの12ptに変更)し、
各ダイアログ毎にクラスを作成(CPropertyPageクラスの派生クラス)して
メインメニューに[プロパティ]項目を追加、そのイベント内で
・プロパティシートのインスタンス生成
・プロパティページをプロパティページにAddPage
・DoModalで表示
しています。
このとき、表示された各ページのフォントサイズが標準のMS UI Gothicの9pt
で表示されてしまっています。なのでCPropertySheetの派生クラスを作り、
OnInitDialog内でフォントサイズの変更を行ってみたのですが変化なしでした。
なぜこのような現象が起こるのでしょうか?
0117デフォルトの名無しさん
2006/12/13(水) 21:00:50タブコントロールなら、全ページフォントを設定する必要があるな。
プロパティシートにもそんなのあんじゃね?(適当w)
0118デフォルトの名無しさん
2006/12/13(水) 21:10:57それでも変わらないんですよ。各ページのコントロールのサイズも
ちっちゃくなってますし。全ページのコントロールの位置、サイズ、フォントを
設定しないといけないんでしょうか。
0119デフォルトの名無しさん
2006/12/13(水) 21:42:180120デフォルトの名無しさん
2006/12/13(水) 21:44:25だからおいらの相談に答えてくれよー
0121デフォルトの名無しさん
2006/12/13(水) 21:46:33あ、やっぱ、手動なんだw
0122デフォルトの名無しさん
2006/12/13(水) 21:48:25ドキュメントビューアーキテクチャ(なげぇなw)の理解は大丈夫ということでOK?
0123デフォルトの名無しさん
2006/12/13(水) 21:57:52MFCにCDocBarなんてあったけ?
0124デフォルトの名無しさん
2006/12/13(水) 22:20:15すまん CDockBar だった
CDockBar はアンドキュメンテッドなクラスで、CControlBar を配置するための滑走路みたいなものだよ
0125116
2006/12/13(水) 22:43:28SendMessageToDescendants()?でフォントは変更できましたが、
サイズとかの変更の仕方が分かりませんでした。
0126デフォルトの名無しさん
2006/12/13(水) 23:09:570127デフォルトの名無しさん
2006/12/13(水) 23:33:370128デフォルトの名無しさん
2006/12/13(水) 23:47:280129デフォルトの名無しさん
2006/12/13(水) 23:49:05まず、全体っちゅーか概要ぐらいは理解しないと
なにやるにも知ってる人間にお伺いを立てないと何もできなくなっちゃうぞ。
0130デフォルトの名無しさん
2006/12/14(木) 01:57:250131デフォルトの名無しさん
2006/12/14(木) 03:22:110132デフォルトの名無しさん
2006/12/14(木) 07:02:17そういうときもある。
0133デフォルトの名無しさん
2006/12/14(木) 09:06:58ダイアログベース単位はフォントの幅が元になってる。
だからダイアログのフォントを変えると
コントロールのサイズと位置もフォントに比例して変わる。
このフォントサイズはダイアログを作る時に指定した
ダイアログボックステンプレートに定義されている。
ダイアログを作った後でフォントを変えても
コントロールは既に作成されてしまっているから
コントロールのサイズと位置は後で指定したフォントには影響されない。
以上ここまでMFCに限らずWin32でも同様
プロパティシートがリソースで定義されたダイアログのフォントを無視しているということは
たぶんメモリ上に読み込んだダイアログボックステンプレートのフォントを書き換えてから
その変更を加えたダイアログボックステンプレートでダイアログを作っているのではないか
と推測されるけど、あとはCPropertyPageのソース等を読めばわかることだから省略
0134デフォルトの名無しさん
2006/12/14(木) 10:51:38☆ チン 〃 ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄
ヽ ___\(\・∀・)< MDIタブ実装方法 まだー?
\_/⊂ ⊂_)_ \_______
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄/|
|  ̄  ̄ ̄ ̄ ̄ ̄ ̄:| :|
| .|/
0135デフォルトの名無しさん
2006/12/14(木) 11:22:300136デフォルトの名無しさん
2006/12/14(木) 11:43:330137デフォルトの名無しさん
2006/12/14(木) 13:05:500138デフォルトの名無しさん
2006/12/16(土) 17:26:02SetCheck()かと思ったのですが違うようでした。。
0139デフォルトの名無しさん
2006/12/16(土) 17:46:32基本クラスのメンバEnableWindowで
0140デフォルトの名無しさん
2006/12/16(土) 18:12:46やってみます。ありがとうございました。
0141デフォルトの名無しさん
2006/12/17(日) 19:17:510142デフォルトの名無しさん
2006/12/17(日) 19:21:10ツリーリストコントロールって標準で存在しませんか?
存在しない場合はどうすれば使えますか?
MFCで作ったフリーソフトでツリーリストが使われていたので、
何らかの方法でできるのではないかと考えているのですが・・・
ちなみに、今の自分の技術力では自作は無理です
0143デフォルトの名無しさん
2006/12/17(日) 19:25:35MDI子ウィンドウのビュー(フォームビュー)でリストコントロール(CListCtrl)を使っているのですが、
他の子ウィンドウがリスト部分の前に重なった後、リスト部分をクリックしてリストがある子ウィンドウを
アクティブにすると重なっていたリスト部分だけが再描画されません
原因はまったく不明です
どのようにすれば子ウィンドウがアクティブになった時に正常に再描画されるようにできますか?
0144デフォルトの名無しさん
2006/12/17(日) 19:29:21MDI子ウィンドウのビューでリストコントロールを使っているのですが、
子ウィンドウのサイズ変更にあわせてリストのサイズを動的に変更するには
どのようにすれば良いですか?
VC#ではプロパティ画面で簡単に設定できたのですが、
VC++にはないのでとても困っています・・・
以上4つ質問させて頂きました
何かご存知の方は、ご回答をよろしくお願いしますm(_ _)m
0145デフォルトの名無しさん
2006/12/17(日) 19:37:53子ウィンドウのサイズ変更にあわせてリストのサイズを動的に変更する
0146デフォルトの名無しさん
2006/12/17(日) 19:45:000147デフォルトの名無しさん
2006/12/17(日) 19:51:360148デフォルトの名無しさん
2006/12/17(日) 19:53:22普通リードオンリーでできんじゃねぇっけ?
リソースファイルの方の設定に編集できるとかできないとかそういうプロパティあった希ガス。
0149デフォルトの名無しさん
2006/12/17(日) 20:00:56昔、俺がみたのは自力で描画してたのしかみたことないな。
今、どうなってるのかはよくわからん。
0150デフォルトの名無しさん
2006/12/17(日) 21:27:01勉強してないの丸わかりなんだけど
よくリストコントロール表示できたね
どっかからソースぱくってきた?
0151デフォルトの名無しさん
2006/12/17(日) 21:43:340152デフォルトの名無しさん
2006/12/18(月) 01:37:330153デフォルトの名無しさん
2006/12/18(月) 16:59:07点の数は数千を越えていると思うのですが かなり処理に時間がかかります。
自分なりに色々調べたところ SetPixelは遅い ということがわかりました
同時に BitBlt とか 裏画面 などと 高速化に関するワードも出てきましたが
全く分かりませんでした
この言葉で全て解決しようとするのが悪いのですが 初心者です。
しかし、時間が本当に無いので時間をかけて勉強して… ができません。
ちなみに 点は一色です。 SetPixelの遅さを解決する方法で
まだ分かり易いだろう と思う方法を教えていただけませんか?
0154デフォルトの名無しさん
2006/12/18(月) 17:15:420155デフォルトの名無しさん
2006/12/18(月) 17:27:01具体的にはループ回数が3万でそのうちの一部の点を
描画しているので、最大でも3万ですね
1万は越えているかも知れませんが…
時間は3分から5分程度でした。
0156デフォルトの名無しさん
2006/12/18(月) 17:31:20描いても0.1秒ぐらいだったよ。(裏画面とか未使用)
描画以外の部分に時間かかってるんじゃないかな。
0157デフォルトの名無しさん
2006/12/18(月) 17:35:590158デフォルトの名無しさん
2006/12/18(月) 17:39:17ループ回数を増やすと比例関数的に時間も延びたので
てっきりそこが問題だと思っていました。
そうなるとどこに時間がかかっているのか全く分かりませんね…
ランダムウォークさせているのんですが そこか
1024*768もの配列を作って その中身全てを参照(検索)するという作業を
何度かしているのも原因かもしれませんね。
mallocなんかも全く使っていませんし…
ループ回数をこれ以上にするとエラーになり途中で動作が止まってしまうのも
同じ原因から来ているのかも…
しかし ここまでくるとここで相談させてもらう内容ではなくなってしまいますね。
0159デフォルトの名無しさん
2006/12/18(月) 17:42:35それは遅いだろ...
0160デフォルトの名無しさん
2006/12/18(月) 17:57:38>初心者です
>時間が本当に無いので時間をかけて勉強して… ができません。
結論: 無理
0161デフォルトの名無しさん
2006/12/18(月) 17:57:46いちいちSetPixel使うからだよ。
0162デフォルトの名無しさん
2006/12/18(月) 18:01:51まぁ特に考えてたわけではなく、むしろ本当は描画の
様子が分かるように1回1回点を打ちたかったのですが
それができなくて 最後にだけ描画してます。
(点を打つ配列に目印をいれて最後にその部分だけ描画)
結論を言うと そのループ及び巨大な配列の中身を参照するのに
時間がかかってるというわけなんですね・・・
>>160 ってことでFAですかね。
検索の仕方や配列の使用法などを再考してみますね。
こんなくだ質に付き合ってくださってありがとうございました。
0163デフォルトの名無しさん
2006/12/18(月) 18:13:410164デフォルトの名無しさん
2006/12/18(月) 18:17:040165デフォルトの名無しさん
2006/12/18(月) 18:20:290か1を直接書き込めばいいじゃない。
その後BMPに変換すれば?
0166デフォルトの名無しさん
2006/12/18(月) 18:54:300167デフォルトの名無しさん
2006/12/18(月) 19:57:42遅いというのは一瞬じゃないということ
自分で試さずに質問するのはやめてほしい。
0168デフォルトの名無しさん
2006/12/19(火) 00:26:28そういう時は、SetPixelだけをコメントアウトしてみる。
そうすれば、それが犯人かどうか分かる。
0169デフォルトの名無しさん
2006/12/19(火) 00:53:12130万pixelなんて問題にならないぐらい強烈に早いね。
今後使う機会があるかは微妙だけど勉強になったよ。
>>170 スレ違い房乙
0170153です
2006/12/19(火) 00:55:54>>163
確かにループには入ってますね
でもループもしないで1回だけ なんて できるんですか
>>164
そのような方法がある事は調べていたときにわかったんですが
なかなか理解できなかったんですよね
>>165
今は理解できないんで ちょっと考えて見ます^^;
ありがとうございます。
>>166
ですね。 158で自分でも言ってますが。 すみませんでした。
>>167
そうなんですか。 >遅いというのは一瞬じゃない そうですね
自分で試さずに とは 何のことでしょう?
確かに SetPixelに時間がかかっていたかどうかは
自分で画面全体にSetPixelで塗りつぶしてみれば分かったんですね…
そうだ と思い込んでしまったので思いつきませんでした ごめんなさい。
0171デフォルトの名無しさん
2006/12/19(火) 01:15:49そんな方法もありますね 次回から参考にします!
>>169
スレ汚しすみませんでした。
0172デフォルトの名無しさん
2006/12/19(火) 02:51:30つーか、普通にSetPixelとGetPixelが遅い。
GDI+を使っているならこれで速くなるっぽいことが書いてある。
http://junki.lix.jp/csgr/002ColorDataAccess1.htm
0173デフォルトの名無しさん
2006/12/19(火) 08:21:41> 1万は越えているかも知れませんが…
>
> 時間は3分から5分程度でした。
描画しているのは最大でも3万で時間は3分から5分
0174デフォルトの名無しさん
2006/12/19(火) 14:48:18そこに描画してBitBltするという、昔ながらのやり方を
試すのが今後のためにいいと思うが。
0176デフォルトの名無しさん
2006/12/19(火) 16:20:570177デフォルトの名無しさん
2006/12/19(火) 23:24:44よろしくおながいします
0178デフォルトの名無しさん
2006/12/19(火) 23:36:110179デフォルトの名無しさん
2006/12/19(火) 23:58:470180デフォルトの名無しさん
2006/12/20(水) 10:36:29存在しないから作るんですよ
0181デフォルトの名無しさん
2006/12/20(水) 10:49:580182デフォルトの名無しさん
2006/12/20(水) 11:18:15>>142 LVITEM::iIndent'
>>143 WS_CLIPSIBLINGS
0183デフォルトの名無しさん
2006/12/20(水) 12:37:11MFCを使わず、まったくゼロから MDIタブを作るのならそれほど難しくはない
と混じれ酢してみる
0184デフォルトの名無しさん
2006/12/20(水) 13:08:570185デフォルトの名無しさん
2006/12/20(水) 13:18:050186デフォルトの名無しさん
2006/12/21(木) 01:17:540187デフォルトの名無しさん
2006/12/21(木) 10:24:22そのためには void CMainFrame::RecalcLayout(BOOL bNotify) をオーバライドすればいいぞ
どうオーバライドするかは自分で調べろ
0188デフォルトの名無しさん
2006/12/23(土) 01:28:040189デフォルトの名無しさん
2006/12/23(土) 14:47:20XPログオン時のユーザ名とパスワードが正しいかどうかを、開発したプログラム上で
確認したいと思っているのですが、どのようにすればよろしいでしょうか。
0190デフォルトの名無しさん
2006/12/23(土) 14:51:25ここはライブラリの専用スレですよ
0191デフォルトの名無しさん
2006/12/23(土) 14:55:43スイマセン、他スレで聞いてきます。
0192デフォルトの名無しさん
2006/12/23(土) 15:26:31どうすれば取得できるでしょうか?
0193デフォルトの名無しさん
2006/12/23(土) 15:35:000194デフォルトの名無しさん
2006/12/23(土) 15:42:35色々調べてみたのですが、GetWindowLongの使い方がいまいちよく分からないです。。
具体的にどう使えばいいか、ご教授願えますでしょうか(><
0195デフォルトの名無しさん
2006/12/23(土) 15:49:270196デフォルトの名無しさん
2006/12/23(土) 15:56:33LONG lStyle = ::GetWindowLong(m_hWnd, GWL_STYLE);
で取れると思うんですけど、そこからどうすればいいか分からないんです。
どこを見れば分かりますか?
0197デフォルトの名無しさん
2006/12/23(土) 16:04:120198デフォルトの名無しさん
2006/12/23(土) 16:07:050199デフォルトの名無しさん
2006/12/23(土) 16:20:22MFC以前の問題ですか・・・
もっとよく調べてきます。
0200デフォルトの名無しさん
2006/12/23(土) 23:28:320201デフォルトの名無しさん
2006/12/24(日) 22:58:19現在、ダイアログAのボタンを押すと、ダイアログAを隠して
ダイアログBをモードレス表示し、
表示されたダイアログBのボタンを押すと、ダイアログBを隠して、
ダイアログAをモードレス表示するツールを作成しております。
そこで、ダイアログAのボタンを押すと、ダイアログAを隠して
ダイアログBをモードレスで表示することは出来たのですが
モードレスで開いたダイアログBのボタンを押すと、
ダイアログAをモードレスで開く方法がわかりません。
教えてください。
よろしくお願いします。
0202デフォルトの名無しさん
2006/12/24(日) 23:20:220203デフォルトの名無しさん
2006/12/25(月) 05:05:35エスパー値が低いのに初心者の質問に答えるな。話がややこしくなる。
要は循環参照になっちまってコンパイルできねぇんだろ?
つまり、
メインウィンドウ→ダイアログ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
0204デフォルトの名無しさん
2006/12/25(月) 08:32:31あれは表に出ない親ウインドウがあってそこから2つのダイアログを切り替えてる
しまった、ここまで書いて全然MFCと関係ないのに気がついた
0205デフォルトの名無しさん
2006/12/25(月) 14:39:50MFCなら仮想親ダイアログにメンバでABダイアログがぶら下がっているだろうから
ダイアログからは親のメンバを呼ぶだけでいい。
>>204
ほ〜らMFCらしくなったでしょw
0206デフォルトの名無しさん
2006/12/25(月) 20:24:540207デフォルトの名無しさん
2006/12/25(月) 20:25:25おまいらちゃんとMFCがわかっているのか?
0208デフォルトの名無しさん
2006/12/25(月) 21:03:39行くっつぅか元々>192からしてMFCと・・・
0209デフォルトの名無しさん
2006/12/25(月) 21:27:26と誰かが言ってた。
0210デフォルトの名無しさん
2006/12/25(月) 21:50:49プロパティシートでSendMessageToDescendants()を使用し、
各ページのフォントサイズを変更しているのですが
なぜかリストコントロール内のフォントサイズだけ変更されません。
(ヘッダーは変更されていました。)
SendMessageToDescendants()を使用せず、リストコントロール
のSetFont()を使用すれば変更できるのですが、リストコントロール
に合わせてすべてのページですべてのコントロールにSetFontをするのは
避けたいです。なにかいい方法はありませんでしょうか?
0211デフォルトの名無しさん
2006/12/25(月) 22:06:20この前の質問どうなったっけ?
0212デフォルトの名無しさん
2006/12/25(月) 22:23:31今までリストコントロールを利用していないシートの
コーディングを行っていたのでてっきりうまく変更されていた
ものとばかり思っていたのですが、リストにデータを挿入して
表示したところリスト内のサイズだけ小さかったので
再度質問させていただきました。
0213デフォルトの名無しさん
2006/12/26(火) 01:30:222. 知ってる人が専門用語をあまり使わずに解説
3. 理解できない別の知ったか初心者が 「MFCと関係ない」
4. 質問者が3にむかついて失踪
最近この流れが多い。3の人は1年ぐらいROMって欲しい。
0214デフォルトの名無しさん
2006/12/26(火) 08:50:07C/C++を一通り勉強して、mfcでビュッフォンの針のシミュレーションプログラムを
作ろうと思ってるんですが、ダイアログベースで、ピクチャボックスに描画しようとして
も上手くいきません。CClient の矩形をCRectで取り
bottomとrightを数値で覚えさして、シミュレーション用の横棒を引くため
bottomを横棒の数で割り、movetoとlinetoでそれぞれの位置に線を引いたのですが
(用は、数値が1ならクライアント領域が二等分されるようになり
数値が2ならクライアント領域が三等分されるような形)
上手く等分されません。
なにか良い方法か、サンプルのあるページがあれば教えてください。
0215デフォルトの名無しさん
2006/12/26(火) 08:57:160216デフォルトの名無しさん
2006/12/26(火) 08:59:080217デフォルトの名無しさん
2006/12/26(火) 09:35:120218デフォルトの名無しさん
2006/12/26(火) 09:58:290219デフォルトの名無しさん
2006/12/26(火) 18:47:19子フレームを最大化した状態でドキュメントを切り替えると、最大化されない子フレームウィンドウ枠が
一瞬描画されてしまいます。
これを防ぐにはどうしたらいいのでしょうか?
0220デフォルトの名無しさん
2006/12/26(火) 19:35:300221デフォルトの名無しさん
2006/12/26(火) 19:57:59これは いったい誰がだしているの?
0222デフォルトの名無しさん
2006/12/26(火) 21:20:180223デフォルトの名無しさん
2006/12/27(水) 17:33:42アイテムを右クリックしたときにポップアップメニューを
表示させてそのアイテムにのみ処理をしたいのですが
どうすればいいのでしょうか
0224デフォルトの名無しさん
2006/12/27(水) 18:50:12ここで質問しなきゃわからないような何か特殊な問題あったか?
0225デフォルトの名無しさん
2006/12/27(水) 18:56:59リストビューで右クリックのイベントをとるまでいけたんですが
メニューの表示や選ばれたアイテムの取得方法がわかりません
簡単なら教えてくださいお願いします
0226225
2006/12/27(水) 18:57:470227デフォルトの名無しさん
2006/12/27(水) 19:06:130228デフォルトの名無しさん
2006/12/27(水) 19:20:28あまりにも懐かしすぎて、過去のソース見ないと思いだせんがNM_RCLICKとかあったと思う
0229219
2006/12/27(水) 19:21:19を使って、子フレームを切り替えているのだが、このメソッドをコールすると
一瞬現在アクティブなウィンドウに WM_MDIACTIVATE が送られ、
その前後に子フレームが再描画されるとこまでわかった
どうしたら子フレームの再描画をとめられるんだ?
誰か助けて。おねがい
0230デフォルトの名無しさん
2006/12/27(水) 19:37:150231デフォルトの名無しさん
2006/12/27(水) 19:42:24普通のMDIではそうならないなら普通のMDIと同じにすればいい
0233デフォルトの名無しさん
2006/12/28(木) 11:20:58ttp://msdn2.microsoft.com/en-us/library/ms670614.aspx
0234225
2006/12/28(木) 11:25:06調べてみたら
CListCtrl::GetFirstSelectedItemPosition
で取れるようです
0235225
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);
0236225
2006/12/28(木) 12:32:21CMenu* pPopup = menu.GetSubMenu(0);
pPopup->TrackPopupMenu( TPM_LEFTALIGN | TPM_RIGHTBUTTON, posMouse.x, posMouse.y, this);
0237デフォルトの名無しさん
2006/12/28(木) 12:45:141週間くらい悩むような問題を質問しろよ。
0238225
2006/12/28(木) 15:30:47文句しか言えない無知は黙ってろ
0239デフォルトの名無しさん
2006/12/28(木) 16:43:49どうすればいいのでしょうか?調べたんですがflagを立てるやり方しか見つかりません
その方法ではユーザーインターフェーススレッドのような複雑な処理をしているときになると
通じないと思いますぜひ知恵をお貸しください
0240デフォルトの名無しさん
2006/12/28(木) 16:46:340241デフォルトの名無しさん
2006/12/28(木) 16:49:190242デフォルトの名無しさん
2006/12/28(木) 16:54:48なにがどう関係ないのかの説明をいただきたい
0243デフォルトの名無しさん
2006/12/28(木) 16:55:130244デフォルトの名無しさん
2006/12/28(木) 17:00:280245デフォルトの名無しさん
2006/12/28(木) 17:06:24そのようなものは無いと思うんですが
0246デフォルトの名無しさん
2006/12/28(木) 17:14:100247デフォルトの名無しさん
2006/12/28(木) 17:15:530248デフォルトの名無しさん
2006/12/28(木) 17:34:50スレッド側に、メッセージ受けると終了するような仕組みを作る。
メインスレッドからスレッドにPostMessage or PostThreadMessage。
必要に応じて、メインスレッドはスレッドが終了するまで待機。
0249デフォルトの名無しさん
2006/12/28(木) 17:37:02ありがとうございますやってみます
0250デフォルトの名無しさん
2006/12/28(木) 22:05:29ユーザー定義メッセージのとこなんですが。
メッセージマップで
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 では問題ないのですが・・・。 ご教授下されば有難く思います。
0251デフォルトの名無しさん
2006/12/28(木) 22:17:090252250
2006/12/28(木) 22:30:23void を LRESULT にしろってことですかね?
ユーザ定義メッセージハンドラの仕様が変わったというだけのことですか。
0253デフォルトの名無しさん
2006/12/28(木) 22:44:340254デフォルトの名無しさん
2006/12/29(金) 02:14:54結局、どうしたっけな・・・。
0255239
2006/12/29(金) 12:15:18Instanceでの処理は止まらないので終了することができません
WM_QUITの代わりのメッセージを作ったとしても終了処理をどうすればいいのでしょうか
Instance→Run→ExitInstanceの流れを通らないとスレッドの破棄は難しいのでしょうか?
>>248さんの終了処理するような処理をどうすれば実装できるか困っています
0256デフォルトの名無しさん
2006/12/29(金) 12:36:41文字通り、サブスレッド側でメッセージを受け取れば宜しい。
逆に言えば、サブスレッド側をそのように作らないといけない。
詳細は、サブスレッドの作りが判らないしスレ違いになるので割愛。
0257デフォルトの名無しさん
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);
0258デフォルトの名無しさん
2006/12/30(土) 02:20:50本当に?
GetParent()はダイアログの親ウィンドウを返してると思うんだけど。
0259デフォルトの名無しさん
2006/12/30(土) 09:25:15結果オーライ
> 90 名前:デフォルトの名無しさん[] 投稿日:2006/12/04(月) 13:59:24
> ダイアログにタブコントロールを乗せ、複数のリストビューの表示をタブで切り替える
> ソフトを書いていたんですが、タブに重ねたリストビューの列サイズを操作すると
> リストビューの表示が乱れる現象が出てしまいました。
>
> (中略)
>
> 結果オーライといえばそれまでなんですが、どうしてこれで問題が解決するのか納得が
> いきません。リソース中の定義順が何に影響しているのでしょうか?
0260デフォルトの名無しさん
2006/12/30(土) 15:35:510261デフォルトの名無しさん
2006/12/30(土) 15:57:27ダイアログに追加していたんですが、ダイアログを終了する時にビープが一発鳴る
ようになってしまいました。
どこで鳴ってるのかデバッガで追ってみたところ、InitInstance の最終行、return FALSE;
で出て行ったあとのようです。この先も追いたいんですが、F11ではこれ以上追えません
でした。どういう風にデバッグすればいいでしょうか?
0262デフォルトの名無しさん
2006/12/30(土) 16:50:160263デフォルトの名無しさん
2006/12/30(土) 17:21:32の終了という構図です。Wizardが作ったコードそのままですけど、下記のような
雰囲気です。
BOOL MyDialogApp::InitInstance()
{
いろいろ初期化
CMyDialogDlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
if (nResponse == IDOK)
;
else if (nResponse == IDCANCEL)
;
return FALSE;
}
0264デフォルトの名無しさん
2007/01/01(月) 19:01:01ヒント:
void CMainFrame::RecalcLayout(BOOL bNotify)
CWnd::RepositionBars()
0265デフォルトの名無しさん
2007/01/03(水) 11:56:09以下のように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("ファイルが開けない"));
}
}
}
0266デフォルトの名無しさん
2007/01/03(水) 12:09:43文字列を表示するだけ
0268デフォルトの名無しさん
2007/01/03(水) 17:20:42フォームにボタンを配置して、そのボタンのCaptionを動的に変更したいのですが、方法が分かりません。
CButtonクラスメンバの中にもそれっぽい関数が見付からず途方に暮れてます。
方法があれば教えてください。お願いします。
0269デフォルトの名無しさん
2007/01/03(水) 18:40:160271デフォルトの名無しさん
2007/01/03(水) 20:22:26MP3ファイルをオープンするために呼び出す関数 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 *' に変換できません。
この変換を実行可能なユーザー定義変換演算子がないか、または演算子を呼び出せません。
といった状態です。解決方法はありませんでしょうか。
0272デフォルトの名無しさん
2007/01/03(水) 21:16:140273デフォルトの名無しさん
2007/01/04(木) 09:35:43MDIタブの実装方法は難しくてここの住人に答えるのは無理ってことかぁ
0274デフォルトの名無しさん
2007/01/04(木) 09:55:03ないものは教えられない
0275デフォルトの名無しさん
2007/01/04(木) 10:05:09自分でMFCを拡張してタブを実装する技術はないってことだな>274
0276デフォルトの名無しさん
2007/01/04(木) 10:05:35Office2007のリボンの実装方法聞いてるのと同じようなものだからなあ。
頑張れば出来るんじゃね?としか言いようが無い。
0277デフォルトの名無しさん
2007/01/04(木) 10:07:560278デフォルトの名無しさん
2007/01/04(木) 13:46:54んで何が聞きたいんだ?
0279デフォルトの名無しさん
2007/01/04(木) 21:35:190280デフォルトの名無しさん
2007/01/05(金) 02:58:20以下のように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]);
}
0281デフォルトの名無しさん
2007/01/05(金) 13:58:480282デフォルトの名無しさん
2007/01/06(土) 09:18:47femaleが空なんじゃないか?
つーか、FEMALE_MAXが0なのか。
0283デフォルトの名無しさん
2007/01/06(土) 09:43:43// continue;
こういう余計な制限もとっちゃおうぜ。
0284デフォルトの名無しさん
2007/01/06(土) 09:44:44// continue;
よく考えたらこれだって別に大した制限じゃねぇな。
0285デフォルトの名無しさん
2007/01/06(土) 09:46:04continue;
さすがに遠慮したいから入れておこうな。
0286デフォルトの名無しさん
2007/01/06(土) 09:47:49しょうがない、female -> maleに置き換えるんだ。
0287デフォルトの名無しさん
2007/01/06(土) 10:06:14くだらない話になると書き込みが増えるな
ROMってるやつ多いのか?
0288デフォルトの名無しさん
2007/01/06(土) 12:06:22CImageのLoadFromResourceに関して質問です
BITMAPリソースは読み込むことができるのですが、jpgファイルをバイナリリソースとして格納した場合に、こいつを読み取ってくれません
LoadResourceを使ってtmpファイルでも書き込んでからCImage::Loadなんて馬鹿馬鹿しいですし
何とか簡単にリソースに埋め込んだバイナリデータのjpgを読み込ませる方法はないでしょうか?
ちなみに、こんな感じでやってます
CImage image;
image.LoadFromResource(GetModuleHandle(NULL),ResourceID);
0289デフォルトの名無しさん
2007/01/06(土) 12:20:490290デフォルトの名無しさん
2007/01/06(土) 13:06:390291デフォルトの名無しさん
2007/01/06(土) 13:19:40>>288
::CreateStreamOnHGlobalとCImage::Load(IStream *)を使えば、ファイル無しでできる。
効率から言うと、バイナリリソースアクセス用のIStream実装を書いた方が良いけど('A`)マンドクセ
0292デフォルトの名無しさん
2007/01/07(日) 01:51:10普通のツールバー(ドッキングされているツールバー)はスケルトン作成(SDI or MDI)したソースを見れば
分かりそうな感じですが、それとスタイルが違うツールバーはどのように作れば良いですか?
グーグルで調べているのですが、思ったような情報に行き当たらず困っております
0293デフォルトの名無しさん
2007/01/07(日) 02:56:210294デフォルトの名無しさん
2007/01/07(日) 03:26:52サンクス
CreateStreamOnHGlobalでいけました
というか、IPictureをかまさないとストリームにならないのでかましたわけですが
これを使うとCImageの意味がまったくをもってないですね(笑)
0295デフォルトの名無しさん
2007/01/07(日) 10:14:35具体的な方法はMFCのソース読めばわかるよ
確かバーの上に張り付いてるやつを別ウインドウ開いて丸ごと引っ越すだけだったと思う。
0296デフォルトの名無しさん
2007/01/08(月) 17:20:10レスありがとうございます
ど素人(入社1年目)なので、それだけですとやり方が分かりません・・・
0297デフォルトの名無しさん
2007/01/08(月) 17:27:33ツールバー上のアイテム(ボタン?)をドラッグした時に
点線の四角形またはそのアイテムのアイコン(半透明)を
ドラッグ中のマウスポインタの横に表示させるにはどうすれば良いですか?
イメージとしては、VC++でダイアログリソース編集時にコントロールアイコンを
ツールバーからドラッグした時のような感じで
0298デフォルトの名無しさん
2007/01/08(月) 18:01:41自力で調べて判らないようなら上司なり先輩なりに聞け。
それでも判らないようならあんたには不適当な要求仕様なのだからそう上司(なり指示した人間)に言え。
0299デフォルトの名無しさん
2007/01/08(月) 18:30:36スレタイを2万5千回ぐらい嫁。
0300デフォルトの名無しさん
2007/01/08(月) 18:36:216時間も7時間もやってらんない。
0301デフォルトの名無しさん
2007/01/08(月) 18:47:17相談室だから>>298のようなアドバイスもアリじゃないか
0302デフォルトの名無しさん
2007/01/08(月) 18:52:35あと2ちゃんで仕事をにおわせると答えてもらいにくくなるよ
タダで教えてその内容で相手は金を得るわけだし
0303デフォルトの名無しさん
2007/01/08(月) 18:52:59要求仕様のさばき方相談室じゃないんだよー
0304デフォルトの名無しさん
2007/01/08(月) 19:37:22できない仕事をかかえこまないように
0305デフォルトの名無しさん
2007/01/08(月) 22:18:54なんつーか色々と色んなことが困難だw
0306デフォルトの名無しさん
2007/01/08(月) 22:19:300307デフォルトの名無しさん
2007/01/08(月) 23:27:04質問の意味が2通りに取れるんだが
MFC標準のCToolBarをフローティング状態で表示したいってこと?
それとも独自にフローティングツールバーを実装したいってこと?
おそらく前者の意味で聞いてるんだと思うけど、
それならCFrameWnd::FloatControlBar()でフローティング状態にできるよ。
後者なら、MFCのソースを参考に自分で書けとしか言えません。
0308デフォルトの名無しさん
2007/01/09(火) 11:46:02そのテキスト上でのマウスドラッグはバーのドラッグ処理になりますが、
これってどのような仕組みなのでしょうか。
ダイアログバー内に貼り付けた自作ウィンドウクラスにも
このような動作を組み込みたいんです。
OnNcHitTestでHTTRANSPARENTやHTCAPTIONを返してみても
まったく動かなかったり、コントロールだけが動いたり、
ダイアログバー内でダイアログ自身が動いてしまったりと、
仕組みがわからずに苦戦しています。
同じスタティックテクストでも
IDC_STATIC以外の名前を付けるとドラッグにならないようなので、
コントロールバークラスがIDC_STATICに対して
なにか特別なことでもやっているのでしょうか。
0309デフォルトの名無しさん
2007/01/09(火) 12:48:240310デフォルトの名無しさん
2007/01/09(火) 12:51:330311デフォルトの名無しさん
2007/01/13(土) 23:36:22ドキュメント: プログラム内で共有するデータを扱う, メンバ変数がたくさんある, ファイル入出力
ビュー: ユーザとのインタフェースを扱う, 描画を取り仕切る, コントロール管理
の認識でOKですか?
0312デフォルトの名無しさん
2007/01/13(土) 23:58:140313デフォルトの名無しさん
2007/01/14(日) 00:00:08概ねOKじゃね?
どっちかっていうとその役割よりドキュメントとビューがセットで1つになってること(ドキュメントテンプレートってのなかった?)
新規作成でできるもんがドキュメント+ビューを型にしたインスタンスであることって方が重要のような気がするがわかっているならOK。
そうすると自然にMDIのアプリは
1.メインフレーム(メニューとかくっついてる)
2.(ドキュメント+ビュー)X新規作成で生成された数分
3.その他のツールウィンドウやダイアログ
で構成されることになる。
VCだと
・メインフレーム(メニューとかくっついてる)
・ソースコードエディターとかリソースエディター等など(新規作成からできる奴)
・ソリューションエクスプローラーとかアウトプットウィンドウとか・・・
にあたる。
強引に「こうやって作れよ!」っていう型なんで設計からしてこうやってなってないと駄目っちゃ駄目だなw
0314311
2007/01/14(日) 00:12:54http://jbbs.livedoor.jp/bbs/read.cgi/game/19692/1168442603/
私は、真珠さんって少し変わった趣味を持った人だなー、とかは思いますけど、それだけで叩いたりするのってひどいと思いませんか?
私はあまりネットには詳しくないのでよくわからないんですが、なんかほなみんさんが2chとか言ってたので調べてみると見つかったので書き込んでみました。
このままだと真珠さんがかわいそうなんで、誰か真珠さん側についてほなみんさんを叩き返してくれませんか?私じゃ勝てそうにないので。
0316デフォルトの名無しさん
2007/01/14(日) 00:46:000317デフォルトの名無しさん
2007/01/14(日) 01:44:250318デフォルトの名無しさん
2007/01/14(日) 06:58:08なんで初心者に向かって何の前置きも無しに、あまりお目にかからないMDIのさらにレアな
複数のドキュメントタイプを持つアプリの解説を始めるのか、理解に苦しむよ。
VS2005でMFCアプリのデフォルトプロジェクトがMDIになったのは大失敗な気がする。
>>311
http://msdn2.microsoft.com/ja-jp/library/4x1xy43a(VS.80).aspx
この解説が分かりやすいよ。
0319デフォルトの名無しさん
2007/01/14(日) 08:06:10ええ!?
>>313のどこをどう読めばが複数ドキュメントの解説がメインになってるの?
とんだ濡れ衣だ!勘違いなら謝ってよ!
0320デフォルトの名無しさん
2007/01/14(日) 08:06:57○複数ドキュメントタイプ
0321デフォルトの名無しさん
2007/01/14(日) 09:00:21>重要のような気がするがわかっているならOK。
SDIでは100%成り立たないし、単一のドキュメントタイプをもつMDIなら自明で重要性は感じられない。
これが重要な意味を持つのは複数のドキュメントタイプをもつMDIしかないように思った。
確信犯だと思ったんだが、気に障ったのなら謝るよ。漏れの知らない世界があるんだろうね。
0322デフォルトの名無しさん
2007/01/14(日) 10:00:53え?じゃあ、君の勝手な妄想で俺につっかかってきたの?
それとあきらかにその文章で複数ドキュメントタイプの説明なんて書いてないのにその態度はなんなの。
しかも、確信犯の使い方も間違ってるし。
こんなの業務でやったら大変だぜ。改めろよ。
0323デフォルトの名無しさん
2007/01/14(日) 10:23:180324デフォルトの名無しさん
2007/01/14(日) 10:27:37これ昔からだろ、2005ではじめて触ったのか
0325デフォルトの名無しさん
2007/01/14(日) 11:07:34MFC以前からある
ドキュメント/ビュー
MFC2.0で追加された
0326デフォルトの名無しさん
2007/01/14(日) 12:59:31つまり class CHogeDocTemplate : public C[Single/Multi]DocTemplate
の OpenDocumentFile で特定のフレームを閉じる様にしたいのですが、
閉じる時に CFrameWnd::DestroyWindow や OnCloseDocument を使うと
OnClose が呼びだされないがこれで大丈夫なのか、
だめだとしたら正しい閉じ方はどうなのかを教えていただきたいのです。
よろしくお願いします。
0327デフォルトの名無しさん
2007/01/14(日) 13:14:370328デフォルトの名無しさん
2007/01/14(日) 13:34:04OnClose が呼びだされないのは当たり前
0329デフォルトの名無しさん
2007/01/14(日) 13:39:10普通にとはどのようにでしょうか?
>>328
その通りです。OnClose から閉じる方がドキュメントを閉じる等の処理も
正しく行われるように読めたので出来ればそうしたく質問しております。
0330デフォルトの名無しさん
2007/01/14(日) 13:47:01OnCloseDocumentからOnClose が呼びだされないのは当たり前
0331デフォルトの名無しさん
2007/01/15(月) 21:50:20OnDocumentCloseはドキュメントを閉じる時
と考えれば何も問題ないべ
0332デフォルトの名無しさん
2007/01/16(火) 04:24:49起動しただけでCPU使用率50%という異常な状態になっていました。
このプログラム自体、起動と同時に行う処理はほとんどなく、
SDIのスケルトンと同じようなもののはずなんですが。。
処理がないのにCPU使用率が高いまま下がらないのは
原因としてどのようなことが考えられますか?
もしくは原因を調べる方法とかってありますか?
0333win32apiスレ17
2007/01/16(火) 04:36:15に最初書き込みましたが、こちらのが適切かなと思って移動してきました。
Acrobatのページサムネール表示、あるいはPowerPointのスライド一覧表示のように、
イメージのリストを表示し、かつ、その順番をマウスのドラッグで調整したいと思ってます。
ドラッグ中、イメージが挿入される場所にカーソルの様な縦線が出てきて欲しいなと思ってます。
こういうコントロールの既存の実装やコードのサンプルなど御存知でしたら御教示頂けないでしょうか?
codeguru、codeprojectは廻ってみたものの、どうにもサムネールの表示どまりでして・・・
0334デフォルトの名無しさん
2007/01/16(火) 05:27:51情報少なすぎでどうespしろと?
0335デフォルトの名無しさん
2007/01/16(火) 05:36:21自分でエディタとか作ったことない?
0336デフォルトの名無しさん
2007/01/16(火) 08:03:52プロファイルで
0337デフォルトの名無しさん
2007/01/16(火) 09:03:52HEAP、スタックを2000000(2M)や20000000(20M)で試しましたが、タイミングや場所は変わらないようです
お手上げです。解決策をお知りの方おりませんか?
0338デフォルトの名無しさん
2007/01/16(火) 09:15:520339デフォルトの名無しさん
2007/01/16(火) 09:42:17malloc(255);//必ず成功。 戻り値:0x00b72e68
WideCharToMultiByte
MultiByteToWideChar
malloc(255);//必ず失敗
こんな感じです
0340デフォルトの名無しさん
2007/01/16(火) 09:59:040341デフォルトの名無しさん
2007/01/16(火) 10:05:25MultiByteToWideCharを2度使いmallocのサイズを指定していたのですが、wchar単位でNULLが含まれていないため少なくなっていました
成功するほうをmalloc((len+1)*sizeof(wchar_t));で動きました。
ありがとうございました。
0342デフォルトの名無しさん
2007/01/16(火) 12:49:330343デフォルトの名無しさん
2007/01/16(火) 17:35:59>>336
ありがとうございます。
プロファイルで調べたところOnIdle()のreturnが原因だったようです。
そのreturnのことで質問なのですが、
OnIdle内でのレンダリングによってCGアニメーションを表示するプログラムを書いているのですが、
return TRUE;だと前述のようにCPU使用率が高くなるのですが、
アニメーションは正常に表示されます。
return CWinApp::OnIdle(lCount);だとCPU使用率の問題は解消されるのですが
OnIdle()が呼ばれる間隔が長くなるためか、アニメーションが滑らかに表示できません。
この2つを同時にクリアできる良い方法はありませんか?
よろしくお願いします。
0344デフォルトの名無しさん
2007/01/16(火) 19:02:170345デフォルトの名無しさん
2007/01/16(火) 19:27:010346デフォルトの名無しさん
2007/01/16(火) 21:57:57ありがとうございます!!
どうやらすごく基本的なことのようですね。。
0347デフォルトの名無しさん
2007/01/18(木) 21:52:58水平方向のスクロールバーの位置から
列の何文字目から表示している知りたいのですが
どうすればいいのでしょうか?
やりたいことはエディットボックスの中身を編集して
かきかえても書き換える前と同じ位置を表示したいのです。
LineScrollを使用すれば垂直はうまくいくのですが、水平がうまくできません。
また、SetScrollPosを使用してもエディットボックス内が更新されないのでこまっています。
0348デフォルトの名無しさん
2007/01/18(木) 23:52:25「書き換えても書き換える前と同じ位置」というのもよくわからないんだけど、
わざわざスクロールバーを使っているのはなぜ?
単純にGetSelでカーソル位置を取得しておいてSetSelで戻すだけじゃダメ?
あと、エディットボックスの更新するにはUpdateData(FALSE)とUpdateWindow()
じゃない?
質問がよくわかってないのではずしてるかも知れんけど。
0350デフォルトの名無しさん
2007/01/19(金) 16:13:48誰に責任があるんでしょうか?ソースコードを少し追ってみると、独自のアロケータ
でごにょごにょやってるような感じなんですが。
0351350
2007/01/19(金) 16:23:11CWinApp::OnIdle() → CWnd::DeleteTempMap() あたりで解放するんですね。
0352デフォルトの名無しさん
2007/01/19(金) 16:23:370353デフォルトの名無しさん
2007/01/19(金) 16:34:29」としか書いてないから、誰がどこでいつ解放するか気になるじゃん?
0354デフォルトの名無しさん
2007/01/19(金) 16:39:540355デフォルトの名無しさん
2007/01/19(金) 17:09:59よって「一時的なポインタ」とやらの有効範囲が決まってくるわけだから。
0356デフォルトの名無しさん
2007/01/19(金) 17:21:080357デフォルトの名無しさん
2007/01/19(金) 18:22:15ヘルプだけで一時的なCWnd*がいつ消されるかも読んだ気がしたが・・・
0358デフォルトの名無しさん
2007/01/19(金) 18:27:04それがヘルプに書いてあれば悩む必要がないのにね。
0359デフォルトの名無しさん
2007/01/22(月) 18:39:22自作でエクスプローラ風アプリケーションを作りたいのですが、
それ風なサンプルを説明しているサイトとか知りませんか?
全く、それ系のインターフェイス名も知らないんで、
ググれなく困っています。
0360デフォルトの名無しさん
2007/01/22(月) 19:00:580361デフォルトの名無しさん
2007/01/22(月) 20:54:50えー!!
そんな殺生なぁ
0363デフォルトの名無しさん
2007/01/23(火) 11:03:34AppクラスからDocumentクラスのポインタの取得方法を教えてください
よろしくお願いします。
0364デフォルトの名無しさん
2007/01/23(火) 11:12:520365デフォルトの名無しさん
2007/01/23(火) 11:13:20GetFirstDocTemplatePosition()、GetNextDocTemplate()、GetFirstDocPosition()、GetNextDoc()
あたりで。
0366363
2007/01/23(火) 11:19:24GetFirstDocPosition()、GetNextDoc()で取得できました。
ありがとうございます。
0367デフォルトの名無しさん
2007/01/25(木) 16:20:26slider.SetRange(0, 100, true);
slider.SetTicFreq(10);
slider.SetPos(0);
このようなスライダを作り、スライダで設定した値をEditBoxに表示しています。
このとき、スライダのつまみをドラッグした場合には正しい値が得られますが
クリックで設定しようとした場合が上手くいきません
例えば、70を設定しようと思って該当する目盛りのあたりをクリックすると、
70の位置には来ず、マウスボタンが押されるたびに60と80で切り替ってしまいます。
クリックでも値を設定できるようにするには、何か特殊な処理が必要なのでしょうか?
0368デフォルトの名無しさん
2007/01/25(木) 18:32:400+GetPageSize()で得られる位置に移動するのがスライダ
コントロールの仕様だと思うんですが。
仕様が気に入らないのであれば、自分で必要なイベントを拾ってSetPos()すれば良い。
0369デフォルトの名無しさん
2007/01/26(金) 01:06:48任意のテキストフィールドをフォーカスさせたい場合は
CEdit::SetFocus()を行うと実現できますが、
このとき、フォーカス対象のテキストフィールドに文字列が
入力されているとき、文字列全体を範囲選択した状態で
フォーカス移動させるにはどのような手法があるでしょうか?
イメージとしてはタブでフォーカス移動させたときのような感じです。
よろしくお願い致します。
0370369
2007/01/26(金) 01:14:49CEdit::SetFocus();
CEdit::SetSel(0,-1);
で実現できるようでした。
0371デフォルトの名無しさん
2007/01/27(土) 01:54:56英語化について教えてほしいです。
タイトルアイコンをクリックした時のシステムメニューや、
AfxMessageBoxを表示させたときのキャンセルの表示など
あらかじめ用意されている部分に日本語が表示されますが、
すべて、一切がっさいを英語にしたいと考えています。
どのような方法で英語かすることができるでしょうか?
0372デフォルトの名無しさん
2007/01/27(土) 02:56:08アプリケーションを実行するとき、デフォルトのコードページを英語に変更する。
でも、システムのバグをたたくこともあるからお勧めしない。
0373デフォルトの名無しさん
2007/01/27(土) 06:21:45OSの問題だろ
0374デフォルトの名無しさん
2007/01/27(土) 13:08:410375デフォルトの名無しさん
2007/01/27(土) 15:15:32日本語関連を全くインストールしていない、設定も悉く日本にしていない端末で、実行する。
0376デフォルトの名無しさん
2007/01/27(土) 15:21:43Visuall C++(VC6)に付属のMFCのバージョンはいくらになりますか?
0377デフォルトの名無しさん
2007/01/27(土) 15:31:000378デフォルトの名無しさん
2007/01/27(土) 17:48:04どこの知障だよ、書いたの。
0379デフォルトの名無しさん
2007/01/27(土) 18:41:44DelphiやJavaはライブラリらしい。しかも、C++はコンパイル時間が長いらしい。
0380372
2007/01/27(土) 19:01:12あと、afxMessageBoxにはユーザ拡張用の前呼び出し処理があるから、
それを横取りして自作のメッセージボックスを表示する。
とかかな。
0381デフォルトの名無しさん
2007/01/27(土) 19:01:26比べてどうなのかはわからんな。
ただ、「C++だから」ってより「色々インクルードするから」長いんだけど。
0382デフォルトの名無しさん
2007/01/27(土) 19:06:080383デフォルトの名無しさん
2007/01/27(土) 19:52:07ANSIの
unsigned char foo[64]
MFCではどの様に書いたらいいのでしょうか?
コンパイラはVC6です
0384デフォルトの名無しさん
2007/01/27(土) 20:20:340385デフォルトの名無しさん
2007/01/27(土) 20:47:58これはもちろんWikipediaに書いてはいけない。
Delphiの方にもしょうもない書き込みしてるが、
群を抜いているのなら特定のソフトウェアをあげつらう必要はなかろうに。
「中立的な観点」を欠いてしまっているのが分らないのかね。
0386デフォルトの名無しさん
2007/01/27(土) 23:24:57VC++ ネイティブのより多少計算とか遅いかもしれないけどさ、
開発が VB 並にめっちゃ楽だし、
文法は Java そっくりで習得も移行も容易だし、
全体的にスマートな印象を受けるじゃん
いい加減 VC++ 信仰は止めて欲しいんだよね
一々 Windows と UNIX(Linux) 版を作りたくねーんだよ
もうさ、時代は中間言語の時代だと思うね
頼むから、ネイティブ信仰は止めようぜ
な
0387デフォルトの名無しさん
2007/01/27(土) 23:34:26TPOで使い分けるでFAだろ。
まあその手の議論は実りがないから他でやったほうがいいな。
0388デフォルトの名無しさん
2007/01/28(日) 08:18:59なければSendMessage(WM_CLOSE);として終了するようにしているのですが
一瞬Windowが表示されてしまいます。。。
Windowを表示させずにそのまま終了する方法はないでしょうか?
0389デフォルトの名無しさん
2007/01/28(日) 08:37:300390デフォルトの名無しさん
2007/01/28(日) 10:07:30モーダルならEndDialog、モードレスならDestroyWindow。
0391デフォルトの名無しさん
2007/01/28(日) 11:06:290392デフォルトの名無しさん
2007/01/28(日) 12:29:47表示位置をそれぞれのプロパティから数値で詳細に設定できるのですが、VC6のMFCでは
そのようなプロパティに項目が見当たりません、VC6で皆さんは位置決めやサイズを
何処で設定されているのでしょうか?
0393デフォルトの名無しさん
2007/01/28(日) 13:03:170394デフォルトの名無しさん
2007/01/28(日) 13:16:13ありがとうございました!
0395デフォルトの名無しさん
2007/01/28(日) 16:34:24ウインドウサイズをマウスで自由に変更できるようにするには
どのような設定、または処理を作れば良いでしょうか?
SDI/MDIベースでないとできないですか?
0396デフォルトの名無しさん
2007/01/28(日) 16:48:030397デフォルトの名無しさん
2007/01/28(日) 17:04:26中のコントロールもそれにあわせて調整したければ、自分で書くしかない。
0398デフォルトの名無しさん
2007/01/28(日) 17:17:53お返事ありがとうございます。
サイズ可変のスタイルのつけ方は、具体的なコードイメージを教えていただけないでしょうか。
ダイアログ内部に設置したCEditのコントロールもあわせて変更するように実装します。
0399396
2007/01/28(日) 17:44:13>サイズ可変のスタイルのつけ方は、具体的なコードイメージを教えていただけないでしょうか。
MSDN嫁。リソースで定義したダイアログならリソースエディタのプロパティの該当項目をチェックするだけ。
>ダイアログ内部に設置したCEditのコントロールもあわせて変更するように実装します。
サイズ変更のメッセージハンドラを書く必要がある(勿論そこでCEditのサイズを調整する)ので、
初心者向けの解説サイトでも探して解説を読め。
0400デフォルトの名無しさん
2007/01/28(日) 18:57:22これからはMSDNみてから質問します。
CEditのほうもありがとうございました。
0401デフォルトの名無しさん
2007/01/28(日) 21:19:270402デフォルトの名無しさん
2007/01/28(日) 21:38:35VC6の場合画面の右下のステータスバーに座標とサイズが表示されてるから
それを見ながら、マウスかキーボードで配置する。
[↑↓←→]で位置の変更、[Shift]+[↑↓←→]でサイズ変更。
もしくはリソーススクリプトを直接編集する。
0403デフォルトの名無しさん
2007/01/29(月) 05:11:451.テキストエディタで.rcファイルを開く。
2.DIALOG内のCONTROL行をcsvファイルとして保存する。
3.以下省略。
0404デフォルトの名無しさん
2007/01/29(月) 05:36:570405デフォルトの名無しさん
2007/01/29(月) 06:20:100406デフォルトの名無しさん
2007/01/29(月) 15:36:03defineと日本語/英語の文字列が一気に書ける。同時に仕様書も作れて一挙両得。
defineの数値はドラッグすれば1づつ増やせるからバグもでない。
0407デフォルトの名無しさん
2007/01/30(火) 23:29:19通常 OnDestroy の中では親クラスの OnDestroy を呼んでいますが、
その親の OnDestroy の直前の部分でメモリ開放処理を行うのは良くないですか?
リストに登録されているアイテムを開放したいのですが・・・
0408デフォルトの名無しさん
2007/01/30(火) 23:50:16良くないと思う理由は?
リストってリストボックスやリストビューコントロールのこと?
0409デフォルトの名無しさん
2007/01/31(水) 00:00:58CListCtrl のことです
これに new で生成したオブジェクトを登録?しています
そのまま終了するとメモリリークが発生してしまうので、
ウィンドウが破棄される直前に開放しようと思いました
それで OnDestroy に追加することにしました
良くないと思った理由は、親クラスの OnDestroy を
呼んでいるところの下にデフォルトで「ここに追加」
的なコメントが入っているからです
0410デフォルトの名無しさん
2007/01/31(水) 00:10:13プログラムが生成→消滅→生成→消滅→・・・ってやってるか
生成→表示→非表示→表示→非表示→・・・消滅ってやってるかでタイミング違ってくるじゃん。
生成したインスタンスを消したいタイミングはいつよ?
最終的に(それがいつだかはアプリにもよるが)インスタンスを確実に消滅さしときゃ問題ねーんだしよ。
0411デフォルトの名無しさん
2007/01/31(水) 00:29:46終了時に一覧情報を保存して破棄することにしています
できるだけ綺麗な(オブジェクト指向的な)ソースコードを
書きたいので、親の OnDestroy の前が正解か後ろが正解か
が気になります
0412デフォルトの名無しさん
2007/01/31(水) 00:49:58WM_DESTROYを処理してる間は、子ウィンドウは存在している。
ttp://msdn2.microsoft.com/en-us/library/ms632620.aspx
リストビューアイテムに設定しているデータを削除するのは、LVN_DELETEITEM, LVN_DELETEALLITEMSでやるといい。
0413デフォルトの名無しさん
2007/01/31(水) 00:51:06ありがとうございます!
やってみます!
0414デフォルトの名無しさん
2007/01/31(水) 00:52:14だったらOnDestroyは関係ないんじゃない?
つか、親のOnDestroy後にCListCtrlにアクセスされたら(するのか?)死ぬじゃない。
親のデストラクタでdeleteしとけばいいんじゃね?やってみ、やってみ。やってみたら結果報告ヨロ
0415デフォルトの名無しさん
2007/01/31(水) 00:53:07個人的には、Documentで扱っているデータなら
CHogeDocument::OnCloseDocument() or OnSaveDocument()
ViewのみでやってるならCHogeView::PostNcDestroy()でやると思う。
CMainFrameにCListCtrlのデータ持たせるとViewからデータへの
アクセスが面倒じゃない?
0416デフォルトの名無しさん
2007/01/31(水) 01:08:09ありがとうございます!
いろいろと試してみます!
0417デフォルトの名無しさん
2007/01/31(水) 08:40:38closeしたらウインドウ関係ないから心配いらん
>綺麗な(オブジェクト指向的な)ソースコード
普通はデストラクタで解放
0418デフォルトの名無しさん
2007/02/01(木) 00:21:49クリック時とダブルクリック時とで処理を分けたいと思っています
しかし、ダブルクリック時には先に必ずクリックイベントが
発生してしまってうまくいきません
NM_DBLCLK の直前に NM_CLICK が発生するのを
防ぐことはできませんか?
0419デフォルトの名無しさん
2007/02/01(木) 00:53:14コントロールの身になって考えれば、ユーザーのクリックがシングルなのかダブルの1発目
なのかの判断はできない。
シングルクリック時の処理開始をしばらく待ってみる以外手はないと思う。
0420デフォルトの名無しさん
2007/02/01(木) 01:11:47レスありがとうございます
つまり、NM_DBLCLK 前には NM_CLICK が
絶対に発生してしまうということですね
何か良い手はないですかね・・・
0421デフォルトの名無しさん
2007/02/01(木) 01:20:02シングルの処理。来たらダブルの処理するだけ。
VBのサンプルではタイマー使ってるみたい。
http://support.microsoft.com/kb/109865/ja
0422デフォルトの名無しさん
2007/02/01(木) 09:45:30のショートカットだから、シングルクリックのあとにダブルクリックがきても
何も困らないんだけどな。
ダブルクリックを変なことに使おうとするからこうなる
0423デフォルトの名無しさん
2007/02/03(土) 19:33:32書籍の「標準講座MFC」って今でも役に立つでしょうか?
MFC6.0ってちょっと古いみたいですが、最新のバージョン(MFC8.0?)と
大きく違うところってあるのでしょうか
0424デフォルトの名無しさん
2007/02/03(土) 20:20:00でなければ止めとけ。
0425デフォルトの名無しさん
2007/02/03(土) 20:42:57新しいUI関連のクラスがいくつか無いだけで、基本はそんなに変わってないと思うけど。
0426デフォルトの名無しさん
2007/02/03(土) 21:18:50ソースは公開されてる
0427デフォルトの名無しさん
2007/02/03(土) 21:57:59ツールバーのボタンに文字列のみ表示したいのですが、
TBBUTTON::iBitmapにNULLを指定しただけでは
イメージ(アイコン?)のスペースの分のスペースが空き、
そこから先から文字列が描画されてしまいます。
どうすればいんでしょうか?
0428デフォルトの名無しさん
2007/02/03(土) 22:40:060429427
2007/02/03(土) 22:47:49なるほど!
CToolBar::SetSizes()の中にやり方が書いてありました。
助かったよ!ありがとう!
0430デフォルトの名無しさん
2007/02/04(日) 09:09:06どれを導入すればいいのだろう?
無料で配布されている Visual C++ 2005 Express は MFC は入ってないんですよね?
それとも、あと少し待って次のバージョンが出たときのほうがいいんでしょうかね。
0431デフォルトの名無しさん
2007/02/04(日) 09:26:03そりゃおめ、vista上で動くモン買えや。
いま、XPでなにやら揃えるのは無駄でしょ?
0432デフォルトの名無しさん
2007/02/04(日) 11:30:15「>>」を表示し、「>>」を押せば残りのメニューが表示されるようにしたいのですが、
そういったコントロールがあるのでしょうか?
どなたかヒントだけでもわかる方おられましたら教えてやって下さい。
0433デフォルトの名無しさん
2007/02/04(日) 11:39:000434デフォルトの名無しさん
2007/02/04(日) 12:05:060435432
2007/02/04(日) 12:31:54「>>」はChevronって言うんですか用語自体知りませんでした。
Chevronでぐぐればすぐにでてきました。
教えていただかなければ数日ははまるとこでした、
ありがとうございます。
0436デフォルトの名無しさん
2007/02/04(日) 14:14:260437デフォルトの名無しさん
2007/02/04(日) 22:58:24CFont オブジェクトを使い終わったら、最初にデバイス コンテキストからフォントを選択して、それから、CFont オブジェクトを削除します。
ってあるけどデストラクタで解放してくれないの?
解放しないままアプリ終了したらリソースリークするのかな?
0438デフォルトの名無しさん
2007/02/04(日) 23:01:29よばなきゃ問題ないのか???
よくわからん
0439デフォルトの名無しさん
2007/02/04(日) 23:06:49DCで直接使用しない場合は問題ないのか???
MSさんさっぱりわかりませんorz
0440デフォルトの名無しさん
2007/02/04(日) 23:19:290441デフォルトの名無しさん
2007/02/05(月) 00:11:26デバイスコンテキストに選択されたままだと解放されないと思った。
0442デフォルトの名無しさん
2007/02/05(月) 17:27:27http://www.microsoft.com/japan/msdn/columns/webteam/webteam02052001.aspx
ここを参考にしてタブではないブラウザを作成したのですがこの通りに記述しても
JAVAスクリプトで行っているブラウザのリサイズが正常に動きません。
テスト用に適当に選んだサイトですが
http://www3.ocn.ne.jp/~motiya/java/sample-4/window_choice1.htm
ここのsmall windowを押してもフレームのサイズが変更されません。
RecalcLayout等してもダメでした。メインフレームが正しくリサイズされる
方法をどなかた教えて頂けないでしょうか。
環境
VC6.0 WindowsXp SP2
0443デフォルトの名無しさん
2007/02/05(月) 20:47:25|えおか| | |
| | |
| | |
5| | |
| | |
| リッチエディット | |
| | |
| | |
10| | |
| | |
| | |
| | |
| | |
15|--------------------------|↓|
スクロールバー
こんな感じの画面を作ることになったのですが
右のスクロールバーと左の行数のコントロール?(何でもいい)で
同期をとりたいのですがどのようにしたらよいのでしょうか?
なにかヒントでもありましたらご教授をお願いいたします。
環境:VC++2005 MFC
0444デフォルトの名無しさん
2007/02/06(火) 01:38:15エディットボックスに入力したパスを CFileDialog で開く、という処理を作ってまして、
入力したパスの存在チェックを CFileFind で行っています。
ですが、C:\ や、\\hoge\ 等、ドライブのルートを指定した場合に存在を検出できず、
前回開いたフォルダがFileDialog で開かれてしまい、困っています。
どなたか良い方法をご存知でしたら、ご教授ください。
よろしくお願い致します。
0445デフォルトの名無しさん
2007/02/06(火) 02:55:00"\\"はReplaceで別の記号に置き換えるとかして、
その後で"\"が1個だけならルート
0446デフォルトの名無しさん
2007/02/06(火) 04:19:44なんか意味あんじゃね?
0447デフォルトの名無しさん
2007/02/06(火) 06:07:070448デフォルトの名無しさん
2007/02/06(火) 06:14:370449デフォルトの名無しさん
2007/02/06(火) 06:39:44ルートディレクトリが検出されないのは、内部で呼び出しているAPI側(FindFirstFile)の仕様。
CFileFindの仕様としては書かれてないかも。
FindFirstFileの説明にはルートディレクトリの属性を取得するにはGetFileAttributesを使えと書いてある。
0450デフォルトの名無しさん
2007/02/06(火) 06:42:230451デフォルトの名無しさん
2007/02/08(木) 17:40:42”ツールボックスからメニューをペタペタ”をすればいいらしい
しかし、MFCを使わなければならないことが判明
win32アプリにツールボックスからメニューをペタペタはできない
Wwindowsフォームで作るとできる
しかしForm.h、Form.resxとか変なファイルが中身見ると分けわかんなくなってるしWinmainがないぞ
C++とMFCは別物なのか!!
2005express
0452デフォルトの名無しさん
2007/02/08(木) 18:10:06それは.NET frameworkじゃね
0453デフォルトの名無しさん
2007/02/08(木) 18:12:300454デフォルトの名無しさん
2007/02/12(月) 00:31:01予定では後一週間あるので連休明けはブラックボックステストと
ロゴの作成にかかりたいのですが、VC6 MFCのリソースエディータって
しょぼいですね(^^;フリーでお勧めのリソース編集ソフト知ってたら
教えてくださいオナガイシマス
0455デフォルトの名無しさん
2007/02/12(月) 03:21:06ロゴの作成にリソースエディタってお前馬鹿じゃないのか?
0456デフォルトの名無しさん
2007/02/12(月) 08:22:500458デフォルトの名無しさん
2007/02/12(月) 10:22:31進行が進まないうちに早めに治療を受けたほうがいいよ
0459デフォルトの名無しさん
2007/02/12(月) 11:40:34教えるも何も、「画像を作る」って聞いたら藻前様は何を使うと仰るのですか?
#ふつー、画像編集ソフトを使うと思うのだが。
0460デフォルトの名無しさん
2007/02/12(月) 21:25:220461デフォルトの名無しさん
2007/02/13(火) 05:43:02やべぇw脳勃起してきたw
0462デフォルトの名無しさん
2007/02/15(木) 10:25:44検索するとSDI/MDIのプログラムばかりで途方に暮れています。
0463デフォルトの名無しさん
2007/02/15(木) 11:57:020464デフォルトの名無しさん
2007/02/15(木) 12:47:54http://msdn2.microsoft.com/ja-jp/library/edak6tf8(VS.80).aspx
0465デフォルトの名無しさん
2007/02/19(月) 13:44:300466465
2007/02/19(月) 14:17:230467デフォルトの名無しさん
2007/02/19(月) 14:54:280468デフォルトの名無しさん
2007/02/19(月) 20:27:550469デフォルトの名無しさん
2007/02/19(月) 22:17:09だな
0470デフォルトの名無しさん
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をスタティックでリンクに設定しております。
0471デフォルトの名無しさん
2007/02/22(木) 15:02:59123→312ではどうなる?
0474デフォルトの名無しさん
2007/02/22(木) 15:53:060475470
2007/02/22(木) 16:19:39スタイルにLVS_OWNERDRAWFIXEDが指定されていました。
MFCのROWLIST サンプルを元に、変更を加えていったのですが、
CListViewExで、LVS_OWNERDRAWFIXEDが指定されておりました。
レスをしてくれた方がには、お礼申し上げます。
0476デフォルトの名無しさん
2007/02/22(木) 20:26:53ダイアログベースで表示したいのですが、
どんな方法があるでしょうか?
0477デフォルトの名無しさん
2007/02/22(木) 21:13:270478デフォルトの名無しさん
2007/02/22(木) 22:17:26できるだけ簡単にできる方法に合わせて仕様を決めようかと思って。
0479デフォルトの名無しさん
2007/02/22(木) 22:51:310480デフォルトの名無しさん
2007/02/23(金) 10:17:310481デフォルトの名無しさん
2007/02/23(金) 10:19:12共通のパレットダイアログを持つようなプログラムを作ろうと考えています。
MDIで生成すると、例えばファイル→開くを選択すると
ドキュメント以外にビューも生成されて、ビューが持っているパレットダイアログ(モードレス)
までが複数生成されてしまいますが、これを阻止するにはどのようにすればよいのでしょうか?
0482デフォルトの名無しさん
2007/02/23(金) 10:26:240483デフォルトの名無しさん
2007/02/23(金) 10:33:26確かにおっしゃるとおりです。
ウィンドウを切り替えたときにパレットの内容をアクティブなウィンドウの
情報に変えたいので、そのあたりの情報などを管理できる部分にまとめようと思うのですが
この場合、パレットを持たせるのはMainFrameでしょうか?
0484デフォルトの名無しさん
2007/02/23(金) 21:47:33VC++6.0です。
ツールバーのボタンに対してプロパティからプロンプトという項目を設定すると実行時にボタンの説明文が出せますよね。
あれをダイアログのボタンやエディットボックスにも出したいのですがどうすればいいでしょうか。
0485デフォルトの名無しさん
2007/02/23(金) 21:54:390486484
2007/02/23(金) 22:23:14調べてみます。
CDialogBar
0488デフォルトの名無しさん
2007/02/26(月) 18:13:00色々探したのですが、どうも自分自身のProductVersionを
読み出す方法が見つかりません。
自身の実行ファイルのフルパスを探し出し.... という方法は
見つけましたが、何だかなぁという感じで。
CString::LoadString のような感じで読み出す方法はないのでしょうか?
0489デフォルトの名無しさん
2007/02/26(月) 18:53:340490デフォルトの名無しさん
2007/02/26(月) 18:54:56キチガイの独り言はやめほしいな
0491デフォルトの名無しさん
2007/02/26(月) 19:18:29> ストリングテーブルになかったか?
ストリングテーブルには登録されてないよ。
0492デフォルトの名無しさん
2007/02/26(月) 19:19:07> なんだ質問者が答えてるじゃないか
> キチガイの独り言はやめほしいな
CString::LoadString で読み出せるのか?
IDは、何を設定するの?
0493デフォルトの名無しさん
2007/02/26(月) 19:43:480494デフォルトの名無しさん
2007/02/26(月) 19:53:290495デフォルトの名無しさん
2007/02/26(月) 20:02:23ttp://tgws.fromc.jp/prog/versioninfo/
0496デフォルトの名無しさん
2007/02/26(月) 20:04:240497483
2007/02/26(月) 21:52:54CDialogBarを利用してみました。ソースは以下の通りです。
(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
このようなドッキングされた状態の作成方法はいろいろ紹介されているのを確認しましたが、
通常のモーダレスダイアログのような振る舞いをさせる方法が分かりません。(任意の座標に表示させるとか)
どういった方法をそればいいのでしょうか?
0498デフォルトの名無しさん
2007/02/26(月) 22:02:080499デフォルトの名無しさん
2007/02/26(月) 23:07:390500デフォルトの名無しさん
2007/02/27(火) 11:53:59うまくいきました!!
0501MDI今日始めます
2007/02/27(火) 18:18:27MDIのプログラム今日始めました。ウィザードでMDIのプロジェクトを作成後、
クラスビューでOnDraw(CDC* pDC)という関数を発見し、これで描画できると
思いましたが、子ウィンドウを新規作成するたびに同じ描画を繰り返すだけ。
子ウィンドウ毎に違う描画をしたいのですが、どうしたらいいんでしょう?
メインのソースたどろうにも、CWinApp::OnFileNewはライブラリになっていて
ソースの実体が無くどうしていいのかわかりません(ToT
0502デフォルトの名無しさん
2007/02/27(火) 18:40:27それによってOnDrawでの動作を変えりゃいいだろ
CView::OnDrawでCDocumentのインスタンスを識別してそれぞれで描画するようにしれ。
0504デフォルトの名無しさん
2007/02/28(水) 01:39:330505デフォルトの名無しさん
2007/02/28(水) 13:40:52MSDN読め
0506デフォルトの名無しさん
2007/02/28(水) 22:14:14VC++6.0でMDIです。
MDIの子ウィンドウとしてCFormViewを継承したクラスが2つあります。
このクラスを仮にA,Bとします。
Aのウィンドウのボタンが押されたときにBのウィンドウの
エディットボックスの内容を更新したいのですがどうすればよいでしょうか。
MDIGetActiveとGetNextWindowをつかってウィンドウをたどっていき
if(pWnd->IsKindOf(RUNTIME_CLASS(B)))で判定すればBのウィンドウの
ポインタが取れると思ったのですが、このif文がなぜか真になりません。
何がまずいのでしょうか。
0507デフォルトの名無しさん
2007/02/28(水) 23:27:13MFCの問題っちゅーかプログラミング能力の問題じゃねぇの?それ。
まあ、問題の切り分けができないってのもわからないでもないが・・・
そういう機能はAとB2つに影響を与えることができるクラスに付けなきゃ駄目だよ。
AやBはその機能を呼ぶだけ。
>>203-205の問題と似てネーか?
0508デフォルトの名無しさん
2007/03/01(木) 09:30:44そもそも基本ができていない
やろうとしていることの前に、基本から勉強しなおせ
0509デフォルトの名無しさん
2007/03/01(木) 15:05:40VS2005でMFCアプリケーション(ダイアログベース)を作ったのですが。
新規にダイアログベースを作成してそのまま何も加工せずにセットアップ
ウィザードを使ってsetup.exeを作って他のPCでインストールしようとしたら
.NET framwork2.0をするように指示する画面がでました。
これは、VS2005で開発したものはframework2.0が必要?それとも
インストーラーがframework2.0が必要?なんですか?
frameworkが必要ないとおもってMFCにしたのですが、framework不要に
する設定ありますか?よろしくお願いします。
0510デフォルトの名無しさん
2007/03/01(木) 15:07:08x .NET framwork2.0をするように指示する画面がでました。
○ .NET framwork2.0をインストールするように指示する画面がでました。
0511デフォルトの名無しさん
2007/03/01(木) 15:45:020512デフォルトの名無しさん
2007/03/01(木) 17:30:440513デフォルトの名無しさん
2007/03/01(木) 18:51:13とりあえず、新規プロジェクトで何もしないでウィザードだけでできあがったダイアログで
試したらどうなる?
0514デフォルトの名無しさん
2007/03/01(木) 18:51:540515デフォルトの名無しさん
2007/03/01(木) 21:06:55という本を以前読んで、大変勉強になったのを覚えています。
無くしたので、他の本と一緒に買おうかと思うのですが、どうせならVC++.net
関連の本がいいと思っています。サンプルも欲しいです。
何かお勧めはありますでしょうか?
0516デフォルトの名無しさん
2007/03/01(木) 22:50:39やりたいことは簡単でポップアップメニューのサブメニュー(横に開いたやつ)を
状況(その時の変数値など)に応じてグレーアウト(Enable が FALSE の状態)したいだけです
OnUpdateXX(メニュー名) で pCmdUI->Enable(FALSE) することで
普通のポップアップメニューをグレーアウトすることはできました
しかし、ポップアップメニューのサブメニューに同じようなことをやってもうまくいくません
サブメニューを選択して初めて OnUpdateXX と OnXX が走っているようです
どうにかして同じようにサブメニューをグレーアウトさせることはできないでしょうか?
0517デフォルトの名無しさん
2007/03/01(木) 22:54:350518デフォルトの名無しさん
2007/03/01(木) 23:19:430519デフォルトの名無しさん
2007/03/02(金) 00:42:30ここはMFCスレ。.netやりたいならそういうスレで聞けば?MFCなら標準講座でいいだろうし。
0520デフォルトの名無しさん
2007/03/02(金) 09:27:140521デフォルトの名無しさん
2007/03/02(金) 12:20:53OnUpdate〜に頼らず、自分でグレーアウトさせる。
0522デフォルトの名無しさん
2007/03/02(金) 14:04:34MFCでAPIである
SetWindowText(hWnd ,"(@_@)");
を使いたいのですが、MFC上でこの関数を実行すると
ウィンドウハンドルの引数が省略されてしまい、コンパイルできません。
MFC上で、任意にウィンドウハンドルを指定してSetWindowText関数を
使う方法はありますでしょうか?
0523デフォルトの名無しさん
2007/03/02(金) 14:09:240524デフォルトの名無しさん
2007/03/02(金) 14:20:29C++ の基礎からやりなおせ
0525デフォルトの名無しさん
2007/03/02(金) 14:32:43>>524
ありがとうございます。
勉強しながらなので、
お教えいただいたヒントを元に
答えを探ってみたいと思います。
0526デフォルトの名無しさん
2007/03/02(金) 14:39:48>>524
どこに対してスコープを設定すればよいのか
見当もつかなかったので、試しに関数の頭にスコープ演算子だけつけてみたら
なぜかうまくいきました。
0527デフォルトの名無しさん
2007/03/02(金) 14:55:29>MFCでAPIである
WindowsのAPIなのかMFCクラスのメンバー関数なのかはっきりしる。
0528デフォルトの名無しさん
2007/03/02(金) 15:03:020529デフォルトの名無しさん
2007/03/04(日) 15:31:06TCHAR(LPCTSTRとか)になってますが
実行時にマルチバイトでCListBoxを使うか
UNICODEで使うかを選択することはできないものなんですか?
0530デフォルトの名無しさん
2007/03/04(日) 15:33:45マクロ使わないで使い分ければいい
0531529
2007/03/04(日) 15:45:56すいません。その辺知識不足なんですが、
Win32APIで例えるとANSI版とUNICODE版があって、
それを使い分けれるってことですか?
0532デフォルトの名無しさん
2007/03/05(月) 10:54:260533デフォルトの名無しさん
2007/03/05(月) 12:45:59MFCのソース見るだけ
0534デフォルトの名無しさん
2007/03/05(月) 13:15:400535529
2007/03/05(月) 21:33:00MBCS版とUNICODE版を同時に使える仕様にはなってない感じですが…。
よくわからんです。
とりあえず素直に別々にコンパイルして
本体を98系とNT系に分けて用意する方が楽っぽいですね。
0536デフォルトの名無しさん
2007/03/06(火) 10:23:290537デフォルトの名無しさん
2007/03/08(木) 19:12:36VS2005で作ったMFCプログラムを同様にVS2005のセットアップウィザードを作ったsetup.exe
で実行してFramework2.0をインストすれというメッセージが出たものです。
結論からいうと、このsetup.exeを使わないで~~~.exeだけをコピーして動作させたら動きました。
MFCはスタティックリンクしました。ということで容疑者はセットアップウィザードらしいことが
判明。まあ使わなければいいという短絡的な結論になりました。
0538デフォルトの名無しさん
2007/03/08(木) 21:00:41容疑者はおまえだよ
セットアッププロジェクトをきちんと作れば何の問題もない
0539デフォルトの名無しさん
2007/03/09(金) 00:20:07例えばCCOMBOBOXにSetItemDataPtr使ってある型を足してく場合とかに
をやってくれるようなtemplate関数とかが用意してあるやつとか
MFCのコントロールとtemplateを組み合わせるのって普通はしないものなんでしょうか?
上記のある型を設定した後にプログラムからSetItemDataptrで設定した型のある値を指定したら
SetCurSel あたりで指定した項目に対応するやつを選択状態にしてくれるようなやつとか
0540デフォルトの名無しさん
2007/03/09(金) 00:25:100541デフォルトの名無しさん
2007/03/09(金) 00:36:030542デフォルトの名無しさん
2007/03/09(金) 03:03:470543デフォルトの名無しさん
2007/03/10(土) 00:47:510544デフォルトの名無しさん
2007/03/10(土) 01:38:01(テキスト表示の右側に●とか矢印が出るウィンドウ)
それで、自分なり考えたのですが、
1. CEditView からビューを作成。
2. OnCreateで左側のマージンを空ける。
3. OnDrawとかで●とか矢印を書く。
でも、そもそもOnDrawが呼ばれません。
他のアプローチがあれば教えていただけないでしょうか?
ちなみに当方WindowsのGUIプログラミングはド素人です。
0545デフォルトの名無しさん
2007/03/10(土) 06:23:12位置調整に関係するのはCEditView::CalcWindowRectあたりか
0546デフォルトの名無しさん
2007/03/10(土) 10:52:35CEditView なんぞ使ったらだめ。
CView に全部自前で実装しろ。
どのみち、ど素人にできるテーマではない。
その前にいろいろ勉強してから出直して来い。
0547デフォルトの名無しさん
2007/03/10(土) 13:31:21とりあえず参考までに。
ttp://www.vcppclub.com/samples/vwdoc/p_leditor/leditor.html
0548544
2007/03/11(日) 00:45:00レスありがとうございます。
>>545
こんなメンバがあったのですね。しらなんだ orz
勉強になります。
>>546
ごめんなさい。今勉強中で行き詰まったので、ちょっと甘えてみました。
>>547
てか、行番号のところに●とか矢印描画したらやりたいことそのままではないですか!!
まだ、ちゃんとソース見られてませんが、これからじっくり追って行きたいと思います。
ありがとうございます。
良スレ発見!!
0549548
2007/03/17(土) 14:50:17,,、‐''"~ ̄  ̄``''‐、、
/ \
/ ヽ
/ ヽ
/ / ~~` '' ‐- 、、 ,,__ __ ,,..、、 -‐ '' "~~\ ヽ
| / __  ̄ __ ヽ |
.| { ´ ‐- ....__ __... -‐ ` } .|
.| 〉,,・^'' - .,, ~ i ~ __,,.- ^`・、.〈 |
./ ̄| /,/~ヽ、 `'' ‐--‐ ,.| 、‐-‐'' "~ _ノ~\,ヽ | ̄ヽ
| (` | / ヽ,,_____`‐-、_、..,,___ノ八ヽ___,,.._-‐_'"´___,, ノ ヽ .|'´) |
| }.| ./' \二二・二../ ヽ / ヽ、二・二二/ 'ヽ | { |
.| //| .| / | |. \ | |ヽヽ|
.| .| | .| / | |. \ | | | .|
|ヽ.| | / .| |. ヽ .| .|./ .|
| .| | / | | ヽ | | / / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ヽ .| | / .| | ヽ | | / | 用件を
.ヽ.| | / '二〈___〉二` ヽ | |./ <
| | `-;-′ | | | 聞こうか…
iヽ|. ,,... -‐"`‐"`'‐- 、、 |/i \_________
| ヽ /...---‐‐‐‐‐----.ヽ / .|
| ヽ. ,, -‐ ''"~ ~"'' ‐- 、 / |
.| ヽ ! ./ .|
,,| ヽ. | ./ |、
|\. ヽ / /.|
.|. \. ヽ、____ ___/ / .|
' `  ̄ ̄ ´ '
0550デフォルトの名無しさん
2007/03/18(日) 01:58:13List Controlを利用しているのですが
カラムを初期化するタイミングはどれがよろしいのでしょうか?
CDialogの場合はOnInitDialogがあったんですが
CDialogBarには無いみたいで
0551デフォルトの名無しさん
2007/03/18(日) 10:07:39Create()の中で、CDialogBar::Create()呼び出し後にやってます
0552デフォルトの名無しさん
2007/03/19(月) 23:04:42各ページの上部ヘッダ部に画像付きのウィザードを作成しています。
Windows Vista上で、この方法で作成したウィザードを実行すると、
なぜか各ページの上部の画像が表示されなくなってしまいます。
(Windows XPでは問題なく表示されます)
これを回避する方法はありますでしょうか?
0553デフォルトの名無しさん
2007/03/20(火) 10:47:480554デフォルトの名無しさん
2007/03/21(水) 03:11:060555デフォルトの名無しさん
2007/03/21(水) 19:50:40「.NETのメニューみたいにかっこよくしろ」
とか言ってきました。
0556デフォルトの名無しさん
2007/03/21(水) 19:59:11最新スレ50しか読んでないが、質問主は殆ど玉砕だな
昔の2ちゃんねるは玉石混在で光るものもあったが、今は石しかない
プログラム技術@2ch掲示板なんて止めて、
質問主を煽る技術@2ch掲示板として、スレッドも一つか二つにまとめたらどうよ
0557デフォルトの名無しさん
2007/03/21(水) 20:03:16特にム板はクズの集まりだしな
0558デフォルトの名無しさん
2007/03/21(水) 20:16:01∧,,∧ ∧,,∧
∧ (´・ω・) (・ω・`) ∧∧
( ´・ω) U) ( つと ノ(ω・` )
| U ( ´・) (・` ) と ノ
u-u (l ) ( ノu-u
`u-u'. `u-u'
0559デフォルトの名無しさん
2007/03/21(水) 22:34:130560デフォルトの名無しさん
2007/03/22(木) 17:49:07トンチキな質問をして煽られたのか。
>>559
「手前」と思わせといて、実は下。
つまり、上に乗っかってる奴で隠れている。
0561デフォルトの名無しさん
2007/03/25(日) 03:44:26_,,:-ー''" ̄ ̄ ̄ `ヽ、
,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'" :| \
'" | `''-、`'ー--─'";;-'''" ,| \_
0562デフォルトの名無しさん
2007/03/25(日) 03:46:22pd3dDevice->SetRenderState(D3DRS_ZENABLE, TRUE);
0563デフォルトの名無しさん
2007/03/26(月) 00:12:040564デフォルトの名無しさん
2007/03/26(月) 05:06:260565デフォルトの名無しさん
2007/03/28(水) 03:33:23携帯で月額料金を支払って登録すると会員になるファンクラブのこと
会員になると
チケットの先行予約やデジタル会報の閲覧
待受け画像や着うた、着メロ、ムービー等のサービスを利用できる。
0566デフォルトの名無しさん
2007/03/28(水) 03:34:20気体の流量制御装置のこと。
真空装置などに微量、あるいは一定流量の気体を導入する時などに使用される。
0567デフォルトの名無しさん
2007/03/28(水) 14:03:090568デフォルトの名無しさん
2007/03/28(水) 15:27:021 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2007/03/12(月) 15:26:41 ID:VIP/Boon
語れ
2 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2007/03/12(月) 15:27:05 ID:9qlxL9Bm
>>1
ちょ、何そのIDwwwwwwwwwwwwwwwwwwwwwwww
XP, Vista 上で動くプログラムを書いているのですが、
ダイアログやその他のUI系フォントとして、XPだと
MS Gothic 系 に、Vista だと主に メイリオ にしたいと考えて
います。
名前直指定とかは行わず、テーマとかシステムに
即したコードにしたいのですが、そもそもMFCのダイアログに
使われるフォントを、うまく切り替える方法すら分かりません。
そもそも、OSのフォントの扱いからしてよく分かってないのですが、
ここから調べていきたいと考えています。
なにかいい解決策がないでしょうか?
0570デフォルトの名無しさん
2007/03/29(木) 01:46:24リソースで指定するんじゃないんの?
その通りで、リソースで指定しています。ひとまず、ダイアログの
プロパティにて、"Use System Font" を true にしています。
そうすると、フォント名が"MS Shell Dlg" になります。
あと、開発環境を忘れていましたので、書いておきます。
VS2005 pro sp1
xp sp2, vista
0572デフォルトの名無しさん
2007/03/29(木) 06:02:23それかダイアログを表示した後でコントロールごとにフォントを変更する。
0573デフォルトの名無しさん
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のタイミングで動作させる方法
です。わかる方いらっしゃったらお願いします。
0574デフォルトの名無しさん
2007/04/07(土) 13:53:48(i)WM_TIMERはメッセージキューに置かれるが
そのメッセージを取りに行く処理(メッセージポンプ)が処理が終わるまで行われていないため。
(ii)子ダイアログを別スレッドで作成する。
とりあえずこれ読んで
ttp://msdn2.microsoft.com/en-us/library/ms644927.aspx
0575デフォルトの名無しさん
2007/04/07(土) 14:22:49ありが�d。
ただ、子ダイアログを別スレッドにしても、
メッセージポンプ自体が動いてないのだとすると、
子ダイアログの描画がイベントはちゃんとおこなわれるのん?
0576デフォルトの名無しさん
2007/04/07(土) 14:39:40>>574のURLを読んでくれ
0577デフォルトの名無しさん
2007/04/07(土) 14:56:300578デフォルトの名無しさん
2007/04/07(土) 17:31:310579デフォルトの名無しさん
2007/04/07(土) 23:09:10(ii)どうしてもタイマ使いたいってんなら>>574の通り
親のOnInitDialog()の進行状況を表示したいだけなら
親側からユーザー定義メッセージをSendMessage()してやればよい
これ一番単純
このスレ死んでんのかと思ってたよ
>>573が態々ネタ創作したようにも見えるが
0580デフォルトの名無しさん
2007/04/08(日) 01:13:11スレッド化はしてみたけど、どうにもうまく動かないところ。
別のところでこけてるのだろけど、いまのとこ原因不明です。
進行を知らせるダイアログをシングルトンで実装して、
MFCクラス、一般C++クラスを問わず、時間のかかる処理のときは、
動作中であることを気軽に示せるようにして、↓みたいな使い方を考えてます。
LoadingDialog->inst()->starg()
//時間のかかる処理
LoadingDialog->inst()->stop()
0581デフォルトの名無しさん
2007/04/08(日) 06:13:47プログレスバーはステータスバーに表示
0582デフォルトの名無しさん
2007/04/08(日) 08:25:19逆に考えるんだ。
GUIスレッドはあくまでもGUIに徹し、時間の掛かる処理はワーカスレッドで行なう。
それがイベントドリブンということだ。
0583デフォルトの名無しさん
2007/04/08(日) 08:25:41だったらどうでもいいや
あと、よく考えたらWinRarなんかはダイアログにプログレスバーだな
あれはダイアログ側で時間のかかる処理か
0584デフォルトの名無しさん
2007/04/10(火) 14:26:50XP用とヴィスタ用の両方のダイアログを作る
OS種別でどっちかを使う
0585デフォルトの名無しさん
2007/04/10(火) 20:08:54>>573
整理した方がいいよ
ワーカースレッドのタイミングで描画させようとすると君のようなパラドックスに嵌ります
この場合ワンクッション置いて、子ダイアログの遷移を親ダイアログがGETできるようにすれば
いいと思う、(インラインでGET関数を記述すればいい、SET関数も必要になると思う)
あくまでも主体は親で子は遷移を知らせるだけ(描画できるタイミングを通知)
一見普通に処理しているように見えてもワーカースレッドのタイミングで描画を行う
プログラムは間違いなく破綻します。
0586デフォルトの名無しさん
2007/04/10(火) 20:25:44>>556に騙されるな
0587デフォルトの名無しさん
2007/04/10(火) 20:51:13>>585だが
なんだよ、マジレスしてるのにww
いいよ585の反対で実装してごらん面白いことになるよww
それから>>573は簡単だからタイマー割り込み使うって書いてたけど
MFCでタイマーの使い方ってネットでたまに見かけるけど
まともな使い方してない場合が多いよMSDNのコードも漏れ的には不満なんだが
0588デフォルトの名無しさん
2007/04/10(火) 21:31:23「>>556です」とか突然言い出すからネタで返しただけ。気にするな。
で、まともじゃないタイマーの使い方の説明キボンヌ。何か気になる。
0589デフォルトの名無しさん
2007/04/11(水) 13:37:48CControlBar 派生クラスの OnCreate で CDialog::Create を呼び出して
コントロールバーの中にダイアログを入れています。
このとき、ダイアログ上のコントロールのメッセージは、
どうやって受け取ったらよいでしょうか?
int CFooControlBar::OnCreate(.....)
{
......
// コントロールを乗せたダイアログをリソースから読み取る
m_hogeDlg.Create(IDD_HOGE_DIALOG, this);
m_hogeDlg.ShowWindow(SW_SHOW);
}
m_hogeDlg のメッセージを受け取るには?
0590586
2007/04/11(水) 19:42:13マジレスはもうおしまい後は自分で考えてねww
それではそっけないのでヒントは 「一意」
サービスしすぎww以上
>>>589
C++から勉強しなおした方がいいYOというか
585で説明してるしww
皆さん結果を求めたいがために焦りすぎ、実装する以上もっと気の細かい
シーケンスが必要ですww
質問「何々の関数に、赫々しかじかの引数を与えましたが結果がでません」
答え「準備不足です」
0592デフォルトの名無しさん
2007/04/12(木) 09:38:16ある関数で、CStringの文字列を引数として渡し、リスト内に同じ項目が
存在しない場合、追加処理を行っています。
LVFINDINFO listInfo;
listInfo.flags = LVFI_STRING;
listInfo.psz = inStr;
// Itemを検索
int findItem = listCtrl.FindItem(&listInfo);
このとき、FindItemを使って検索するときに大文字と小文字を別物として検索することはできますか?
今のままだと、AAAの後にaaaを追加しようとしたときに既に追加されていると判断され、
リストにはAAAしか存在しない状態になってしまいます。
0593デフォルトの名無しさん
2007/04/12(木) 09:49:38できない。
0594デフォルトの名無しさん
2007/04/12(木) 11:10:59FindItemで見つけた後、一致しているかどうか自分でチェックしたら?
0595デフォルトの名無しさん
2007/04/13(金) 03:27:540596592
2007/04/13(金) 14:43:38ただ、3つ以上重複した場合(aaaa,AAAA,AAAA, aaAAなど)、の場合、
AAAAのが2つ重複して追加される問題があるので
仮想リストビューにする方法も含めて、何か対応を考えて見ます
0597デフォルトの名無しさん
2007/04/13(金) 23:24:350598デフォルトの名無しさん
2007/04/14(土) 14:07:26安易に画面も持たないのに CDialog を継承したクラスをCreate してたり
するんだけど、(要は他のオブジェクトからメッセージを投げるのに、
有効なm_hWndが欲しいだけ)
CDialog じゃなくて CWnd を継承して有効な m_hWnd をもつ
オブジェクトを生成する手段ってあります?
0599デフォルトの名無しさん
2007/04/14(土) 15:13:150600598
2007/04/14(土) 16:07:09CWnd を継承したオブジェクトを Create しても
h_hWnd は 0x0000 なので CDialog を Create してます
なにか、画面に関係しないで CWnd を Create して 有効な
h_hWnd を得られれば文句無いんですが
0601デフォルトの名無しさん
2007/04/14(土) 17:12:160602デフォルトの名無しさん
2007/04/14(土) 18:04:490603デフォルトの名無しさん
2007/04/14(土) 18:23:04::CreateWindowExでメッセージonlyウィンドウ作って、
CWnd::SubclassWindow使えばいいんじゃね?
0604デフォルトの名無しさん
2007/04/14(土) 18:33:191億件までですよね?ドキュメントにはDWORDの最大数まで
サポートしているようなことが書いてありますが、
実際にそこまで設定することは出来ますか?
SetItemCountExを辿っていくとSendMessageで投げていますが、
1億を越える数字を設定するとSendMessageがFALSEを返すので
APIのバグのような気もしますけど。
0605デフォルトの名無しさん
2007/04/14(土) 18:36:08出来ません。
0606デフォルトの名無しさん
2007/04/14(土) 19:05:42>ドキュメントにはDWORDの最大数までサポートしているようなことが書いてありますが
実際はメモリ量とか空間の限界とかあるから無理。
0607デフォルトの名無しさん
2007/04/14(土) 19:13:090608デフォルトの名無しさん
2007/04/14(土) 19:29:02なんで「一億」にしてあるのかがわからん。
100000001件にすると表示されないのな。ワロス。
MSDNに書いとけよ。これじゃアメリカ国民全員の名前を
リストコントロールで表示することは出来ないじゃん。
マイクロソフトのくせに自国民の数すらサポートできない
コントロールを作るなんて非難の対象だな
0609デフォルトの名無しさん
2007/04/14(土) 20:35:560610598
2007/04/15(日) 08:16:10ありがとうございます
今は休み中にてVSEしかないのでMFCが無いので試せないので
明日にでも試そうと思います
ちなみに画面を持たないCWndオブジェクトをCreate()する場合、
どんな引数が望ましいのでしょうか?
0611デフォルトの名無しさん
2007/04/15(日) 09:00:12なかったらShowWindowで表示することもできない
ShowWindow
指定されたウィンドウの表示状態を設定します。
BOOL ShowWindow(
HWND hWnd, // handle to window
int nCmdShow // show state of window
);
パラメータ
hWnd
ウィンドウのハンドルを指定します。
nCmdShow
ウィンドウの表示状態を指定します。
0612デフォルトの名無しさん
2007/04/15(日) 22:16:49MFCで作成したソフトを公開したいのですが、VS.net2003の入っていないパソコンで
自分の作ったソフトを実行してみると、
mfc71d.dll msvcp71d.dll msvcr71d.dll
が必要です、とでてきます。
これらのdllは勝手に配布しても大丈夫なのでしょうか?
0613デフォルトの名無しさん
2007/04/15(日) 22:30:070614デフォルトの名無しさん
2007/04/15(日) 22:34:110615デフォルトの名無しさん
2007/04/15(日) 23:04:36MSに訊け。つーか付属ドキュメントくらい読め。
0616デフォルトの名無しさん
2007/04/16(月) 00:55:13便乗で質問なんだが、その手の質問は
MSDN購読してなくても答えてもらえるの?
0617デフォルトの名無しさん
2007/04/16(月) 06:01:25無料のexpressユーザー?と思ったけど
MFCなら製品版使ってるんだろうし、どうやって手に入れたんだろう?
0618デフォルトの名無しさん
2007/04/16(月) 17:40:12MFC AppWizerdで作ったDLLを
Win32 Application(SDK)から呼び出せますでしょうか?
0619デフォルトの名無しさん
2007/04/16(月) 22:46:380620デフォルトの名無しさん
2007/04/21(土) 20:43:010621デフォルトの名無しさん
2007/04/27(金) 02:12:22> 正規ユーザーが知らないはずがない
いや、キッチリとは知らんよ俺は
VC4,VC6,VS8の正規ユーザーなんだけどさw
0622デフォルトの名無しさん
2007/04/27(金) 07:54:490623デフォルトの名無しさん
2007/04/27(金) 11:35:150624デフォルトの名無しさん
2007/04/27(金) 11:36:160625デフォルトの名無しさん
2007/04/27(金) 12:38:590626デフォルトの名無しさん
2007/04/27(金) 13:00:28実際、知らなくても利用できると言いたかった。
0627デフォルトの名無しさん
2007/04/27(金) 14:21:360628デフォルトの名無しさん
2007/04/27(金) 14:56:35strData[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配列は渡せない?
0629デフォルトの名無しさん
2007/04/27(金) 14:58:29> sa.CreateOneDim(VT_BSTR, 3);
> とすると通過するので
sa.CreateOneDim(VT_BSTR, 3, strData);
の部分を
sa.CreateOneDim(VT_BSTR, 3);
とすると通過するので
のミスです。失礼しました。
よろしくお願いいたします。
0630デフォルトの名無しさん
2007/04/27(金) 16:25:300631デフォルトの名無しさん
2007/04/27(金) 16:41:39ということは、_bstr_t配列のままだとCreateOneDim()に直接は渡せないということですよね。
SAFEARRAYとかはまったくの未知で、このへんの使いかたって、
ネット上を探してもなかなか見つからないのですが、
_bstr_t配列やCString配列からCreateOneDim()に渡すBSTR配列を作る方法って、ご存知無いでしょうか。
0632デフォルトの名無しさん
2007/04/27(金) 17:06:440633デフォルトの名無しさん
2007/04/27(金) 17:21:390634デフォルトの名無しさん
2007/04/27(金) 17:29:32Suicaとパスネットでやってきたが、最近はパスネットもいらなくなったし
オートチャージで入金もない。
車はETCで料金所はとまらないし、旅行先でレンタカー
借りるときもETC車載かどうかを気にしてる
0635デフォルトの名無しさん
2007/04/27(金) 17:30:45並ぶことがほとんどなくなった
0636デフォルトの名無しさん
2007/04/27(金) 23:24:510637デフォルトの名無しさん
2007/04/28(土) 02:40:31日本語の練習です
0638デフォルトの名無しさん
2007/04/28(土) 11:12:47プロジェクトの設定の、デバッグ、C/C++、リンクにプロジェクトオプションがあるのだが
コマンドラインからビルドする場合この引数をどの様に渡したらいいの?
0639デフォルトの名無しさん
2007/04/28(土) 11:21:41CL [option...] file... [option | file]... [lib...] [@command-file] [/link link-opt...]
0640デフォルトの名無しさん
2007/04/28(土) 11:40:00サンクス
0641デフォルトの名無しさん
2007/04/29(日) 02:23:43とかは?
0642デフォルトの名無しさん
2007/04/30(月) 22:58:55VBのShowのようなコマンドがあるのかと思ったのですが、よくわかりませんでした。
よろしくお願いします。
0643デフォルトの名無しさん
2007/04/30(月) 23:05:300644デフォルトの名無しさん
2007/05/01(火) 05:06:10インスタンス生成してから
a) Create() して ShowWindow()
b) DoModal()
のどちらでも。つか、MSDNくらい嫁。
0645デフォルトの名無しさん
2007/05/01(火) 12:44:36メニュー→ツール→オプション→ディレクトリ配下の
インクルードファイル、ライブラリファイルは何処に保存されているのしょうか?
C:\program Files\Microsoft Visual Studio配下はgrepしてみましたがありませんでした
レジストリに記録されているのでしょうか?
知ってる人いたら教えてホスイ
0646デフォルトの名無しさん
2007/05/01(火) 13:45:470647デフォルトの名無しさん
2007/05/01(火) 14:50:26ちょっと探してみたがレジストリの
HKEY_CURRENT_USER\Software\Microsoft\DevStudio\6.0\Build System\Components\Platforms\Win32 (x86)\Directories
に入ってるみたいだよ
0648デフォルトの名無しさん
2007/05/01(火) 17:28:42>>645ですが
神が降臨しました、ありがとう実は現在ではVC6 MFCのUIが非常に悪いので
秀丸のマクロと融合させてできる限りの操作を秀丸中心にお行おうと思っていたところです
そういう訳で探していました、本当にありがとね
処でMFCで作成したプログラムはコマンドラインからビルド、コンパイルまで出来るのでしょうか?
(rcファイルはVCで作ってあると仮定してです)?
0649デフォルトの名無しさん
2007/05/01(火) 17:40:50プロジェクトのプロパティで、コンパイルとリンクのコマンドライン見られなかったっけ
それ参考にしたらいいと思う。
0650デフォルトの名無しさん
2007/05/01(火) 17:45:48サンクスです、取り合えず今レジのバックアップを保存したところです
これからゴリゴリとマクロを書いていきますww
0651デフォルトの名無しさん
2007/05/01(火) 18:35:22相当頭堅そうだから本人のやりたいようにやらせて置くのが一番だな
わざわざレジストリの場所教えてやったやつはかわいそう
0652デフォルトの名無しさん
2007/05/01(火) 21:19:12OSについてるものとまったく同じDLLが出来上がるんですか?
0653デフォルトの名無しさん
2007/05/02(水) 00:37:190654デフォルトの名無しさん
2007/05/02(水) 17:48:50複数のモードレスダイアログを入れ子のような感じで作成したいのですが
孫のウィンドウを作成したところで正常に動作しなくなってしまいました。
実際のコードは下のように書いています。
//ビューでマウスがクリックされたら子ウィンドウとしてモードレスダイアログを生成
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);
}
何か根本的な勘違いをしてしまっているのでしょうか?
初歩的な質問ですいません、よろしくお願いします。
0655654
2007/05/02(水) 17:52:31testdlg->SetParent(GetParent());
↓
testdlg->SetParent(this);
でした。
0656デフォルトの名無しさん
2007/05/02(水) 18:58:47解決の重要な手がかりなんだから。
0657デフォルトの名無しさん
2007/05/02(水) 19:14:54モーダルならそういう風にローカル変数でもいいけど
モードレスだと関数抜けた後のことが気になる。
0658デフォルトの名無しさん
2007/05/02(水) 19:17:27PostNcDestroy で delete this が入ってるか、メッセージで何とかしてるのかと
0659654
2007/05/02(水) 21:03:30すいません、説明不足でした。
わかっている限りだと2パターンの変な挙動をしていて
1つはダイアログのウィンドウ自体は生成されているようでウィンドウの移動などはできるのですが
再描画のコードが動作していない時のような感じになる事があるのと(必ずというわけでも無いようです)
生成した孫ウィンドウがアクティブな間は何の問題も無く動作しているように見えるのですが
一度、子のウィンドウをアクティブにしてしまうとアプリケーション自体がフリーズしたような
状態になってしまうといった感じです。
念のためSDIの新規プロジェクトを作り直して見ても結果は同じでした。
>>657,658
一応 PostNcDestroy で delete this をしていました。
こういう場合でもスタティックかグローバル変数にしておいた方が安全なのでしょうか?
0660デフォルトの名無しさん
2007/05/02(水) 21:44:10思いつきで書いただけだから
「関係ないけど」と断ってる
0661デフォルトの名無しさん
2007/05/02(水) 21:45:08ttp://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で親指定すればいいのに。
0662デフォルトの名無しさん
2007/05/03(木) 00:14:49質問させてください
MFCでコンソールアプリって作成出来ないですよね、バージョンは問いません。
0663デフォルトの名無しさん
2007/05/03(木) 00:24:430664デフォルトの名無しさん
2007/05/03(木) 00:52:33え〜まじっすか?
新規作成→プロジェクトからはMFC ActiveX ContorolWizard or MFC AppWizard(dll) or MFC AppWizard(exe)しかないのだけど?
これじゃあコンソールアプリは作成できないよね?
0665デフォルトの名無しさん
2007/05/03(木) 00:57:51Win32コンソールプロジェクトを選択して、詳細でMFCサポート追加しろ。
0666デフォルトの名無しさん
2007/05/03(木) 01:16:56そういう裏技があったのね、サンクス
0667デフォルトの名無しさん
2007/05/05(土) 09:51:020668デフォルトの名無しさん
2007/05/05(土) 10:28:540669デフォルトの名無しさん
2007/05/06(日) 00:16:24一見便利そうに見えるけどインスタンスがハッキリしないから
すげー扱いづらい
こういう仕様デフォにする奴ってアフォだろ
なげー文字列をCStringで扱うとアフォかってほど遅くなる
結局、使えない
0670デフォルトの名無しさん
2007/05/06(日) 00:49:03○(・ω・)○ ソンナコトイワレテモ
○○○ ウチ、ボン・デ・ライオンヤシ
.c(,_uuノ
0671デフォルトの名無しさん
2007/05/07(月) 11:46:34>インスタンスがハッキリしないから
君が何を言っているのか判らないよ…
理解できてないだけじゃ?
0672デフォルトの名無しさん
2007/05/07(月) 11:54:13せめて他の文字列を取り扱う手段と比較してから結論を出してくれ。
0673デフォルトの名無しさん
2007/05/07(月) 17:21:390674デフォルトの名無しさん
2007/05/07(月) 18:55:30CDialogを継承した派生クラスを作りました。
コントロールは、追加したメンバ変数を操作して
扱えましたが、ダイアログ自身はどうやれば操作
できるのでしょうか。
タイトルバーの文字列を変更する方法を模索中です。
this->SetWindowText("タイトル文字列");
を試すと異常終了だし。
0675デフォルトの名無しさん
2007/05/07(月) 19:29:26我が左手に封じられし鬼よ
今こそその力を、示せえーー!!
うおおおおおおーーー!!!
俺の生徒に、手を出すなあーーー!!!!
0676デフォルトの名無しさん
2007/05/07(月) 20:10:38異常終了の詳細キボンヌ
0677デフォルトの名無しさん
2007/05/07(月) 20:22:51「Visual C++ Runtime Error [中止][無視][キャンセル]」
のような感じ文面のダイアログが出て終了。
本来ならそれで正解のはずということでしょうか。
何らかのプログラム上のミスが原因で異常終了が出てるのではないか
という意味でしょうか。
0678デフォルトの名無しさん
2007/05/07(月) 20:30:27コンストラクタの中とかじゃダメだよ。
ちゃんとウィンドウが作成されてCDialogオブジェクトに
アタッチされてからじゃないと。
0679デフォルトの名無しさん
2007/05/07(月) 20:40:02じゃ、mallocで確保した領域に突っ込んだ文字列でいいよ
これで想像付く?
後付けであれがないこれがないごちゃごちゃいうなよぶっ殺すぞ
0680デフォルトの名無しさん
2007/05/07(月) 20:43:58エディットコントロールやスタティックテキストの値を変更している直後
で呼び出してます。
SetWindowTextで正解で、やはり何かプログラム上のミスでしたか。
わかりました、ありがとうございます。
0681デフォルトの名無しさん
2007/05/07(月) 20:50:22そもそもエラーで止まったところで何エラーなのか調べなさいよ
0682デフォルトの名無しさん
2007/05/07(月) 20:58:270683デフォルトの名無しさん
2007/05/07(月) 22:29:57想像も何も、あんたが比較して実際に遅いかどうか判断しなさいよ。
0684デフォルトの名無しさん
2007/05/07(月) 22:39:03CStringは糞だろ
文字列に1文字ずつ足していくとどんどん遅くなってく類だろw
0685デフォルトの名無しさん
2007/05/07(月) 22:42:11まさかとは思うが、CString foo = ""; for (;;) {foo = foo + '-'; std::cout << foo << std::endl;} とかしちゃってるんだろうかw
0686デフォルトの名無しさん
2007/05/07(月) 23:04:49CString 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=""; //今度はきちんとクリアされる
0687デフォルトの名無しさん
2007/05/07(月) 23:06:47mStr += strbuff;
mStrはCString型のメンバ変数、strbuffは引数からうけとったchar*
メソッド実行するたびに鬱になるw
後、CStringの変数を引数に突っ込んで中身を変更したいときとかウザイ
transUnko(char* unko,char* chinko)
ってときにいちいち移し変えなきゃいけねぇじゃん
それか
transUnko(CString *unko,char *chinko)
作らなきゃいけねぇじゃん(俺の知識だと)
後、
strXXX系の関数でいい感じにすでにこさえてあるC言語自分ライブラリ使いたいときも面倒
つーか、気軽に文字列型として扱えないところがウンコだね
うにこーど?いらねぇってw対応予定ねーよ。マジでw
って書いてみたけどさ、
もし簡単にできるにしてもできることがわかりにきぃ
ねっとりべっとりしてやがんだこのクラス
つかいにくーい!
0688デフォルトの名無しさん
2007/05/07(月) 23:18:12MFCの中では評判いいクラスだと思う。
慣れないと使いにくいのは確か
0689デフォルトの名無しさん
2007/05/07(月) 23:24:37CString::GetBuffer
解説
GetBuffer 関数から返されるポインタを使って文字列の内容を変更するときは、
次に他の CString メンバ関数を使う前に、ReleaseBuffer 関数を呼び出す必要があります。
0690デフォルトの名無しさん
2007/05/07(月) 23:38:10というのも、delayimp.libの中ではAfxLoadLibrary()ではなく、
LoadLibrary()を使っているから、どうなんだろう??
0691デフォルトの名無しさん
2007/05/08(火) 01:12:30MFCが自動的にやってくれるようになっただけで。
0692デフォルトの名無しさん
2007/05/08(火) 03:18:26次に他の 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=""; //今度はきちんとクリアされる
0693デフォルトの名無しさん
2007/05/08(火) 05:58:01逆だな。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);
0694デフォルトの名無しさん
2007/05/08(火) 11:21:24C++の事を何か勘違いしてるんじゃないだろうか。
0695デフォルトの名無しさん
2007/05/08(火) 11:25:020696デフォルトの名無しさん
2007/05/08(火) 22:15:500697デフォルトの名無しさん
2007/05/08(火) 22:56:290698デフォルトの名無しさん
2007/05/08(火) 23:29:510699デフォルトの名無しさん
2007/05/08(火) 23:45:24いまはループで回してsetItemでセル一個ずつにセットしてます。
もっと効率がいい方法があればいいのですが。
よろしくお願いします。
0700デフォルトの名無しさん
2007/05/09(水) 00:47:08つLVS_OWNERDATA
0701デフォルトの名無しさん
2007/05/09(水) 01:13:12Win32 GUI Generics
http://www.torjo.com/win32gui/
http://sourceforge.net/projects/win32gui/
0702デフォルトの名無しさん
2007/05/09(水) 14:03:56>C++の事を何か勘違いしてるんじゃないだろうか。
いやいや、
>↑↑↑ここでコンパイル時にエラー出してくれりゃいいのに
なんて書くくらいだから
勘違いとかそういうレベルじゃない。
0703デフォルトの名無しさん
2007/05/09(水) 15:19:500704デフォルトの名無しさん
2007/05/09(水) 21:51:00SetTextしても文字が表示されません。
ttp://athomejp.com/goldfish/mfc/dialog/statusbar.asp
MSDN等調べてみたのですが、実装方法がいろいろありすぎて、
どれが最適で何をしたらいいのかわかりませんでした。
すみませんが、よろしくお願い致します。
0705デフォルトの名無しさん
2007/05/09(水) 21:58:18ちょっと期待してたんだけど、全然更新されてないね…
0706デフォルトの名無しさん
2007/05/13(日) 01:32:28http://wiki.livedoor.jp/vipshogi/d/FrontPage
ここで、将棋の駒を擬人化するプロジェクトをやってるんだけど、プログラマにソースをもって逃げられてしまいました。
ついては、オープンソースで、新しくプログラムを作ろうと思っています。
MFCを使って作られたプログラムを弄れて、ギャルゲっぽいものに興味があって、協力出来る人がいたら、来てくれませんか。
現行スレは、↓です。
http://wwwww.2ch.net/test/read.cgi/news4vip/1178980360/
宜しくお願い致します。
0707デフォルトの名無しさん
2007/05/13(日) 01:41:34追記です。
現行スレが落ちていたら、↓に書き込みを下さい。
http://ex14.vip2ch.com/test/read.cgi/part4vip/1178465966/
0708デフォルトの名無しさん
2007/05/13(日) 02:10:27少しはまともな奴がいるっぽいけど
雑魚ばっかで話にならない
所詮妄想ばっかり先行してる烏合の衆か。
将棋部分に興味ないとかまったくわかんないとかレスが出るだけで俺は参加したくない。
馬鹿じゃねぇの
突破口だけいうと
フリーで将棋プログラム公開してる人に頼み込んで
画像表示部分だけちょいっと弄らせてもらって好きな絵表示できるようにしてもらったほうが
ナンボか可能性ある。
0709デフォルトの名無しさん
2007/05/13(日) 02:39:52どこを見たのか分からんが結構な物言いだな、特に前半
ちらっと覗いてみたが、そんなレスはなかったと思うが
0710デフォルトの名無しさん
2007/05/13(日) 03:27:34だいたいこの状況じゃ
一番苦しいのってまちがいなくメインプログラマーでしょ?
絶対やんねぇよ
ゲーム製作をなめてる
絵のことしか興味ないならビューワーでも作ってろっての
好き勝手要望出すだけの立場の奴等なんかプログラマーは殺意しか湧かない
ゲーム製作現場だって金もらえるからしょうがなく仕事してるのがプログラマーだ
この状況でソフト作ったらまちがいなくすべて俺の手柄だと俺だったら思うね。ていうか間違いねーよ。
それなのにオープンソースにします?はぁ?ふざけろ
だからさ、こういうのやるつもりなら企画をする人間が間違いなくメインプログラマーを張れる人間でなければ絶対に頓挫する
ゲーム製作で一番大変なのはまちがいなくプログラマーだ
実際身動きとれないでしょ?
どういうシステムにしてどういう形のデータが必要になるのか?
プログラマーがいなくてもここまではできますっていう部分あるか?
欠片も浮かばねーだろ?一歩も身動きがとれないでしょ?
0711デフォルトの名無しさん
2007/05/13(日) 04:12:48偉そうにリーダー気取ってる奴の懐にいくらか入ってんじゃねーの?
ブログとも繋がってるしな
0712デフォルトの名無しさん
2007/05/13(日) 06:21:48> A、バグ報告は多ければ多いほど、プログラム修正の参考になります。
なりません。
0713デフォルトの名無しさん
2007/05/13(日) 08:30:02大人気ないぜ
0714デフォルトの名無しさん
2007/05/13(日) 08:31:06え、どこに繋がってる?
0715デフォルトの名無しさん
2007/05/13(日) 12:30:42興味が先行してうっかりこれのメインプログラマーになっちゃった奴が可哀想だなと
0716デフォルトの名無しさん
2007/05/13(日) 14:10:01CListCtrlで「大きいアイコン」表示をした時、スクロールの方向はどうしても、横スクロールになってしまいますが、
これを縦スクロールに変更したいと思っています。
どうやれば、縦スクロールに変わるのでしょうか。
よろしくお願いします。
0717デフォルトの名無しさん
2007/05/13(日) 14:43:03http://pc11.2ch.net/test/read.cgi/tech/1164787254/946-951
から引っ越してきました。よろしくお願いします。
VS2005のMFCです。
CMainFramのID_FILE_NEWからOnFileNew関数を追加しました。
この関数で必要な処理の後、追加前の本来の処理を呼びだすか、
同等の処理を行いたいのですが方法がわかりません。その方法を教えてください。
0718デフォルトの名無しさん
2007/05/13(日) 14:44:14馬鹿には使えないからあきらめましょう
0719デフォルトの名無しさん
2007/05/13(日) 14:47:100720デフォルトの名無しさん
2007/05/13(日) 15:33:57http://pc11.2ch.net/test/read.cgi/tech/1059196520/
0721デフォルトの名無しさん
2007/05/13(日) 16:12:08OnFileNewを呼ぶ
0722デフォルトの名無しさん
2007/05/13(日) 16:12:30どちらかというと、CDocument::OnNewDocumentでどうにかすべきじゃね?
0723717
2007/05/13(日) 16:19:03CMainFrameにメッセージを割りあてたのが間違いでした。
CWinAppにプロテクトのOnFileNewがあってこれがデフォルトの処理のようです。
CxxAppに割り当てて、もとからあった
ON_COMMAND(ID_FILE_NEW, &CWinApp::OnFileNew)を削除したら目的の動作になりました。
OnFileNewがプロテクトメンバだったので無いとか呼べないとか思ってしまったようです。
0724デフォルトの名無しさん
2007/05/13(日) 16:29:45なるほど、このスレの住人に対する優越感だったってわけか
0725デフォルトの名無しさん
2007/05/13(日) 16:43:450726デフォルトの名無しさん
2007/05/13(日) 16:50:27アフィってこと?
そんな感じに見えないんだけど……。
0727デフォルトの名無しさん
2007/05/13(日) 17:07:400728デフォルトの名無しさん
2007/05/13(日) 17:49:34じゃあ、稼がせてやったらいいよw
0729デフォルトの名無しさん
2007/05/13(日) 18:18:01質問に答えないで笑うだけとは、お前、アフォにしか見えんな
そんなに貶めたいなら、向こうで文句言ってくればいいだろうに
こっちに問題を持ち込むなよ
0730デフォルトの名無しさん
2007/05/13(日) 18:22:59そのレスを>>706に付けずに俺に言う辺り、お前も相当頭おかしいだろw
0731デフォルトの名無しさん
2007/05/13(日) 18:27:15反応するよりましだと思うが
まあいいや、お前がいなくなったらまたこよう
0732デフォルトの名無しさん
2007/05/13(日) 18:32:43俺はただ単に、アフィしてるような場所ならいかないけど、そうじゃないなら手伝っても良いかなって思っただけなんだけど
0733デフォルトの名無しさん
2007/05/13(日) 18:50:050734デフォルトの名無しさん
2007/05/13(日) 20:27:540735デフォルトの名無しさん
2007/05/13(日) 23:10:24LVS_ALIGNTOP。
プロパティウィンドウなら、表示-Alignment-Topを選択。
0736デフォルトの名無しさん
2007/05/14(月) 00:31:26ありがとうございます、一発で解決しました。
0737デフォルトの名無しさん
2007/05/17(木) 01:56:51これに対して外部からの通信などによって破棄処理がキックされたとします
すると TrackPopupMenu の後の処理が終わっていないためなのかエラーとなって不正終了してしまいます
これを防ぐにはどうしたら良いでしょうか?
(≒ OnDestroy でポップアップを正常に終了させるにはどうしたら良いでしょうか?)
( つまり TrackPopupMenu の後の処理を実行させるということです)
VK_ESCAPE をポップアップの親ウィンドウに SendMessage することなどを考え付いたのですが、
それでもうまくいかずにほとほと困っております
何かご存知でしたら教えてくださいm(_ _)m
にならないようにする=時間のかかる処理の合間にメッセージループを回すようにする
0739デフォルトの名無しさん
2007/05/17(木) 18:39:02TrackPopupMenu の動作を知らんのか
0740デフォルトの名無しさん
2007/05/20(日) 00:15:39>TrackPopupMenu の動作云々の前にお前が何をしたいのかが解らんなw
0741デフォルトの名無しさん
2007/05/20(日) 10:29:32EndMenu
0742デフォルトの名無しさん
2007/05/20(日) 12:17:310743デフォルトの名無しさん
2007/05/20(日) 12:43:180744デフォルトの名無しさん
2007/05/22(火) 00:53:15情報ありがとうございます
ところで、その関数はどのように使用すればよろしいですか?
インターネットで検索してみたのですが、適切な情報が見つからなかったのですが……
0745デフォルトの名無しさん
2007/05/22(火) 01:55:02ttp://msdn2.microsoft.com/en-us/library/ms647637.aspx
0746デフォルトの名無しさん
2007/05/22(火) 22:37:22ありがとうございます
英語ですか……
中学の時英語は常に1or2だった自分には辛いですねorz
0747デフォルトの名無しさん
2007/05/23(水) 05:34:15マニュアル英文だから変な構文も使われていないし、まともに日本語訳する必要も無い。
0748デフォルトの名無しさん
2007/05/25(金) 14:33:09メニューのポップアップ内を動的に作ろうとしてるんですけど、
このポップアップ項目の種類(たとえば「お気に入り」とか)は
どうやって調べればよいのでしょうか。
ポップアップ項目自身にはIDは付けられませんよね。
メニューの複数箇所やコンテキストメニューにも
同じ「お気に入り」ポップアップを置きたいので、
OnInitMenuPopup()の中で「お気に入りかどうか」を判断したいのですが。
0749デフォルトの名無しさん
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です。
0750デフォルトの名無しさん
2007/05/25(金) 18:36:41http://pc11.2ch.net/test/read.cgi/tech/1178432985/594の名前欄は調べた?
0751デフォルトの名無しさん
2007/05/25(金) 19:09:59そ、そんなところに... (^^;)
やってみます。
0752印刷が遅いのですが
2007/05/26(土) 12:43:26ネットで見つけたサンプルコードで、印刷はできたのですが、
ものすごく遅いのです。
3000*3000の画像をプリントするのに、1時間かかります!
WindowsXPですが、他のアプリから印刷する場合は数分で印刷できるので、
プリンタやOSやドライバの問題ではなく、プログラムの仕方の問題だと思うのですが、
単純にプリンタ用のpDCに画像を送るだけでは速くはならないのでしょうか?
0753印刷が遅いのですが
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);
} }
0754印刷が遅いのですが
2007/05/26(土) 13:06:10>>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ドットずつ描くしかないですよね?
0755デフォルトの名無しさん
2007/05/26(土) 14:11:230756デフォルトの名無しさん
2007/05/26(土) 15:04:14なんで大きい画像だと1どっとずつやるしかないの?
0758デフォルトの名無しさん
2007/05/26(土) 16:25:450759デフォルトの名無しさん
2007/05/26(土) 16:59:17小さい画像は1ドットずつじゃないの?
0760デフォルトの名無しさん
2007/05/26(土) 17:00:510761デフォルトの名無しさん
2007/05/26(土) 17:04:240762デフォルトの名無しさん
2007/05/26(土) 17:08:29BitBltとかいう関数ねぇ?
0763デフォルトの名無しさん
2007/05/26(土) 17:09:47みたとこアホの子なので問題の切り分けなんて無理でしょう
0764デフォルトの名無しさん
2007/05/26(土) 17:28:150765デフォルトの名無しさん
2007/05/26(土) 17:41:420766デフォルトの名無しさん
2007/05/26(土) 17:59:200767デフォルトの名無しさん
2007/05/26(土) 18:13:36∧_∧
( ・ω・) <俺にそんなこと言われてもね
( MFC )
./ つ
( / ̄∪
∧_∧
( ・ω・) <どっちかっていうと俺の出番じゃね?
( GDI+)
./ つ
( / ̄∪
∧_∧
( ・ω・) <いやいや俺だろ
(DirectX)
./ つ
( / ̄∪
0768印刷が遅いのですが
2007/05/26(土) 18:15:28そんなことを言ってる貴方たちも、本当は知らないのでしょう?
それとも印刷に関しては企業秘密かなんかですか?
自分が苦心して見つけた方法を、簡単に他人に話したくない気持ちはわかりますよ。
一緒に問題を解決しようという気持ちはないわけですか?
自分が知ってる方法が、最善だという確信があるわけですか?
BitBltを使う方法はもちろん知ってます。
ただ、それだと若干手順が増えますのでね。
0769デフォルトの名無しさん
2007/05/26(土) 18:22:16だから俺がBitBltって教えてやったじゃんw
0770デフォルトの名無しさん
2007/05/26(土) 18:22:160771デフォルトの名無しさん
2007/05/26(土) 18:25:19何様だよお前w
BitBlt抱えて空へ羽ばたけよw
0772デフォルトの名無しさん
2007/05/26(土) 18:26:18適材適所なので、あんたの求めるケースの適切解は内容が判らない限り説明しようが無い。
>それとも印刷に関しては企業秘密かなんかですか?
企業秘密にならない範囲でなら説明するに吝かではない。
>自分が苦心して見つけた方法を、簡単に他人に話したくない気持ちはわかりますよ。
勝手に判られても困る。寧ろ、それが判ると言い張るならもう少し言葉を選べ。
>一緒に問題を解決しようという気持ちはないわけですか?
ないな。
>自分が知ってる方法が、最善だという確信があるわけですか?
いいや、あくまでも適材適所。
>BitBltを使う方法はもちろん知ってます。
>ただ、それだと若干手順が増えますのでね。
増えるから何? 手順が増えてもそれが適切解なら選択すべきでは?
#適切解かどうかは知らんが。
0773印刷が遅いのですが
2007/05/26(土) 18:42:00>>ただ、それだと若干手順が増えますのでね。
>増えるから何? 手順が増えてもそれが適切解なら選択すべきでは?
そうですか。
だらだら、手順が増えていいなら、どんなこともできますよ。
一応、なるべく、簡潔なコードで、よりよい効果を期待してプログラムをしてるわけで、
コードの増えるBitBlt以外にも方法があるかどうか知りたかったのですが、
BitBltが最善なら、それで行くことにしますよ。
0774デフォルトの名無しさん
2007/05/26(土) 18:46:190775デフォルトの名無しさん
2007/05/26(土) 19:09:170776デフォルトの名無しさん
2007/05/26(土) 19:15:190777デフォルトの名無しさん
2007/05/26(土) 19:23:20おお、成長したじゃんw
1ドット書くのにFillSolidRect使ってたアホの言葉とは思えないねw
0778デフォルトの名無しさん
2007/05/26(土) 20:03:39http://sylphys.ddo.jp/upld2nd/manani2/src/1180177396812.jpg
0779デフォルトの名無しさん
2007/05/26(土) 23:43:50だから、ひとつひとつFillRectしたような実装や、大きいBitmapを小さく小分けしてBltしたりとか、
そりゃ小技を使ったよ。
それ、いまでも、ダメなのかな。
0780デフォルトの名無しさん
2007/05/27(日) 00:05:180781デフォルトの名無しさん
2007/05/27(日) 00:29:430782デフォルトの名無しさん
2007/05/30(水) 07:14:120783デフォルトの名無しさん
2007/05/30(水) 07:42:55君の心の中に・・・
0784デフォルトの名無しさん
2007/05/30(水) 09:22:51appmodul.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
0785デフォルトの名無しさん
2007/06/02(土) 01:03:00VC6.で作ったデフォルトのmfcのプログラムで
メニューからファイルを開こうとすると異常に時間かかる(5秒くらい)
しかも時間かかるのは初回のみでデバッグの時だけ
exeファイル直接実行すると時間も時間もかからずすぐ開ける
エラーも警告も無し
理由がさっぱり解らない。助けて
0786デフォルトの名無しさん
2007/06/02(土) 01:38:020787デフォルトの名無しさん
2007/06/02(土) 09:26:380788デフォルトの名無しさん
2007/06/02(土) 09:49:360789デフォルトの名無しさん
2007/06/02(土) 11:35:540790デフォルトの名無しさん
2007/06/02(土) 13:40:38ソースはvcが生成した奴だから自分は一切
手を加えてない。
>>789
はい、ありがとうございます。
どー考えてもPC自体に原因があんだね。
症例だけを見て同じ人いたらと思いここに書いたが、ふう
なんか解決するにはめんどくさそうなので全部再インスコかな。
0791デフォルトの名無しさん
2007/06/02(土) 13:41:280792デフォルトの名無しさん
2007/06/02(土) 13:43:510793デフォルトの名無しさん
2007/06/02(土) 14:47:52出力ウィンドウに何か出てないか聞いている
0794デフォルトの名無しさん
2007/06/02(土) 16:26:090795デフォルトの名無しさん
2007/06/02(土) 16:27:060796デフォルトの名無しさん
2007/06/02(土) 18:16:08ごめん、出力ウインドウってなんの事?
0797デフォルトの名無しさん
2007/06/02(土) 18:32:580798デフォルトの名無しさん
2007/06/02(土) 18:38:32VS2005なら、メニューの 表示-出力 で表示されるウィンドウの事。
デバッグ時に読み込んだDLLとか、TRACEの出力とか表示されているだろ。
0799デフォルトの名無しさん
2007/06/02(土) 18:53:300800デフォルトの名無しさん
2007/06/02(土) 19:53:43DLL読み込むのに時間がかかったんだよ多分(笑)
でもデバッグしないなら問題ないじゃん、原因や理由を考えるレベルじゃないんだからさ
好きなだけ再インストールでもなんでもしてればぁ
0801デフォルトの名無しさん
2007/06/02(土) 23:55:56出力ってこの下のウインドウの事か。何かって言われても
まあ確かにDLLを沢山ロードしましたって出てる
それくらいで後は
スレッド 0xEE4 終了、終了コード 0 (0x0)。
こんなの。
0802デフォルトの名無しさん
2007/06/03(日) 00:53:24気になったんで動かしてみたら
俺のPCの場合はVC6でこさえてなんもいじってないMFCのプログラム動かしてたらOSごと落ちたw
なんだっけ?これ
なんかアクロバット絡みのファイルオープンダイアログのバグってなかったっけ?
なんか初期化関数おいてやらないと落ちる奴
違うかなぁ・・・なんかあった気がするのは覚えてるんだけど・・・うーん
0803デフォルトの名無しさん
2007/06/03(日) 00:55:25違う症状なので同じ原因かはわからんけど
他のもんもちょっとみてみようかな
いつからこんなんなったんだろう・・・
0804デフォルトの名無しさん
2007/06/03(日) 12:53:50OSごと落ちたんすか、キてますね・・・
アクロバットってあのreaderの事?
確かにあのダイアログ開く時に最初の一回だけだから
コンストラクタのどこかかなとは思ったけど
0805デフォルトの名無しさん
2007/06/03(日) 14:52:26動いてない?
0806デフォルトの名無しさん
2007/06/03(日) 15:30:55コモンダイアログがハングアップします。
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200611/06110018.txt
0807デフォルトの名無しさん
2007/06/03(日) 19:29:42そこに載ってるリンク先
http://www.bea.hi-ho.ne.jp/cgi-bin/user/byoko/bnews?f=b&p=32610
がすげー気になるんですけど。
結局何が問題なの…
0808デフォルトの名無しさん
2007/06/03(日) 19:51:56あ、俺(>>802)のはこれだった
なんでハングアップするんだw
0809デフォルトの名無しさん
2007/06/03(日) 21:02:070810デフォルトの名無しさん
2007/06/04(月) 07:49:56アプリのGUIスレッドで例外が発生したら、プログラム全体を出来るだけ
安全に終了させたいと考えております。
いくつかスレッドが動いていて、今現在何個のスレッドを動作させているか
直接は変数等に控えていない状態で、MFC・Win32APIを用いて、全スレッドを
列挙後、強制終了させたいのですが、この列挙する関数が見つかりません。
このような用途に使えそうな関数はあるのでしょうか?
WinXP SP2
VS2005
C++
0811デフォルトの名無しさん
2007/06/04(月) 07:54:330812デフォルトの名無しさん
2007/06/04(月) 08:11:55自分でグローバルな変数にでも保存しておくのがいいんでない?
0813デフォルトの名無しさん
2007/06/04(月) 10:31:16列挙して強制終了がTerminateThreadの事だったら
何もせずシステムに殺してもらうのと大して変わらんと思うぞ
0814デフォルトの名無しさん
2007/06/10(日) 20:25:44そのファイルが削除されるタイミングを検知できれば、
ファイルハンドルを解放しようと思います。
その方法を知っている方いますか?
0815デフォルトの名無しさん
2007/06/10(日) 21:16:180816sage
2007/06/10(日) 22:05:05MFCでないかなぁと思って。
0817814
2007/06/10(日) 23:05:250818デフォルトの名無しさん
2007/06/13(水) 17:31:16UNICODEビルドのdllからMBCSビルドのdllの関数を呼び出す時の
CString型の変換なんですが、MBCSビルド側のDLLに
・名前を設定する関数
・名前を参照する関数
があるとして
名前を設定する場合は
USES_CONVERSION;
CString strName = _T("名前");
mbcsdll->SetName(W2A(strName));
としてNameをANSIに変換して設定できています。
Nameを参照する際にはCString*を渡す必要があるんですが
CString Name;
mbcsdll->GetName(&Name);
この時のNameへのポインタはどのように型変換して渡すんでしょうか?
このままだと参照できませんでした。
変換をどうやったらいいのか解らず弱っています。
0819デフォルトの名無しさん
2007/06/13(水) 17:43:31CStringA NameA;
mbcsdll->GetName(&NameA);
Name = NameA;
でどう?
0820デフォルトの名無しさん
2007/06/13(水) 17:57:22ただCStringAはVC7からのATLではないですか?
自分VC6なんです(=TェT=)
VC6での型変換方法をご存知ないでしょうか
0821デフォルトの名無しさん
2007/06/13(水) 19:11:457だと
typedef ATL::CStringT< wchar_t, StrTraitMFC< wchar_t > > CStringW;
typedef ATL::CStringT< char, StrTraitMFC< char > > CStringA;
typedef ATL::CStringT< TCHAR, StrTraitMFC< TCHAR > > CString;
だからCStringAと書いたんだけど、6のCStringはどういう定義なんだろう。
それのTCHARをcharに置き換えて変数作ればいいと思う。
>818の後、A2W(Name.GetBuffer())はよくないよね。
0822デフォルトの名無しさん
2007/06/13(水) 19:26:17そこんとこ分かってるのかな?
0823デフォルトの名無しさん
2007/06/13(水) 20:30:12う、「MFCオブジェクト」の意識ありませんでした。すいません。
そういえば自分がやるならインターフェースはプリミティブなものにしちゃうなぁ。
0824デフォルトの名無しさん
2007/06/14(木) 23:10:56FindWindowなどで取得した特定の種類のコントロールのウィンドウハンドルを、
それに対応するMFCの「C〜」クラスに割り当てて、
「C〜」クラスの機能関数を使うことはできるのでしょうか?
もしできるようでしたらやり方を教えて欲しいです。
よろしくお願い致します。
0825デフォルトの名無しさん
2007/06/14(木) 23:19:26ウインドウを扱うクラスといったらあれしかないだろ
0826デフォルトの名無しさん
2007/06/15(金) 00:25:25attachとか見てみて
0827デフォルトの名無しさん
2007/06/17(日) 17:46:25ツリーコントロールにイメージリストを設定。
あるタイミングでツリーのフォントサイズを変更するとき
イメージのサイズも変更したい考え、
一度イメージリストをDeleteImageList()で削除し、
再度Createする際にサイズを変更し設定したんですけど
イメージが消えてしまいました。
なにかいい方法はありましたらご教授をお願いします。
0828デフォルトの名無しさん
2007/06/17(日) 18:36:370829デフォルトの名無しさん
2007/06/20(水) 09:13:52最初にサイズ別にCImageList を2つ作って切り替えたいときにCTreeCtrlにSetImageListする。
0830デフォルトの名無しさん
2007/06/20(水) 12:31:24ダイアログ終了後も値を内部で持っておくために、
ダイアログオブジェクトをグローバルで一つだけ持ち続けて、
いろんな箇所からモーダル表示させたいんですけど、
DoModal()の前に親を再指定できる箇所が見当たらないんです。
0831デフォルトの名無しさん
2007/06/20(水) 12:37:280832デフォルトの名無しさん
2007/06/20(水) 17:46:37CWndから派生してるから親はどうとでもなるが
親を変える必然性が解らん
デフォで出来るAboutAppのダイアログにEditBoxとその値用変数を一個追加
ダイアログをグローバル変数にしてMainFrameとAppから呼ぶようにしてみたが普通に動いたし
変数の変は常に保持されていた。デフォなので親はNULL
メッセージを送るなら送りたい相手のハンドルが入手できれば良いわけだし
モーダルだからWindowが残ることもないし
0833デフォルトの名無しさん
2007/06/20(水) 18:55:57メーラのように子のフレームウィンドウを何個も表示するアプリなので、
ダイアログの親をNULLにしたままだと、メインウィンドウの上に出てきてしまうんです。
ダイアログ側からもGetParentFrame()を使って
DoModal()をコールしたフレームウィンドウにアクセスしたいので、
できればダイアログの親をDoModal()時に変更できればと思ってます。
0834デフォルトの名無しさん
2007/06/20(水) 20:07:440835デフォルトの名無しさん
2007/06/20(水) 20:33:28別々のウインドウからDoModalしたらぶつかるんじゃないか?
0836デフォルトの名無しさん
2007/06/20(水) 21:07:40前回指定された情報をそのまま次回も再表示したいので、
ダイアログオブジェクトをグローバルにしておけば
ダイアログ内のメンバをそのまま使い回せると思ったのですが、
おとなしく毎回ダイアログから値を取って別の場所に残しておき、
次の表示時に一つずつ入れ直してしまうべきなのですかね。
>>835
もちろん、モーダル表示中は他のウィンドウも操作不可にしています。
0837デフォルトの名無しさん
2007/06/20(水) 21:27:09マウスを右クリックしたタイミングで特定のプログラム(実装)を
右クリックメニューに追加したいのですがどうしたらできますか?
0838デフォルトの名無しさん
2007/06/20(水) 22:47:33もっと具体的に
0839デフォルトの名無しさん
2007/06/21(木) 11:57:34>マウスを右クリック
どこでだよ。
シェル拡張の話か?
0840デフォルトの名無しさん
2007/06/21(木) 13:48:050841デフォルトの名無しさん
2007/06/21(木) 13:56:050842デフォルトの名無しさん
2007/06/21(木) 15:39:160843デフォルトの名無しさん
2007/06/24(日) 09:10:40AppendMenu, InsertMenu
0844デフォルトの名無しさん
2007/06/27(水) 02:10:10CToolbarを2つ作成し、CFrameWndの右と下に
ドッキングさせると、
┌───────────┬┐
│ ││
│ ││
│ ││
│ ││
│ ││
├───────────┴┤
└────────────┘
のように、下のツールバーが右のツールバーに
かぶさるようにドッキングされますが、
┌───────────┬┐
│ ││
│ ││
│ ││
│ ││
│ ││
├───────────┤│
└───────────┴┘
のように、右のツールバーが下のツールバーの上に
かぶさるようにドッキングすることって可能でしょうか?
0845デフォルトの名無しさん
2007/06/27(水) 05:52:410847デフォルトの名無しさん
2007/06/28(木) 02:01:19↓\→+P
0848デフォルトの名無しさん
2007/06/28(木) 11:53:300849デフォルトの名無しさん
2007/06/28(木) 12:33:130850デフォルトの名無しさん
2007/07/01(日) 05:04:01自分、初級PG(MFC使ったこと無い)ですが
最近入ってきた中途の人が
「MFCは楽、簡単」
って言ってる人が居るんだけどそうなんですか?
MFCって要するに巨大な関数群、ライブラリな訳ですよね?
使い易い関数や便利な関数は沢山あれど
結局はそれをどう使うかですよね?
それは結局標準的なC言語の関数をどう使っていかに組むか
っていうのと変わらないと思うんですけど・・・
それとも自分の知らないMFCの機能が有って
楽で簡単になるんですか?それってC言語の仕様が変わったりするって事ですか?
誰か分かり易く教えてください。
0851デフォルトの名無しさん
2007/07/01(日) 05:31:05いいえ
0852デフォルトの名無しさん
2007/07/01(日) 05:35:59関数群でもクラスライブラリでもない。
何か勘違いしてると思うのでMSDN調べるといい。
0853デフォルトの名無しさん
2007/07/01(日) 06:19:09楽するためにウィザードがついている
VCからMFCを取ったらほとんど何の価値もないから
無償版として提供されている。
0854デフォルトの名無しさん
2007/07/01(日) 08:26:09C言語の標準関数で、文字列の末尾から5文字を取得する関数を書いてみろ
MFCなら簡単にできるぞ
0855デフォルトの名無しさん
2007/07/01(日) 08:39:22sprintf(buf, "%.5s", strlen(str) < 5 ? str : str + strlen(str) - 5);
// MFCはC++なんだから較べるならstd::stringじゃね?
0856デフォルトの名無しさん
2007/07/01(日) 10:06:03文字列を扱う目的だけでMFC使うやつはあんまりいないと思う
0857デフォルトの名無しさん
2007/07/01(日) 10:10:020858デフォルトの名無しさん
2007/07/01(日) 11:05:24MFCの他にWTLやATLを使う方法があるというのを
聞いているのですが、
VC++6.0 MFCを使って作る場合の
メリット、デメリットについてご存知でしたら
教えて頂けませんでしょうか。
(早く作れる、移植性が悪い など)
0859デフォルトの名無しさん
2007/07/01(日) 11:18:370860デフォルトの名無しさん
2007/07/01(日) 11:38:49ドキュメントビュー構造が利点にも欠点にも。
古臭い。
0861デフォルトの名無しさん
2007/07/01(日) 13:17:30ありがとうございます。初めて知りました。
SleipnirがMFCとは知りませんでした。
MFCは業務で使ったことがあり、私は
変えたいところは
上書きして対応できるし工数が減るので
使えると思っていたのですが、
なぜだかMFCアレルギーというか
異様に嫌っている人がいて、
使わないほうがいいみたいな風潮が
を出しているために、戸惑っていました。
DonutはWTLを使っているみたいですね。
>>860
ありがとうございます。
ドキュメントビュー構造というのは、SDI/MDIで
出てくるControl/View/Modelの
ことでしょうか。
0862デフォルトの名無しさん
2007/07/01(日) 13:50:33ブラウザを作る話か。
勘違いしてた。
なら話は簡単。
MFCはブラウザをサポートしてる。
これがメリット。
デメリットはMFCだってこと。
0863デフォルトの名無しさん
2007/07/01(日) 13:55:43すっかり気に入ってしまった、C言語の拡張、高機能版という認識でいる、MFCの関数をあまり知らなくても
Cでゴリゴリ書けばいいし、後で等価のMFCの関数に気付いたら修正すればよろし
0864デフォルトの名無しさん
2007/07/01(日) 14:07:35置き換えた関数の一例を挙げてくれ。
漏れは逆に、MFCはリソースエディタとDDXくらいしか使ってないんだよね。
基本的に、GUIべったりじゃないところはCStringさえ使わないようにしていたし。
0865デフォルトの名無しさん
2007/07/01(日) 14:32:26そうだね例えばSDKでFindFirstFile使ってフォルダ検索処理してたのをMFCの
CFileFindを使ったりとかだね、ラッパ関数なんで速度的にも満足してるな
0866デフォルトの名無しさん
2007/07/01(日) 15:01:06ファイルダイアログから文字列で貰うのって限界なかったっけ?
VBとかだと何個読みこんでも大丈夫みたいなんだけど
0867デフォルトの名無しさん
2007/07/01(日) 16:00:22VBは使ったことないからどうなってるのかしらんが
OPENFILENAMEのlpstrFileにOFN_ALLOWMULTISELECTの場合はExtra NULL characterで区切られとると書いてあるだろ
0868デフォルトの名無しさん
2007/07/01(日) 16:08:24いや、問題は最大長の話なんだけど0xFFFFが限界じゃなかったっけ?
それで読むとさ、パスが長いとショボイファイル数しか読み込めないんだけど
一体みんなどうやっているのかと疑問だったんだ
0869デフォルトの名無しさん
2007/07/01(日) 16:10:520870デフォルトの名無しさん
2007/07/01(日) 17:34:39いや、たぶん素で書いてるんだと思うよ。
>C言語の拡張、高機能版という認識でいる
ということらしいから、言語とライブラリの違いがわかってなさそう。
このスレ自体釣りなんじゃないかと疑ってしまうけどね。
MFCって言うと、ドラッグアンドドロップのようなOLE関連の操作を
フレームワークに閉じ込めた部分が一番大きいと思うんだけど、
そういう話が一切出てこないところを見ると、ほんとに使ってるやついるのかと
疑問がわいてくるよ。
0871デフォルトの名無しさん
2007/07/01(日) 17:53:450872デフォルトの名無しさん
2007/07/01(日) 17:57:500873デフォルトの名無しさん
2007/07/01(日) 17:59:43・ファイルオープンダイアログのファイル無限読み込み
・トラッカークラス
・メモリデバイスコンテキストの管理
がわかんない(MFC使わないと)
0874デフォルトの名無しさん
2007/07/01(日) 18:03:45「ドキュメント編集」という骨格を使うならそうだろうけど、
漏れみたいにダイアログしか使わない用途ならOLEなんかもどうでもいいね。
>864にも書いたけど、ダイアログに部品をペタペタ貼るだけだからなぁ。
#んで、某社のActiveXの糞仕様に悩まされたりして。
0875デフォルトの名無しさん
2007/07/01(日) 19:32:54単体のグローバル関数で構成されるほうが不自然なのに
両方関数単体であることを比較条件にするのも
よくわからないけどな
0876デフォルトの名無しさん
2007/07/01(日) 20:13:53まず最初に随所に出てくるAfxの意味を
先に説明しないから
気持ち悪い状態で進まらざるを得ない
せいもあったかもねぇ。
0877デフォルトの名無しさん
2007/07/01(日) 21:01:19Framework eXtention」とかじゃないのかな。けど、名前に意味はないよ。
マクロにしろ、関数にしろ、定数にしろ、ソースが公開されているの
だから、どこでどう定義されているか調べればよいだけ。選択して右
クリックすれば、定義位置へジャンプする便利なメニューがあるでそ。
0878デフォルトの名無しさん
2007/07/01(日) 21:04:220879デフォルトの名無しさん
2007/07/01(日) 22:26:40OpenFileDialogなんか使っているくせに0xFFFFで不足とかショボイとか笑わせんなよ
0880デフォルトの名無しさん
2007/07/01(日) 22:59:51いや、マジでわかんない
煽り抜きで
0881デフォルトの名無しさん
2007/07/01(日) 23:33:00>>879 ではないが、出来合いのモン(コモンダイアログ)に文句を言うなら、
自前で作れば良かろうと言っているんでは?
0882デフォルトの名無しさん
2007/07/01(日) 23:40:41いや、それだとエクスプローラ上で選択されたもんをもってくる手段がわからん
みんなここから自作してんの?もしかして?
0883デフォルトの名無しさん
2007/07/02(月) 13:57:13ダイアログはMFCの機能じゃないだろ。
0884デフォルトの名無しさん
2007/07/02(月) 14:07:30printfとかあるし。
0886デフォルトの名無しさん
2007/07/02(月) 14:43:48え?CDialogしか使ってないのに>>874みたいなこと書いてるの?
そりゃ失礼。
ママー変なおじさんが来たよ〜〜〜
0887874
2007/07/02(月) 14:57:010888デフォルトの名無しさん
2007/07/02(月) 15:23:35馬鹿にされるのは仕方ないかもな。
0889デフォルトの名無しさん
2007/07/02(月) 20:07:22VC6で簡単にエクセルのようなグリッドコントロールが使いたいのですが・・・
0890デフォルトの名無しさん
2007/07/03(火) 10:36:47VC6には、FlexGridのMSバンドル版である、MS-FlexGridがバンドルされていたと思いますが。
Excel(つーかMSOfficeSuite)をインストール済みなら、Excel由来のコントロールも使えると思うし。
0891デフォルトの名無しさん
2007/07/03(火) 12:45:41MFC 使ってるんだが、そんなオカシイこと言ってるか?
0892デフォルトの名無しさん
2007/07/03(火) 12:49:250893デフォルトの名無しさん
2007/07/03(火) 16:05:18CDialogだけってことはあまりないだろ
配置するコントロールもMFCクラスだし
文字列操作とかファイル操作とか
見えない処理でもMFCクラスを使う
機会はある。
0894デフォルトの名無しさん
2007/07/04(水) 01:17:10お前マジでそんなものも作れないの?
0895デフォルトの名無しさん
2007/07/04(水) 01:41:46ここ数日煽りばっかりやってるけど
何か嫌なことでもあったの?
0896デフォルトの名無しさん
2007/07/04(水) 03:14:33使ってみたいひといる?
0897デフォルトの名無しさん
2007/07/04(水) 06:15:52すまん
解説キボン
0898デフォルトの名無しさん
2007/07/04(水) 07:53:230899デフォルトの名無しさん
2007/07/04(水) 08:53:260900デフォルトの名無しさん
2007/07/04(水) 09:26:040901デフォルトの名無しさん
2007/07/04(水) 11:10:170902デフォルトの名無しさん
2007/07/04(水) 18:31:10どうせならMFCだけでなく、ATL::CWindowからATL::CWindowImplあたりのカバーをしてくれ。
そうすればVC++以外でWTLが使えるようになる。
0903デフォルトの名無しさん
2007/07/05(木) 00:03:59解説キボンの前にどこまで考えたのまったく考え付かないわけ?
まったく考えつかない場合目茶低レベルなので以下の質問に答えて欲しい。
TreeViewとかTreeCtrlとかは使ったことあるの?
あるならそれを自前で実装するとしたらどうすればいいか考えてみればいい。
FileDialogも似たようなもの。
TreeViewもヒントにならない場合初歩にも達していないので以下の質問をさせてもらう。
普通のViewに好きなようにアイコンは表示できるのできないの?
これができないならお手上げ、できるなら上の質問に答えられるレベルになればなんとかかんとか思いつくようになれるだろ
良い実装になるかどうかしらんが解説キボンなどと書かなくはなるだろ
0904デフォルトの名無しさん
2007/07/05(木) 00:19:310905デフォルトの名無しさん
2007/07/05(木) 01:16:46MFC設計者アホだろ
0906デフォルトの名無しさん
2007/07/05(木) 04:45:05つーか、あれ、SDKそのままで手を加えてないだけだと思うが。
0907デフォルトの名無しさん
2007/07/05(木) 07:43:04え?いきなりtreeの話始めてるけど
基本方針ってどういうのを想定して言ってるの?
話が全く見えないんだけど?
つまり、FileDialogをどうにかこうにかして使うんじゃなくて
既存FileDialogはもう全く駄目なので自分が望む理想のFileDialogを自作するって言ってる?
0908デフォルトの名無しさん
2007/07/05(木) 09:04:28http://msdn2.microsoft.com/ja-jp/library/dk77e5e7(VS.80).aspx
20*(MAX_PATH+1)+1とかやってたけど問題無かったがなぁ…
ってちゃんと検証したか覚えて無いがw
0909デフォルトの名無しさん
2007/07/06(金) 01:15:34WM_CLOSE、EndDialogどれも落ちる気配が無いです…
0910デフォルトの名無しさん
2007/07/06(金) 01:54:452048?マジすか?
なんもできないじゃないですかw
やっぱり自分で作るしかないですかね
0911デフォルトの名無しさん
2007/07/06(金) 09:41:20これ対応するにはカスタムテンプレートじゃなくてフックのほうを使うのかな
0912デフォルトの名無しさん
2007/07/07(土) 16:45:11char szItem[定数][可変長];
これと等価のものはどの様に書いたらイイデツカ
0913デフォルトの名無しさん
2007/07/07(土) 17:12:28std::vector<std::vector<char> >
0914デフォルトの名無しさん
2007/07/07(土) 21:40:05といいつつこれも違うんだが、CStringArrayを勧めてみる。
0915デフォルトの名無しさん
2007/07/08(日) 11:29:41クラシックスタイルになってしまいます。
アイコンつきのボタンをXPスタイルで表示させるにはどうすればいいんでしょうか?
0916デフォルトの名無しさん
2007/07/08(日) 12:49:261. オーナードロー+Theme系APIで全部自前描画
方法としては一番正しそう。だが面倒。
2. NM_CUSTOMDRAWで中身描画部分だけオーバーライド
BS_BITMAP/BS_ICONはオフにしておくこと。
2005だと手作業で追加作業が必要だったので、念のためメモしとく。
*このメッセージはCC6.0以降でしか送られてこない事に注意
// BEGIN/END_MSG_MAP
ON_NOTIFY(NM_CUSTOMDRAW, コントロールID, ハンドラ)
// ハンドラ
afx_msg void Handler (NMHDR * pNotifyStruct, LRESULT * result)
// ハンドラ実装
const NMCUSTOMDRAW& nmcd = *(const NMCUSTOMDRAW *)pNotifyStruct;
if ( dwDrawStage == CDDS_PREPAINT ) {
// ここでnmcd.hdcに自前描画
*result = CDRF_SKIPDEFAULT;
}
else {
*result = CDRF_DODEFAULT;
}
0917デフォルトの名無しさん
2007/07/08(日) 14:55:24レスありがとうございます
自前で描画するしかないんですねorz
Theme系APIについて全く無知なので先は険しそうです
0918デフォルトの名無しさん
2007/07/09(月) 08:14:29たしかVC6はCStringはクラステンプレートになっていなかったはず。
0919デフォルトの名無しさん
2007/07/09(月) 18:01:07現在、複数のコントロールバーの状態を、CFrameWnd::SaveBarStateを使わずに、
アプリケーションのINIファイルやレジストリとは無関係の任意のINIファイル、
任意のセクションに、WritePrivate系の関数で保存できないかと試行錯誤しています。
CDockStateの解説を見てみたところ、Serializeで保存できると書いてあったので、
CMemFileでメモリ上にシリアル化し、そのバイト列をそのまま
WritePrivateProfileStructで吐き出してしまう方法を思いつきました。
以下のようなコードになっているのですが、CMemFileを使うこと自体も初めてで、
このような方法でよいものなのか、わからない状態なのです。
こういう方法でコントロールバーの状態を保存した場合、
なにか問題の起こる可能性はありますでしょうか?
もしくは、もっと的確な方法はありますでしょうか?
CDockState state;
GetDockState(state);
CMemFile file;
CArchive ar(&file, CArchive::store);
state.Serialize(ar);
int bufSize = file.GetLength();
BYTE* pBuf = file.Detach();
CString strBufSize;
strBufSize.Format(_T("%d"), bufSize);
WritePrivateProfileStruct(_T("SECTION"), _T("BUFFER"), pBuf, bufSize,
_T(".\\DockState.ini"));
free(pBuf);
0920デフォルトの名無しさん
2007/07/09(月) 19:44:400921デフォルトの名無しさん
2007/07/10(火) 11:27:58どのように取得したらよいでしょうか?
theApp.m_hInstance
をGetModuleFileNameに渡してみたのですがDLLも
パスが取得できず、呼び出し元のパスが取得されてしまいます。
よろしくお願いします。
0922デフォルトの名無しさん
2007/07/10(火) 12:41:290923デフォルトの名無しさん
2007/07/10(火) 12:50:500924デフォルトの名無しさん
2007/07/10(火) 12:54:28MFCでしょ?(マイクロソフトの製品)
.NET Frameworkクラスライブラリは、何からできてるの?
0925デフォルトの名無しさん
2007/07/10(火) 12:59:490926デフォルトの名無しさん
2007/07/10(火) 13:22:04Win32に相当するのが.NET Framework
0927デフォルトの名無しさん
2007/07/10(火) 14:38:38で、.NET Frameworkは下請けとしてWin32 APIを呼んでいるはず。
そうでなければ、.NET Frameworkと同じ仕掛けを使えば、システムコール
を使わずにシステムを直接操作できる「セキュリティホール」が存在する
ことになる。
マイクロソフトは、将来的にはMFCやWin32APIを捨てて、.NET Frameworkを
ネイティブなAPIにしたいようだけど、そうなればWindowsエミュレータを
提供しない限り、過去のWindows資産は動かなくなるわけで、下手をすると
Windowsで大きくなってきたMicrosoftの足元をすくうことにもなりかねない。
0928デフォルトの名無しさん
2007/07/10(火) 16:39:57(長くなるのでエラー処理は省いています。)
m_wndSplitter.CreateStatic(this, 1, 2);
m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CLeftView), CSize(100, 100), pContext);
m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CSplitWndTestView), CSize(0, 0), pContext);
上記のような左右分割のスプリットウィンドウは問題ないのですが、
m_wndSplitter.CreateStatic(this, 2, 1);
m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CLeftView), CSize(100, 100), pContext);
m_wndSplitter.CreateView(1, 0, RUNTIME_CLASS(CSplitWndTestView), CSize(0, 0), pContext);
上記のような上下分割のスプリットウィンドウを作成仕様とすると、CSplitterWnd::IdFromRowColの下記Assertに引っかかってしまいます。
ASSERT(col < m_nCols);
ちなみにASSERTだけが問題らしく、リリースビルドの場合は問題なく動作しています。
何か書き方に問題がありますでしょうか?
環境はWindowsXP SP2 + Visual Studio 6.0 SP6です。
0929デフォルトの名無しさん
2007/07/10(火) 16:43:15>.NET FrameworkはMFCやATL/WFC等に代わるライブラリ
いや Framework っつーくらいで、実行環境だから。
>ネイティブなAPIにしたいようだけど、
諦めたとか言ってなかったっけ?
つかスレ違いだ。
0930デフォルトの名無しさん
2007/07/10(火) 16:58:34デバッガ持ってないの?
0931デフォルトの名無しさん
2007/07/10(火) 17:25:37の意味を考えればすぐわかりそうなもんだが。
0932デフォルトの名無しさん
2007/07/10(火) 20:01:21>>915=>>917です。その後の経過を報告します。
まず[1.]の方法を試してみましたが、
ボタンの上にポインタがあることを検知できないことに加えて、
Theme系のAPIを使うと、当然ながらWin2k上で動かない、
という問題が発覚しました。
次に[2.]の方法を試してみましたが、
こちらはXP上ではそれっぽく表示され、
2k上ではアイコンなしのボタンとして表示されます。
理想はXPでも2kでもアイコンが表示され、かつXP上ではXPのスタイルに
なることなんですが、現状の選択肢だと[2.]の方法で妥協するか、
全部古いスタイルに統一してしまうか、になりそうです。
それとまた質問なんですが、DrawThemeBackground関数に渡す
BP_PUSHBUTTON とか PBS_NORMAL 等はどこに定義されているんでしょうか?
今回は0,1,2...と渡して実際に動かして試しました。
0933デフォルトの名無しさん
2007/07/10(火) 22:41:21tmschema.h
uxtheme.hの頭の方に、どこで定義されているかは書いてあるんだけどね。
CC6.0以降は自前描画、それより前はBS_ICON+SetIcon、
と使い分けるのが無難かな。多少面倒だけど。
0934デフォルトの名無しさん
2007/07/10(火) 22:45:57[1]では、Windows 2000ならテーマAPIではなく、
GDIのDrawFrameControlかDrawEdgeで枠を書けばいい。
ますます面倒くささに拍車がかかるけど。
0935デフォルトの名無しさん
2007/07/11(水) 20:41:58レスありがとうございます。
基本的に>>933氏のアプローチに沿うかたちになりました。
まずLoadLibraryとGetProcAddressをつかってOpenThemeData関数をコール、
テーマが取得できたらカスタムドローイベントでアイコン部分を描画。
Openしたテーマ自体は使わずにすぐにClose。
テーマが取得できない、あるいはライブラリをロードできない場合は
CButtonをBS_ICONで作り直して普通のアイコンつきボタンにする。
これで一応期待した動作になりました。
なんかCButtonがCreateされたあとはBS_ICONをON/OFFできないみたいなので、
DestroyWindow→Createで作り直すような形になってしまいましたが、
こういうものなんでしょうか。
0936デフォルトの名無しさん
2007/07/13(金) 13:26:29CEditのLineLengthで指定行の文字のバイト数が取得できると思ったんですが、
int len = m_edit1.LineLength(m_edit1.LineIndex(i));
MSDNによると指定された行の長さ (バイト数)と書いてあるので
例えば「あいうえお」とすれば10が返ってくると思ったんですが、実際には5が返ってきます。
これだと全角文字はGetLineで一行取り出す、ということが出来ないんですが、こんなもんなんでしょうか。
0937デフォルトの名無しさん
2007/07/13(金) 13:35:140938デフォルトの名無しさん
2007/07/13(金) 13:40:300939デフォルトの名無しさん
2007/07/13(金) 13:45:51おかしいな、と思い新しいプロジェクトでテストしてみたら、本当ですね・・
ちゃんと10が返ってきてます・・・・おかしい、何かがおかしい、
すみませんでした。
0940デフォルトの名無しさん
2007/07/13(金) 13:47:40いえ、マルチバイトです。
0941デフォルトの名無しさん
2007/07/13(金) 14:10:390942デフォルトの名無しさん
2007/07/13(金) 14:22:02一応、アサートします・・・
0943デフォルトの名無しさん
2007/07/13(金) 14:31:53ASSERTで実行が止まりましたか?
0944デフォルトの名無しさん
2007/07/13(金) 14:32:33はい、止まりました。マルチバイトだからですよね。
0945デフォルトの名無しさん
2007/07/13(金) 15:00:13EM_LINELENGTHの方は
>the return value is the length, in TCHARs
って書いてあるから、MFCの方が間違ってるっぽい。
0946デフォルトの名無しさん
2007/07/13(金) 15:10:210947936
2007/07/13(金) 16:15:39それでもなぜうちだとMBCSにも関わらず文字数が返るのかが分からなかったんです。
いろいろ調べたら、どうやらXPスタイルに問題があるようでした。
XPのSP2(もしかしたら他も)でビジュアルスタイルを適用していると、エディットボックスの挙動が変わるらしいです。
ビジュアルスタイルを外してテストしたらちゃんとバイト数が返ってきました。
でも古臭いのはイヤなので、改行コードやらなにやら自分で取得して一行単位の処理したいと思います。
一日中悩みました。
0948936
2007/07/13(金) 16:20:41ソースまで見てくれてありがとうございました。
僕も見ましたが随分簡単なソースだったんですね。
0949デフォルトの名無しさん
2007/07/13(金) 16:42:27読みたい行数が多い時はGetLine使わない方がいい
だからGetLine使わずに行処理する方法も考えることになる
0950デフォルトの名無しさん
2007/07/13(金) 16:48:07バッファは大目に用意しとけばいいし
エディットコントロールの最大を超えることはないし
0951デフォルトの名無しさん
2007/07/13(金) 17:13:030952デフォルトの名無しさん
2007/07/14(土) 19:57:23CDialogBar内のコンボボックスでリターンキーを押下したときに
イベントを発生させたいのですが、
どうやってCDialogBar内のコンボボックスのリターンキー押下の
メッセージ拾えばいいですか?
0953デフォルトの名無しさん
2007/07/14(土) 20:30:20PreTranslateMessageでできました
スレ汚しスマソ
0954デフォルトの名無しさん
2007/07/15(日) 00:58:020955デフォルトの名無しさん
2007/07/17(火) 10:44:550956デフォルトの名無しさん
2007/07/20(金) 18:04:45この度MDIのプログラムを作りたいのですが、SDIやMDIの場合リソースファイルを
自分で書かないといけないものなのですか?
ダイアログベースの場合はツールボックスからD&Dして作っていて簡単だったんですが
不便ですよね
0957デフォルトの名無しさん
2007/07/20(金) 18:34:55FormViewとか知らんの?
0958デフォルトの名無しさん
2007/07/20(金) 18:45:23およそSDIやMDIは知らなくても出来たのでFormViewとか全くの無知です
やりたい事はMDIベースのダイアログからボタンを押したら
グラフのダイアログ(ビューかな?)やテキスト入力の出来るダイアログを出すことです
0959デフォルトの名無しさん
2007/07/20(金) 19:51:41普通に勉強すればいいよ
0960デフォルトの名無しさん
2007/07/20(金) 19:57:09サンクス
>>958の書込み読んでFormViewを検索して、SDIでもMDIでも新しいプロジェクトの作成から
基底クラスを良く考えて選べば出来そうですね余りにも同じようなプログラムばかり
組んだり改造しているんで世間知らずでしたww、よってこの質問は取り下げます
0961デフォルトの名無しさん
2007/07/21(土) 06:25:55もうくるな
0962デフォルトの名無しさん
2007/07/22(日) 01:38:55MDIの話でもドキュメントテンプレートの理解までもってってくれる
入門書はみたことないしドキュメントテンプレート理解できないと結構ハマルと思うんだ、俺。
0963デフォルトの名無しさん
2007/07/22(日) 03:23:14SDIやダイアログonlyのアプリで複数インスタンス立ち上げ可能な創りの方が合理的だろ
0964デフォルトの名無しさん
2007/07/22(日) 13:37:320965初代スレの>>1
2007/07/23(月) 22:18:45俺はとっくの昔にMFCなんてクズライブラリは見限って
C#とオブジェクト指向で楽チンなプログラミングライフを
送っているというのにお前らときたら大変だなw
同情を禁じ得ない。
0966デフォルトの名無しさん
2007/07/23(月) 22:41:14このスレにいるのは回答側にまわってるだけさ。
0967デフォルトの名無しさん
2007/07/24(火) 00:40:15CEditとかはWizardだとCStringとかにしか定義できません。
参考ページとかでもよいので教えてください。
0968デフォルトの名無しさん
2007/07/24(火) 01:00:20UpdateDataではすべてが更新されてしまいますが
コントロールを指定して一つ一つValidateするにはどうしたらよいでしょうか?
Failを呼び出すとメッセージボックスが出てきてしまいますが
これを独自のエラー表示とするにはどうしたらよいでしょうか?
(たとえばToolTipとかLavelに表示)
0969デフォルトの名無しさん
2007/07/24(火) 08:34:41>DDX_ プロシージャと DDV_ プロシージャの書き方、
>ClassWizard を拡張して独自のルーチンを使う方法についても説明します。
0970デフォルトの名無しさん
2007/07/26(木) 03:19:30VC6.0使いつづけて6年・・・
統合環境の中では軽い方だし最高なのに
0971デフォルトの名無しさん
2007/07/26(木) 20:59:330972デフォルトの名無しさん
2007/07/26(木) 22:01:280973デフォルトの名無しさん
2007/07/26(木) 22:51:160974デフォルトの名無しさん
2007/07/26(木) 23:00:28俺的にはVC2005が割と良かったからそろそろバージョンアップしてもいいと思うが
0975デフォルトの名無しさん
2007/07/26(木) 23:41:030976デフォルトの名無しさん
2007/07/27(金) 05:33:38どう考えても
0977デフォルトの名無しさん
2007/07/29(日) 21:50:54別のダイアログが現れますそのダイアログにはリストボックス、OKボタン、キャンセルボタンが張り付けてあります、
そのリストボックスに、継承関係の無い別クラスから、ファイルを読み出しながら
SendMessage関数でデータを送出してリストボックスに表示させたいのですが可能でしょうか?
0978デフォルトの名無しさん
2007/07/29(日) 22:00:09非同期で処理するなら、別スレッドでファイルを読みつつ、
ダイアログ側はタイマーで随時その内容を取り込むって感じだな。
0979デフォルトの名無しさん
2007/07/29(日) 22:13:08非同期で行うとデータの取りこぼしとか起きないでしょうか?
SendMessage関数のならデータを投げて戻り値も見てるから大丈夫なのかな?
0980デフォルトの名無しさん
2007/07/29(日) 22:25:11たまたま思いついた方法が可能かどうかということ?
漠然と思いついたこと書かれてもイメージつかめない
0981デフォルトの名無しさん
2007/07/29(日) 22:33:46apiを直に呼ぶ場合は別ね
0982デフォルトの名無しさん
2007/07/29(日) 22:35:06すみません曖昧で、データを投げるダイアログのハンドルの取得方法が
分かんなくて困っています、あとその上に貼っているリストボックスのハンドルの
取得方法も教えていただけないでしょうか、宜しくお願いします
0983デフォルトの名無しさん
2007/07/29(日) 22:44:51MFCではSendMessageは使わないものなの、となると
MFCでは一般的にはどんな風に行うのでしょうか?
0984デフォルトの名無しさん
2007/07/29(日) 23:46:500お前どしろうとだな
0985デフォルトの名無しさん
2007/07/30(月) 00:10:26>データを投げるダイアログのハンドルの取得方法
メインダイアログに問い合わせる
(全く他所からなら AfxGetMainWnd()->SendMessage()とかで )
>その上に貼っているリストボックスのハンドルの取得方法
リストボックス貼っているダイアログに、これまたSendMessageで問い合わせる
0986デフォルトの名無しさん
2007/07/30(月) 05:49:47OnNewDocument()でメッセージを表示したいのですが、コンパイル時に定義がない旨の
エラーが出てます。何が悪いのでしょうか。
該当部分は、こんなコードです。
CHogeDoc::OnNewDocument(){
if (中略
AfxMessageBox("ここでファイルを読み込みます"); //定義がどうこう言われてエラーが出る。
return TRUE;
}
表示されるエラーです。
hogedoc.cpp(42): error C2665: 'AfxMessageBox' : 2 オーバーロードのどれも、すべての引数の型を変換できませんでした
afxwin.h(5031): 'int AfxMessageBox(LPCTSTR,UINT,UINT)' の可能性があります。
afxwin.h(5033):または 'int AfxMessageBox(UINT,UINT,UINT)'
ちなみに、AfxMessageBox("ここでファイルを読み込みます",MB_OK)もダメでした。
0987デフォルトの名無しさん
2007/07/30(月) 08:20:040988デフォルトの名無しさん
2007/07/30(月) 08:31:42普通はCDialogとCListBox 使うと思う
0989デフォルトの名無しさん
2007/07/30(月) 20:49:330990デフォルトの名無しさん
2007/07/31(火) 01:38:15VC2005、WinXPProを使用しています。
BITMAP stBitmap;
::ZeroMemory(&stBitmap, sizeof(stBitmap));
stBitmap.bmBits = pBuf; //ビットマップデータ(これはあってることを確認してます。)
stBitmap.bmBitsPixel = 24;
stBitmap.bmPlanes = 24;
stBitmap.bmWidth = nWidth;
stBitmap.bmHeight = nHeight;
CBitmap* pBitmap = new CBitmap();
VERIFY(pBitmap->CreateBitmapIndirect(&stBitmap));
return pBitmap;
ってな感じの関数を作って動かしているのですが、VERIFYのところで、とまってしまいます。
つまり、CreateBitmapIndirectが失敗しているらしいのです。
どうして、失敗しているのか確認する手段はないでしょうか?
よろしくお願いします。
0991986
2007/07/31(火) 06:09:360992デフォルトの名無しさん
2007/07/31(火) 06:19:23>http://www.umekkii.jp/data/computer/file_format/bitmap.cgi
プレーン数とかなんで24にしてるの?常に1だよ
あんまり関係ないかもしれんがw
0993デフォルトの名無しさん
2007/07/31(火) 10:24:28麻雀格闘倶楽部のスレじゃないの?
0994デフォルトの名無しさん
2007/07/31(火) 10:31:2916色の時はbppが1でplaneが4のやつがあったなあ・・・
0995デフォルトの名無しさん
2007/07/31(火) 12:22:04なんでも入るしマウスでサイズ変更も自在うひょ
.・・・やっぱ.NETのが楽だな、重いけど(゚д゚)
0996デフォルトの名無しさん
2007/07/31(火) 21:36:36仕様的にプレーン数なんて概念ビットマップってサポートしてんの?
plane = 1
RGBRGBRGBRGBRGB
RGBRGBRGBRGBRGB
RGBRGBRGBRGBRGB
plane = 3
RRRRRRRRRRRRRRR
GGGGGGGGGGGGGGG
BBBBBBBBBBBBBBB
って奴でしょ?
0997デフォルトの名無しさん
2007/07/31(火) 23:37:51どういう面で.NETが楽なの?
.NETは基本的な勉強程度で、仕事では使ったこと無いけど
今の段階ではC++/CLIで作るより、使い慣れたMFCのほうが圧倒的に開発効率は良い気がする。
.NETに慣れると違うのかな...
0998デフォルトの名無しさん
2007/08/01(水) 00:59:31BITMAPならある。
0999デフォルトの名無しさん
2007/08/01(水) 05:34:22え?BITMAPINFOHEADERとかでサポートされてるってこと?
1000デフォルトの名無しさん
2007/08/01(水) 05:35:03それってフォトショぐらいでは読めるの?
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。