■MFC相談室 mfc17d.dll■
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/11/21(火) 10:38:31前スレ
■MFC相談室 mfc16d.dll■
http://pc8.2ch.net/test/read.cgi/tech/1146117893/
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()で取得できました。
ありがとうございます。
■ このスレッドは過去ログ倉庫に格納されています