■MFC相談室 mfc17d.d ..
261:デフォルトの名無しさん
06/12/30 15:57:27
メニュー項目を選択すると CSliderCtrl を WS_POPUP で作って表示させる処理を
ダイアログに追加していたんですが、ダイアログを終了する時にビープが一発鳴る
ようになってしまいました。
どこで鳴ってるのかデバッガで追ってみたところ、InitInstance の最終行、return FALSE;
で出て行ったあとのようです。この先も追いたいんですが、F11ではこれ以上追えません
でした。どういう風にデバッグすればいいでしょうか?
262:デフォルトの名無しさん
06/12/30 16:50:16
ダイアログを終了する時にInitInstanceなのか?
263:デフォルトの名無しさん
06/12/30 17:21:32
ダイアログベースのMFCアプリケーションなので、ダイアログの終了=アプリ
の終了という構図です。Wizardが作ったコードそのままですけど、下記のような
雰囲気です。
BOOL MyDialogApp::InitInstance()
{
いろいろ初期化
CMyDialogDlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
if (nResponse == IDOK)
;
else if (nResponse == IDCANCEL)
;
return FALSE;
}
264:デフォルトの名無しさん
07/01/01 19:01:01
>>260
ヒント:
void CMainFrame::RecalcLayout(BOOL bNotify)
CWnd::RepositionBars()
265:デフォルトの名無しさん
07/01/03 11:56:09
先月からMFCを勉強し始めた者です。
以下のようにCFileDialogを使用して、ファイルの読み込み処理をつくりました。
これを、ビューの領域に表示するにはどうすればいいのでしょうか?
「void CFOpenView::OnDraw(CDC* pDC)」に処理を書けばいいと思うのですが、全然わかりません。
どなたか、教えてください。
void CFOpenDoc::OnFileRead()
{
CFileDialog CFDlg(TRUE, _T("txt"), NULL, OFN_HIDEREADONLY, _T("TEXTファイル(*.txt)|*.txt|すべてのファイル(*.*)|*.*||"));
CString String, FilePath;
CStdioFile StdFile;
if( CFDlg.DoModal() == IDOK){
FilePath = CFDlg.GetPathName();
if(StdFile.Open(FilePath,CFile::modeRead)){
StdFile.ReadString(String);
StdFile.Close();
} else {
AfxMessageBox(_T("ファイルが開けない"));
}
}
}
266:デフォルトの名無しさん
07/01/03 12:09:43
Hello, Worldと同じ
文字列を表示するだけ
267:265
07/01/03 12:39:21
>>266
レスありがとうございます。
試してみます。
268:デフォルトの名無しさん
07/01/03 17:20:42
ダイアログベースのプログラムを作成しています。
フォームにボタンを配置して、そのボタンのCaptionを動的に変更したいのですが、方法が分かりません。
CButtonクラスメンバの中にもそれっぽい関数が見付からず途方に暮れてます。
方法があれば教えてください。お願いします。
269:デフォルトの名無しさん
07/01/03 18:40:16
CButtonの基底クラスのメンバ関数
270:268
07/01/03 19:06:07
>>269
ありがとうございます。
普通にSetWindowTextで変更できたのですね。
助かりました。
271:デフォルトの名無しさん
07/01/03 20:22:26
VC++2005上でVBMP3.dllというライブラリを使用し、MP3を再生するプログラムを作成しています。
MP3ファイルをオープンするために呼び出す関数 vbmp3_openはヘッダ中に以下のように宣言されています。
BOOL APIENTRY vbmp3_open(const char* pszName, InputInfo* pInfo);
で、プログラム中で
vbmp3_open(FileName, &pInfo); // FileNameはCString型
としたところ、Debugでのコンパイルは成功するのですがReleaseのコンパイルが以下のエラーとともに失敗します。
error C2664: 'vbmp3_open' : 1 番目の引数を 'CString' から 'const char *' に変換できません。
この変換を実行可能なユーザー定義変換演算子がないか、または演算子を呼び出せません。
といった状態です。解決方法はありませんでしょうか。
272:デフォルトの名無しさん
07/01/03 21:16:14
Unicodeネタいい加減飽きた('A`)
273:デフォルトの名無しさん
07/01/04 09:35:43
簡単な質問だと答えがすぐに返ってくるねぇ
MDIタブの実装方法は難しくてここの住人に答えるのは無理ってことかぁ
274:デフォルトの名無しさん
07/01/04 09:55:03
MFCにMDIタブがあればすぐ教えてやるけど
ないものは教えられない
275:デフォルトの名無しさん
07/01/04 10:05:09
用意された機能は使えるけど
自分でMFCを拡張してタブを実装する技術はないってことだな>274
276:デフォルトの名無しさん
07/01/04 10:05:35
MFCの設計に含まれていない以上、
Office2007のリボンの実装方法聞いてるのと同じようなものだからなあ。
頑張れば出来るんじゃね?としか言いようが無い。
277:デフォルトの名無しさん
07/01/04 10:07:56
275は仲間を見つけて喜んでいるようだ
278:デフォルトの名無しさん
07/01/04 13:46:54
MFCにMDIタブを実装した経験のある おいらが来ましたよ
んで何が聞きたいんだ?
279:デフォルトの名無しさん
07/01/04 21:35:19
奥さんが欲しいです
280:デフォルトの名無しさん
07/01/05 02:58:20
>>279
以下のように2行コメントにしてみて
for(int i=0; i<FEMALE_MAX; i++){
if(female[i].IsMarried()==TRUE)
continue;
if(female[i].GetAge()<16)
continue;
// if(female[i].CheckQuality()==FALSE)
// continue;
propose(female[i]);
}
281:デフォルトの名無しさん
07/01/05 13:58:48
先生!なぜかループが一回も回りません!
282:デフォルトの名無しさん
07/01/06 09:18:47
>>281
femaleが空なんじゃないか?
つーか、FEMALE_MAXが0なのか。
283:デフォルトの名無しさん
07/01/06 09:43:43
//if(female[i].GetAge()<16)
// continue;
こういう余計な制限もとっちゃおうぜ。
284:デフォルトの名無しさん
07/01/06 09:44:44
//if(female[i].IsMarried()==TRUE)
// continue;
よく考えたらこれだって別に大した制限じゃねぇな。
285:デフォルトの名無しさん
07/01/06 09:46:04
if(female[i].GetAge()>35)
continue;
さすがに遠慮したいから入れておこうな。
286:デフォルトの名無しさん
07/01/06 09:47:49
>>281
しょうがない、female -> maleに置き換えるんだ。
287:デフォルトの名無しさん
07/01/06 10:06:14
MFC使ってるやつ少ないのかと思ってたけど
くだらない話になると書き込みが増えるな
ROMってるやつ多いのか?
288:デフォルトの名無しさん
07/01/06 12:06:22
VisualC++ .net Standard使用
CImageのLoadFromResourceに関して質問です
BITMAPリソースは読み込むことができるのですが、jpgファイルをバイナリリソースとして格納した場合に、こいつを読み取ってくれません
LoadResourceを使ってtmpファイルでも書き込んでからCImage::Loadなんて馬鹿馬鹿しいですし
何とか簡単にリソースに埋め込んだバイナリデータのjpgを読み込ませる方法はないでしょうか?
ちなみに、こんな感じでやってます
CImage image;
image.LoadFromResource(GetModuleHandle(NULL),ResourceID);
289:デフォルトの名無しさん
07/01/06 12:20:49
あまりにもバグって気持ち悪くなってきた
290:デフォルトの名無しさん
07/01/06 13:06:39
VC6にはCImageないんだよな
291:デフォルトの名無しさん
07/01/06 13:19:40
DIB程度ならCreateDIBSectionをCBitmapにAttachとかで済むから、あまり困らなかったな。
>>288
::CreateStreamOnHGlobalとCImage::Load(IStream *)を使えば、ファイル無しでできる。
効率から言うと、バイナリリソースアクセス用のIStream実装を書いた方が良いけど('A`)マンドクセ
292:デフォルトの名無しさん
07/01/07 01:51:10
初期状態でドッキングされていないツールバー(フローティングツールバー?)の作り方を教えてください
普通のツールバー(ドッキングされているツールバー)はスケルトン作成(SDI or MDI)したソースを見れば
分かりそうな感じですが、それとスタイルが違うツールバーはどのように作れば良いですか?
グーグルで調べているのですが、思ったような情報に行き当たらず困っております
293:デフォルトの名無しさん
07/01/07 02:56:21
MDI野郎の文体だね
294:デフォルトの名無しさん
07/01/07 03:26:52
>>291
サンクス
CreateStreamOnHGlobalでいけました
というか、IPictureをかまさないとストリームにならないのでかましたわけですが
これを使うとCImageの意味がまったくをもってないですね(笑)
295:デフォルトの名無しさん
07/01/07 10:14:35
MFCのフローティングツールバーはMFCが自力でやってるから
具体的な方法はMFCのソース読めばわかるよ
確かバーの上に張り付いてるやつを別ウインドウ開いて丸ごと引っ越すだけだったと思う。
296:デフォルトの名無しさん
07/01/08 17:20:10
>>295
レスありがとうございます
ど素人(入社1年目)なので、それだけですとやり方が分かりません・・・
297:デフォルトの名無しさん
07/01/08 17:27:33
追加で質問をさせてください
ツールバー上のアイテム(ボタン?)をドラッグした時に
点線の四角形またはそのアイテムのアイコン(半透明)を
ドラッグ中のマウスポインタの横に表示させるにはどうすれば良いですか?
イメージとしては、VC++でダイアログリソース編集時にコントロールアイコンを
ツールバーからドラッグした時のような感じで
298:デフォルトの名無しさん
07/01/08 18:01:41
>>296
自力で調べて判らないようなら上司なり先輩なりに聞け。
それでも判らないようならあんたには不適当な要求仕様なのだからそう上司(なり指示した人間)に言え。
299:デフォルトの名無しさん
07/01/08 18:30:36
>>298
スレタイを2万5千回ぐらい嫁。
300:デフォルトの名無しさん
07/01/08 18:36:21
>>299
6時間も7時間もやってらんない。
301:デフォルトの名無しさん
07/01/08 18:47:17
>>299
相談室だから>>298のようなアドバイスもアリじゃないか
302:デフォルトの名無しさん
07/01/08 18:52:35
>>298は的確だと思ったな
あと2ちゃんで仕事をにおわせると答えてもらいにくくなるよ
タダで教えてその内容で相手は金を得るわけだし
303:デフォルトの名無しさん
07/01/08 18:52:59
>>301
要求仕様のさばき方相談室じゃないんだよー
304:デフォルトの名無しさん
07/01/08 19:37:22
会社だったら違う人に仕事まわすだけだろ
できない仕事をかかえこまないように
305:デフォルトの名無しさん
07/01/08 22:18:54
>>296でわからないっつーのはもうアレだ。
なんつーか色々と色んなことが困難だw
306:デフォルトの名無しさん
07/01/08 22:19:30
いや、>>295な。
307:デフォルトの名無しさん
07/01/08 23:27:04
>>292,296
質問の意味が2通りに取れるんだが
MFC標準のCToolBarをフローティング状態で表示したいってこと?
それとも独自にフローティングツールバーを実装したいってこと?
おそらく前者の意味で聞いてるんだと思うけど、
それならCFrameWnd::FloatControlBar()でフローティング状態にできるよ。
後者なら、MFCのソースを参考に自分で書けとしか言えません。
308:デフォルトの名無しさん
07/01/09 11:46:02
ダイアログバーにIDC_STATICのスタティックテキストを貼り付けると、
そのテキスト上でのマウスドラッグはバーのドラッグ処理になりますが、
これってどのような仕組みなのでしょうか。
ダイアログバー内に貼り付けた自作ウィンドウクラスにも
このような動作を組み込みたいんです。
OnNcHitTestでHTTRANSPARENTやHTCAPTIONを返してみても
まったく動かなかったり、コントロールだけが動いたり、
ダイアログバー内でダイアログ自身が動いてしまったりと、
仕組みがわからずに苦戦しています。
同じスタティックテクストでも
IDC_STATIC以外の名前を付けるとドラッグにならないようなので、
コントロールバークラスがIDC_STATICに対して
なにか特別なことでもやっているのでしょうか。
309:デフォルトの名無しさん
07/01/09 12:48:24
初心者はIDC_STATICではまる
310:デフォルトの名無しさん
07/01/09 12:51:33
初心者 IDC_STATIC の検索結果 約 211 件中 1 - 10 件目 (0.25 秒)
311:デフォルトの名無しさん
07/01/13 23:36:22
ドキュメントビューアーキテクチャという概念がよく分かりません
ドキュメント: プログラム内で共有するデータを扱う, メンバ変数がたくさんある, ファイル入出力
ビュー: ユーザとのインタフェースを扱う, 描画を取り仕切る, コントロール管理
の認識でOKですか?
312:デフォルトの名無しさん
07/01/13 23:58:14
いや
313:デフォルトの名無しさん
07/01/14 00:00:08
>>311
概ねOKじゃね?
どっちかっていうとその役割よりドキュメントとビューがセットで1つになってること(ドキュメントテンプレートってのなかった?)
新規作成でできるもんがドキュメント+ビューを型にしたインスタンスであることって方が重要のような気がするがわかっているならOK。
そうすると自然にMDIのアプリは
1.メインフレーム(メニューとかくっついてる)
2.(ドキュメント+ビュー)X新規作成で生成された数分
3.その他のツールウィンドウやダイアログ
で構成されることになる。
VCだと
・メインフレーム(メニューとかくっついてる)
・ソースコードエディターとかリソースエディター等など(新規作成からできる奴)
・ソリューションエクスプローラーとかアウトプットウィンドウとか・・・
にあたる。
強引に「こうやって作れよ!」っていう型なんで設計からしてこうやってなってないと駄目っちゃ駄目だなw
314:311
07/01/14 00:12:54
ありがとうございます
315:スイ
07/01/14 00:22:26 BE:311467872-2BP(0)
えっと、すいません、↓で討論?みたいなのをしているんですけど、
URLリンク(jbbs.livedoor.jp)
私は、真珠さんって少し変わった趣味を持った人だなー、とかは思いますけど、それだけで叩いたりするのってひどいと思いませんか?
私はあまりネットには詳しくないのでよくわからないんですが、なんかほなみんさんが2chとか言ってたので調べてみると見つかったので書き込んでみました。
このままだと真珠さんがかわいそうなんで、誰か真珠さん側についてほなみんさんを叩き返してくれませんか?私じゃ勝てそうにないので。
316:デフォルトの名無しさん
07/01/14 00:46:00
↓ハイ、次の方どうぞ。
317:デフォルトの名無しさん
07/01/14 01:44:25
えっと、これ本番ですか?
318:デフォルトの名無しさん
07/01/14 06:58:08
>>313
なんで初心者に向かって何の前置きも無しに、あまりお目にかからないMDIのさらにレアな
複数のドキュメントタイプを持つアプリの解説を始めるのか、理解に苦しむよ。
VS2005でMFCアプリのデフォルトプロジェクトがMDIになったのは大失敗な気がする。
>>311
URLリンク(msdn2.microsoft.com)(VS.80).aspx
この解説が分かりやすいよ。
319:デフォルトの名無しさん
07/01/14 08:06:10
>>318
ええ!?
>>313のどこをどう読めばが複数ドキュメントの解説がメインになってるの?
とんだ濡れ衣だ!勘違いなら謝ってよ!
320:デフォルトの名無しさん
07/01/14 08:06:57
X複数ドキュメント
○複数ドキュメントタイプ
321:デフォルトの名無しさん
07/01/14 09:00:21
>新規作成でできるもんがドキュメント+ビューを型にしたインスタンスであることって方が
>重要のような気がするがわかっているならOK。
SDIでは100%成り立たないし、単一のドキュメントタイプをもつMDIなら自明で重要性は感じられない。
これが重要な意味を持つのは複数のドキュメントタイプをもつMDIしかないように思った。
確信犯だと思ったんだが、気に障ったのなら謝るよ。漏れの知らない世界があるんだろうね。
322:デフォルトの名無しさん
07/01/14 10:00:53
>>321
え?じゃあ、君の勝手な妄想で俺につっかかってきたの?
それとあきらかにその文章で複数ドキュメントタイプの説明なんて書いてないのにその態度はなんなの。
しかも、確信犯の使い方も間違ってるし。
こんなの業務でやったら大変だぜ。改めろよ。
323:デフォルトの名無しさん
07/01/14 10:23:18
いや、改めなくていいから一切社会活動を行なわないでください。
324:デフォルトの名無しさん
07/01/14 10:27:37
>VS2005でMFCアプリのデフォルトプロジェクトがMDIになったのは大失敗な気がする。
これ昔からだろ、2005ではじめて触ったのか
325:デフォルトの名無しさん
07/01/14 11:07:34
SDI MDI
MFC以前からある
ドキュメント/ビュー
MFC2.0で追加された
326:デフォルトの名無しさん
07/01/14 12:59:31
CFrameWndの派生クラスをドキュメントテンプレートから閉じるにはどうしたらいいでしょうか。
つまり class CHogeDocTemplate : public C[Single/Multi]DocTemplate
の OpenDocumentFile で特定のフレームを閉じる様にしたいのですが、
閉じる時に CFrameWnd::DestroyWindow や OnCloseDocument を使うと
OnClose が呼びだされないがこれで大丈夫なのか、
だめだとしたら正しい閉じ方はどうなのかを教えていただきたいのです。
よろしくお願いします。
327:デフォルトの名無しさん
07/01/14 13:14:37
普通に閉じればいいじゃん
328:デフォルトの名無しさん
07/01/14 13:34:04
CFrameWnd::OnCloseからDestroyWindow呼んでるから
OnClose が呼びだされないのは当たり前
329:デフォルトの名無しさん
07/01/14 13:39:10
>>327
普通にとはどのようにでしょうか?
>>328
その通りです。OnClose から閉じる方がドキュメントを閉じる等の処理も
正しく行われるように読めたので出来ればそうしたく質問しております。
330:デフォルトの名無しさん
07/01/14 13:47:01
OnCloseからOnCloseDocument呼んでるから
OnCloseDocumentからOnClose が呼びだされないのは当たり前
331:デフォルトの名無しさん
07/01/15 21:50:20
OnCloseはウィンドウを閉じる時
OnDocumentCloseはドキュメントを閉じる時
と考えれば何も問題ないべ
332:デフォルトの名無しさん
07/01/16 04:24:49
CPUやメモリをあまり気にせずにプログラム書いてたら
起動しただけでCPU使用率50%という異常な状態になっていました。
このプログラム自体、起動と同時に行う処理はほとんどなく、
SDIのスケルトンと同じようなもののはずなんですが。。
処理がないのにCPU使用率が高いまま下がらないのは
原因としてどのようなことが考えられますか?
もしくは原因を調べる方法とかってありますか?
333:win32apiスレ17
07/01/16 04:36:15
スレリンク(tech板:17番)
に最初書き込みましたが、こちらのが適切かなと思って移動してきました。
Acrobatのページサムネール表示、あるいはPowerPointのスライド一覧表示のように、
イメージのリストを表示し、かつ、その順番をマウスのドラッグで調整したいと思ってます。
ドラッグ中、イメージが挿入される場所にカーソルの様な縦線が出てきて欲しいなと思ってます。
こういうコントロールの既存の実装やコードのサンプルなど御存知でしたら御教示頂けないでしょうか?
codeguru、codeprojectは廻ってみたものの、どうにもサムネールの表示どまりでして・・・
334:デフォルトの名無しさん
07/01/16 05:27:51
>>332
情報少なすぎでどうespしろと?
335:デフォルトの名無しさん
07/01/16 05:36:21
>>333
自分でエディタとか作ったことない?
336:デフォルトの名無しさん
07/01/16 08:03:52
>>332
プロファイルで
337:デフォルトの名無しさん
07/01/16 09:03:52
ある場所から突然malloc(255)がNULLになります。直前のmallocは必ず成功で、場所は一定
HEAP、スタックを2000000(2M)や20000000(20M)で試しましたが、タイミングや場所は変わらないようです
お手上げです。解決策をお知りの方おりませんか?
338:デフォルトの名無しさん
07/01/16 09:15:52
直前のmallocまでのすべての戻り値をここにさらしてごらん
339:デフォルトの名無しさん
07/01/16 09:42:17
直前のmallocの戻り値でいいですか?
malloc(255);//必ず成功。 戻り値:0x00b72e68
WideCharToMultiByte
MultiByteToWideChar
malloc(255);//必ず失敗
こんな感じです
340:デフォルトの名無しさん
07/01/16 09:59:04
ヒープ壊してんじゃねえの
341:デフォルトの名無しさん
07/01/16 10:05:25
解決しました!
MultiByteToWideCharを2度使いmallocのサイズを指定していたのですが、wchar単位でNULLが含まれていないため少なくなっていました
成功するほうをmalloc((len+1)*sizeof(wchar_t));で動きました。
ありがとうございました。
342:デフォルトの名無しさん
07/01/16 12:49:33
CStringWじゃ駄目なのか?
343:デフォルトの名無しさん
07/01/16 17:35:59
>>332です。
>>336
ありがとうございます。
プロファイルで調べたところOnIdle()のreturnが原因だったようです。
そのreturnのことで質問なのですが、
OnIdle内でのレンダリングによってCGアニメーションを表示するプログラムを書いているのですが、
return TRUE;だと前述のようにCPU使用率が高くなるのですが、
アニメーションは正常に表示されます。
return CWinApp::OnIdle(lCount);だとCPU使用率の問題は解消されるのですが
OnIdle()が呼ばれる間隔が長くなるためか、アニメーションが滑らかに表示できません。
この2つを同時にクリアできる良い方法はありませんか?
よろしくお願いします。
344:デフォルトの名無しさん
07/01/16 19:02:17
んー、、、目的の fps が取れてるなら Sleep(0)を呼ぶとかどうだろう、Sleep(1)でもいいが
345:デフォルトの名無しさん
07/01/16 19:27:01
ほっといてやれ
346:デフォルトの名無しさん
07/01/16 21:57:57
>>344
ありがとうございます!!
どうやらすごく基本的なことのようですね。。
347:デフォルトの名無しさん
07/01/18 21:52:58
マルチラインエディットボックスで
水平方向のスクロールバーの位置から
列の何文字目から表示している知りたいのですが
どうすればいいのでしょうか?
やりたいことはエディットボックスの中身を編集して
かきかえても書き換える前と同じ位置を表示したいのです。
LineScrollを使用すれば垂直はうまくいくのですが、水平がうまくできません。
また、SetScrollPosを使用してもエディットボックス内が更新されないのでこまっています。
348:デフォルトの名無しさん
07/01/18 23:52:25
>>347
「書き換えても書き換える前と同じ位置」というのもよくわからないんだけど、
わざわざスクロールバーを使っているのはなぜ?
単純にGetSelでカーソル位置を取得しておいてSetSelで戻すだけじゃダメ?
あと、エディットボックスの更新するにはUpdateData(FALSE)とUpdateWindow()
じゃない?
質問がよくわかってないのではずしてるかも知れんけど。
349:347
07/01/19 14:44:11
>>348 さん
レスありがとうございます。
自己解決しました
350:デフォルトの名無しさん
07/01/19 16:13:48
CWnd* CWnd::GetDlgItem(int nID); で得られるCWndのインスタンスの解放は
誰に責任があるんでしょうか?ソースコードを少し追ってみると、独自のアロケータ
でごにょごにょやってるような感じなんですが。
351:350
07/01/19 16:23:11
自己解決しました。こういう一時的に作ったオブジェクトはMFCが勝手に
CWinApp::OnIdle() → CWnd::DeleteTempMap() あたりで解放するんですね。
352:デフォルトの名無しさん
07/01/19 16:23:37
ソース追うのもいいけど、ヘルプもみよう
353:デフォルトの名無しさん
07/01/19 16:34:29
いや、だってヘルプには「返されるポインタは、一時的なポインタです。後で使用するために保存しておくことはできません。
」としか書いてないから、誰がどこでいつ解放するか気になるじゃん?
354:デフォルトの名無しさん
07/01/19 16:39:54
一時的なポインタを解放するのか?
355:デフォルトの名無しさん
07/01/19 17:09:59
そりゃ解放するでしょ。問題は誰がいつどこで開放するかであって、それに
よって「一時的なポインタ」とやらの有効範囲が決まってくるわけだから。
356:デフォルトの名無しさん
07/01/19 17:21:08
クラスがなんだかわかってないのでは?
357:デフォルトの名無しさん
07/01/19 18:22:15
あれ、FromHandle()あたりからDeleteTempMap()をたどって知ったんだったかな、、、
ヘルプだけで一時的なCWnd*がいつ消されるかも読んだ気がしたが・・・
358:デフォルトの名無しさん
07/01/19 18:27:04
>>357
それがヘルプに書いてあれば悩む必要がないのにね。
359:デフォルトの名無しさん
07/01/22 18:39:22
すいません。
自作でエクスプローラ風アプリケーションを作りたいのですが、
それ風なサンプルを説明しているサイトとか知りませんか?
全く、それ系のインターフェイス名も知らないんで、
ググれなく困っています。
360:デフォルトの名無しさん
07/01/22 19:00:58
せっかく教えても無駄になりそうだからやめておこう
361:デフォルトの名無しさん
07/01/22 20:54:50
>>359
えー!!
そんな殺生なぁ
362:361
07/01/22 20:56:48
>>360
おねがいっす!!
363:デフォルトの名無しさん
07/01/23 11:03:34
質問なんですけど
AppクラスからDocumentクラスのポインタの取得方法を教えてください
よろしくお願いします。
364:デフォルトの名無しさん
07/01/23 11:12:52
自分で持ってそうな気がするけど
365:デフォルトの名無しさん
07/01/23 11:13:20
Viewが一つだけなら
GetFirstDocTemplatePosition()、GetNextDocTemplate()、GetFirstDocPosition()、GetNextDoc()
あたりで。
366:363
07/01/23 11:19:24
>365
GetFirstDocPosition()、GetNextDoc()で取得できました。
ありがとうございます。
367:デフォルトの名無しさん
07/01/25 16:20:26
スライダについて質問です
slider.SetRange(0, 100, true);
slider.SetTicFreq(10);
slider.SetPos(0);
このようなスライダを作り、スライダで設定した値をEditBoxに表示しています。
このとき、スライダのつまみをドラッグした場合には正しい値が得られますが
クリックで設定しようとした場合が上手くいきません
例えば、70を設定しようと思って該当する目盛りのあたりをクリックすると、
70の位置には来ず、マウスボタンが押されるたびに60と80で切り替ってしまいます。
クリックでも値を設定できるようにするには、何か特殊な処理が必要なのでしょうか?
368:デフォルトの名無しさん
07/01/25 18:32:40
スライダの現在位置が0の時に70の位置をクリックしたら
0+GetPageSize()で得られる位置に移動するのがスライダ
コントロールの仕様だと思うんですが。
仕様が気に入らないのであれば、自分で必要なイベントを拾ってSetPos()すれば良い。
369:デフォルトの名無しさん
07/01/26 01:06:48
CEdit::SetFoces()に関する質問です。
任意のテキストフィールドをフォーカスさせたい場合は
CEdit::SetFocus()を行うと実現できますが、
このとき、フォーカス対象のテキストフィールドに文字列が
入力されているとき、文字列全体を範囲選択した状態で
フォーカス移動させるにはどのような手法があるでしょうか?
イメージとしてはタブでフォーカス移動させたときのような感じです。
よろしくお願い致します。
370:369
07/01/26 01:14:49
ごめんなさい。自己解決しました。
CEdit::SetFocus();
CEdit::SetSel(0,-1);
で実現できるようでした。
371:デフォルトの名無しさん
07/01/27 01:54:56
ダイヤログベースのアプリです。
英語化について教えてほしいです。
タイトルアイコンをクリックした時のシステムメニューや、
AfxMessageBoxを表示させたときのキャンセルの表示など
あらかじめ用意されている部分に日本語が表示されますが、
すべて、一切がっさいを英語にしたいと考えています。
どのような方法で英語かすることができるでしょうか?
372:デフォルトの名無しさん
07/01/27 02:56:08
>371
アプリケーションを実行するとき、デフォルトのコードページを英語に変更する。
でも、システムのバグをたたくこともあるからお勧めしない。
373:デフォルトの名無しさん
07/01/27 06:21:45
英語環境でビルドしてあるやつでもそうなるから
OSの問題だろ
374:デフォルトの名無しさん
07/01/27 13:08:41
だから実行時指定
375:デフォルトの名無しさん
07/01/27 15:15:32
>>371
日本語関連を全くインストールしていない、設定も悉く日本にしていない端末で、実行する。
376:デフォルトの名無しさん
07/01/27 15:21:43
MFCは全くの初心者なのですが、MFCにもバージョンはあると思うのですが
Visuall C++(VC6)に付属のMFCのバージョンはいくらになりますか?
377:デフォルトの名無しさん
07/01/27 15:31:00
6.0
378:デフォルトの名無しさん
07/01/27 17:48:04
WikipediaのMFCの項目、批判の所見てワロタ。
どこの知障だよ、書いたの。
379:デフォルトの名無しさん
07/01/27 18:41:44
>378
DelphiやJavaはライブラリらしい。しかも、C++はコンパイル時間が長いらしい。
380:372
07/01/27 19:01:12
>371
あと、afxMessageBoxにはユーザ拡張用の前呼び出し処理があるから、
それを横取りして自作のメッセージボックスを表示する。
とかかな。
381:デフォルトの名無しさん
07/01/27 19:01:26
コンパイル時間は長いとは思うけど、他のオブジェクト指向言語と
比べてどうなのかはわからんな。
ただ、「C++だから」ってより「色々インクルードするから」長いんだけど。
382:デフォルトの名無しさん
07/01/27 19:06:08
実行時コンパイルの方が好感もたれるのか
383:デフォルトの名無しさん
07/01/27 19:52:07
すみませんMFCど素人です
ANSIの
unsigned char foo[64]
MFCではどの様に書いたらいいのでしょうか?
コンパイラはVC6です
384:デフォルトの名無しさん
07/01/27 20:20:34
unsigned char foo[64]
385:デフォルトの名無しさん
07/01/27 20:47:58
ガベコレがないのが致命的欠点であるかどうかは検証不可能だから
これはもちろんWikipediaに書いてはいけない。
Delphiの方にもしょうもない書き込みしてるが、
群を抜いているのなら特定のソフトウェアをあげつらう必要はなかろうに。
「中立的な観点」を欠いてしまっているのが分らないのかね。
386:デフォルトの名無しさん
07/01/27 23:24:57
何で C# って使われてないの?
VC++ ネイティブのより多少計算とか遅いかもしれないけどさ、
開発が VB 並にめっちゃ楽だし、
文法は Java そっくりで習得も移行も容易だし、
全体的にスマートな印象を受けるじゃん
いい加減 VC++ 信仰は止めて欲しいんだよね
一々 Windows と UNIX(Linux) 版を作りたくねーんだよ
もうさ、時代は中間言語の時代だと思うね
頼むから、ネイティブ信仰は止めようぜ
な
387:デフォルトの名無しさん
07/01/27 23:34:26
>>386
TPOで使い分けるでFAだろ。
まあその手の議論は実りがないから他でやったほうがいいな。
388:デフォルトの名無しさん
07/01/28 08:18:59
InitDialog中で、必要なファイルがあるかのチェックをして
なければSendMessage(WM_CLOSE);として終了するようにしているのですが
一瞬Windowが表示されてしまいます。。。
Windowを表示させずにそのまま終了する方法はないでしょうか?
389:デフォルトの名無しさん
07/01/28 08:37:30
ダイアログ出す前に調べる
390:デフォルトの名無しさん
07/01/28 10:07:30
>>388
モーダルならEndDialog、モードレスならDestroyWindow。
391:デフォルトの名無しさん
07/01/28 11:06:29
ほほぉ、それからそれから?
392:デフォルトの名無しさん
07/01/28 12:29:47
VC8のMFCではダイアログボックスに貼り付けるボタンやテキストボックスのサイズや
表示位置をそれぞれのプロパティから数値で詳細に設定できるのですが、VC6のMFCでは
そのようなプロパティに項目が見当たりません、VC6で皆さんは位置決めやサイズを
何処で設定されているのでしょうか?
393:デフォルトの名無しさん
07/01/28 13:03:17
テキストエディタ
394:デフォルトの名無しさん
07/01/28 13:16:13
>>389、390
ありがとうございました!
395:デフォルトの名無しさん
07/01/28 16:34:24
ダイアログベースのアプリです。
ウインドウサイズをマウスで自由に変更できるようにするには
どのような設定、または処理を作れば良いでしょうか?
SDI/MDIベースでないとできないですか?
396:デフォルトの名無しさん
07/01/28 16:48:03
いいえ。
397:デフォルトの名無しさん
07/01/28 17:04:26
サイズ可変のスタイル付ければダイアログ自体のサイズは変えられるようになるが
中のコントロールもそれにあわせて調整したければ、自分で書くしかない。
398:デフォルトの名無しさん
07/01/28 17:17:53
>>397さん
お返事ありがとうございます。
サイズ可変のスタイルのつけ方は、具体的なコードイメージを教えていただけないでしょうか。
ダイアログ内部に設置したCEditのコントロールもあわせて変更するように実装します。
399:396
07/01/28 17:44:13
スルーされたから要点だけ突っ込み。
>サイズ可変のスタイルのつけ方は、具体的なコードイメージを教えていただけないでしょうか。
MSDN嫁。リソースで定義したダイアログならリソースエディタのプロパティの該当項目をチェックするだけ。
>ダイアログ内部に設置したCEditのコントロールもあわせて変更するように実装します。
サイズ変更のメッセージハンドラを書く必要がある(勿論そこでCEditのサイズを調整する)ので、
初心者向けの解説サイトでも探して解説を読め。
400:デフォルトの名無しさん
07/01/28 18:57:22
すいません。でも方法教えていただきありがとうございました。
これからはMSDNみてから質問します。
CEditのほうもありがとうございました。
401:デフォルトの名無しさん
07/01/28 21:19:27
>>392ですが、どうしたらいい?
402:デフォルトの名無しさん
07/01/28 21:38:35
>>401
VC6の場合画面の右下のステータスバーに座標とサイズが表示されてるから
それを見ながら、マウスかキーボードで配置する。
[↑↓←→]で位置の変更、[Shift]+[↑↓←→]でサイズ変更。
もしくはリソーススクリプトを直接編集する。
403:デフォルトの名無しさん
07/01/29 05:11:45
ダイアログ上にコントロールを大量に貼り付けて等間隔に位置を合わせるtips。
1.テキストエディタで.rcファイルを開く。
2.DIALOG内のCONTROL行をcsvファイルとして保存する。
3.以下省略。
404:デフォルトの名無しさん
07/01/29 05:36:57
すごい大量のとき役立ちそうだなw
405:デフォルトの名無しさん
07/01/29 06:20:10
ダイアログエディタに位置そろえる機能ついてるけど
406:デフォルトの名無しさん
07/01/29 15:36:03
>>403の3.の部分はストリングテーブルを書くときに便利だな。
defineと日本語/英語の文字列が一気に書ける。同時に仕様書も作れて一挙両得。
defineの数値はドラッグすれば1づつ増やせるからバグもでない。
407:デフォルトの名無しさん
07/01/30 23:29:19
フレームウィンドウとかの OnDestroy について質問です
通常 OnDestroy の中では親クラスの OnDestroy を呼んでいますが、
その親の OnDestroy の直前の部分でメモリ開放処理を行うのは良くないですか?
リストに登録されているアイテムを開放したいのですが・・・
408:デフォルトの名無しさん
07/01/30 23:50:16
>>407
良くないと思う理由は?
リストってリストボックスやリストビューコントロールのこと?
409:デフォルトの名無しさん
07/01/31 00:00:58
>>408
CListCtrl のことです
これに new で生成したオブジェクトを登録?しています
そのまま終了するとメモリリークが発生してしまうので、
ウィンドウが破棄される直前に開放しようと思いました
それで OnDestroy に追加することにしました
良くないと思った理由は、親クラスの OnDestroy を
呼んでいるところの下にデフォルトで「ここに追加」
的なコメントが入っているからです
410:デフォルトの名無しさん
07/01/31 00:10:13
CListCtrlが消えるのいつなん?
プログラムが生成→消滅→生成→消滅→・・・ってやってるか
生成→表示→非表示→表示→非表示→・・・消滅ってやってるかでタイミング違ってくるじゃん。
生成したインスタンスを消したいタイミングはいつよ?
最終的に(それがいつだかはアプリにもよるが)インスタンスを確実に消滅さしときゃ問題ねーんだしよ。
411:デフォルトの名無しさん
07/01/31 00:29:46
リストは起動時から終了時までずっと表示です
終了時に一覧情報を保存して破棄することにしています
できるだけ綺麗な(オブジェクト指向的な)ソースコードを
書きたいので、親の OnDestroy の前が正解か後ろが正解か
が気になります
412:デフォルトの名無しさん
07/01/31 00:49:58
>>411
WM_DESTROYを処理してる間は、子ウィンドウは存在している。
URLリンク(msdn2.microsoft.com)
リストビューアイテムに設定しているデータを削除するのは、LVN_DELETEITEM, LVN_DELETEALLITEMSでやるといい。
413:デフォルトの名無しさん
07/01/31 00:51:06
>>412
ありがとうございます!
やってみます!
414:デフォルトの名無しさん
07/01/31 00:52:14
>>411
だったらOnDestroyは関係ないんじゃない?
つか、親のOnDestroy後にCListCtrlにアクセスされたら(するのか?)死ぬじゃない。
親のデストラクタでdeleteしとけばいいんじゃね?やってみ、やってみ。やってみたら結果報告ヨロ
415:デフォルトの名無しさん
07/01/31 00:53:07
CMainFrame::OnDestroy()の前後どっちか2択と言われたら後に1票。
個人的には、Documentで扱っているデータなら
CHogeDocument::OnCloseDocument() or OnSaveDocument()
ViewのみでやってるならCHogeView::PostNcDestroy()でやると思う。
CMainFrameにCListCtrlのデータ持たせるとViewからデータへの
アクセスが面倒じゃない?
416:デフォルトの名無しさん
07/01/31 01:08:09
>>414-415
ありがとうございます!
いろいろと試してみます!
417:デフォルトの名無しさん
07/01/31 08:40:38
親ウインドウと関係あるのはopenからcloseまで
closeしたらウインドウ関係ないから心配いらん
>綺麗な(オブジェクト指向的な)ソースコード
普通はデストラクタで解放
418:デフォルトの名無しさん
07/02/01 00:21:49
CListCtrl コントロールのイベント処理ですが
クリック時とダブルクリック時とで処理を分けたいと思っています
しかし、ダブルクリック時には先に必ずクリックイベントが
発生してしまってうまくいきません
NM_DBLCLK の直前に NM_CLICK が発生するのを
防ぐことはできませんか?
419:デフォルトの名無しさん
07/02/01 00:53:14
仮にNM_CLICKが発生しないようにしたらシングルクリック時の処理が出来ない。
コントロールの身になって考えれば、ユーザーのクリックがシングルなのかダブルの1発目
なのかの判断はできない。
シングルクリック時の処理開始をしばらく待ってみる以外手はないと思う。
420:デフォルトの名無しさん
07/02/01 01:11:47
>>419
レスありがとうございます
つまり、NM_DBLCLK 前には NM_CLICK が
絶対に発生してしまうということですね
何か良い手はないですかね・・・
421:デフォルトの名無しさん
07/02/01 01:20:02
だからシングルクリックのイベント後、しばらく待ってみてダブルクリックが来ないようなら
シングルの処理。来たらダブルの処理するだけ。
VBのサンプルではタイマー使ってるみたい。
URLリンク(support.microsoft.com)
422:デフォルトの名無しさん
07/02/01 09:45:30
本来はダブルクリックってーのは、シングルクリック→メニュー等選択
のショートカットだから、シングルクリックのあとにダブルクリックがきても
何も困らないんだけどな。
ダブルクリックを変なことに使おうとするからこうなる
423:デフォルトの名無しさん
07/02/03 19:33:32
これからMFCの勉強を始めたいのですが
書籍の「標準講座MFC」って今でも役に立つでしょうか?
MFC6.0ってちょっと古いみたいですが、最新のバージョン(MFC8.0?)と
大きく違うところってあるのでしょうか
424:デフォルトの名無しさん
07/02/03 20:20:00
仕事でどうしても必要なのか?
でなければ止めとけ。
425:デフォルトの名無しさん
07/02/03 20:42:57
>>423
新しいUI関連のクラスがいくつか無いだけで、基本はそんなに変わってないと思うけど。
426:デフォルトの名無しさん
07/02/03 21:18:50
URLリンク(www.shoeisha.com)
ソースは公開されてる
427:デフォルトの名無しさん
07/02/03 21:57:59
お前ら教えてください。
ツールバーのボタンに文字列のみ表示したいのですが、
TBBUTTON::iBitmapにNULLを指定しただけでは
イメージ(アイコン?)のスペースの分のスペースが空き、
そこから先から文字列が描画されてしまいます。
どうすればいんでしょうか?
428:デフォルトの名無しさん
07/02/03 22:40:06
CToolBarでできそうな気がするけど
429:427
07/02/03 22:47:49
>>428
なるほど!
CToolBar::SetSizes()の中にやり方が書いてありました。
助かったよ!ありがとう!
430:デフォルトの名無しさん
07/02/04 09:09:06
今、Visual C++ 6.0 を使ってるのだが、開発環境をバージョンアップしようとしたら
どれを導入すればいいのだろう?
無料で配布されている Visual C++ 2005 Express は MFC は入ってないんですよね?
それとも、あと少し待って次のバージョンが出たときのほうがいいんでしょうかね。
431:デフォルトの名無しさん
07/02/04 09:26:03
>>430
そりゃおめ、vista上で動くモン買えや。
いま、XPでなにやら揃えるのは無駄でしょ?
432:デフォルトの名無しさん
07/02/04 11:30:15
IEのメニューの用に画面に収まりきらないメニューがある場合は
「>>」を表示し、「>>」を押せば残りのメニューが表示されるようにしたいのですが、
そういったコントロールがあるのでしょうか?
どなたかヒントだけでもわかる方おられましたら教えてやって下さい。
433:デフォルトの名無しさん
07/02/04 11:39:00
軍人や警官の袖に付いている山形の袖章のことをいうのだそうです(多分)。
434:デフォルトの名無しさん
07/02/04 12:05:06
USECHEVRONあたりで探せば?
435:432
07/02/04 12:31:54
>>434
「>>」はChevronって言うんですか用語自体知りませんでした。
Chevronでぐぐればすぐにでてきました。
教えていただかなければ数日ははまるとこでした、
ありがとうございます。
436:デフォルトの名無しさん
07/02/04 14:14:26
フランス車に詳しければ直ぐに判るんだがな。
437:デフォルトの名無しさん
07/02/04 22:58:24
CFont::CreateFontとかCFont::CreateFontIndirectって
CFont オブジェクトを使い終わったら、最初にデバイス コンテキストからフォントを選択して、それから、CFont オブジェクトを削除します。
ってあるけどデストラクタで解放してくれないの?
解放しないままアプリ終了したらリソースリークするのかな?
438:デフォルトの名無しさん
07/02/04 23:01:29
CClientDC::SelectObject
よばなきゃ問題ないのか???
よくわからん
439:デフォルトの名無しさん
07/02/04 23:06:49
エディットボックス内のフォントを変更すのみで
DCで直接使用しない場合は問題ないのか???
MSさんさっぱりわかりませんorz
440:デフォルトの名無しさん
07/02/04 23:19:29
SetFontで
441:デフォルトの名無しさん
07/02/05 00:11:26
>>437
デバイスコンテキストに選択されたままだと解放されないと思った。
442:デフォルトの名無しさん
07/02/05 17:27:27
CHtmlViewについてお聞きしたいのですが
URLリンク(www.microsoft.com)
ここを参考にしてタブではないブラウザを作成したのですがこの通りに記述しても
JAVAスクリプトで行っているブラウザのリサイズが正常に動きません。
テスト用に適当に選んだサイトですが
URLリンク(www3.ocn.ne.jp)
ここのsmall windowを押してもフレームのサイズが変更されません。
RecalcLayout等してもダメでした。メインフレームが正しくリサイズされる
方法をどなかた教えて頂けないでしょうか。
環境
VC6.0 WindowsXp SP2
443:デフォルトの名無しさん
07/02/05 20:47:25
|あいう |^|
|えおか| | |
| | |
| | |
5| | |
| | |
| リッチエディット | |
| | |
| | |
10| | |
| | |
| | |
| | |
| | |
15|--------------------------|↓|
スクロールバー
こんな感じの画面を作ることになったのですが
右のスクロールバーと左の行数のコントロール?(何でもいい)で
同期をとりたいのですがどのようにしたらよいのでしょうか?
なにかヒントでもありましたらご教授をお願いいたします。
環境:VC++2005 MFC
444:デフォルトの名無しさん
07/02/06 01:38:15
すみません。CFileFind について、みなさんのお知恵を貸してください。
エディットボックスに入力したパスを CFileDialog で開く、という処理を作ってまして、
入力したパスの存在チェックを CFileFind で行っています。
ですが、C:\ や、\\hoge\ 等、ドライブのルートを指定した場合に存在を検出できず、
前回開いたフォルダがFileDialog で開かれてしまい、困っています。
どなたか良い方法をご存知でしたら、ご教授ください。
よろしくお願い致します。
445:デフォルトの名無しさん
07/02/06 02:55:00
単独で現れる\記号の数をカウントすればいいんじゃないかい
"\\"はReplaceで別の記号に置き換えるとかして、
その後で"\"が1個だけならルート
446:デフォルトの名無しさん
07/02/06 04:19:44
つか、そのまえになんでCFileFindってそんな厨仕様なの?
なんか意味あんじゃね?
447:デフォルトの名無しさん
07/02/06 06:07:07
試してないけどCFileDialogで存在しないパスは指定できないような気がするけど
448:デフォルトの名無しさん
07/02/06 06:14:37
ああそうか指定したパスをCFileDialogで開きたいのか
449:デフォルトの名無しさん
07/02/06 06:39:44
>>444
ルートディレクトリが検出されないのは、内部で呼び出しているAPI側(FindFirstFile)の仕様。
CFileFindの仕様としては書かれてないかも。
FindFirstFileの説明にはルートディレクトリの属性を取得するにはGetFileAttributesを使えと書いてある。
450:デフォルトの名無しさん
07/02/06 06:42:23
ところでみんなフルコントロールの拒否とかってどうやって判断してる?
451:デフォルトの名無しさん
07/02/08 17:40:42
メニューをoffice風にするため調べたら
”ツールボックスからメニューをペタペタ”をすればいいらしい
しかし、MFCを使わなければならないことが判明
win32アプリにツールボックスからメニューをペタペタはできない
Wwindowsフォームで作るとできる
しかしForm.h、Form.resxとか変なファイルが中身見ると分けわかんなくなってるしWinmainがないぞ
C++とMFCは別物なのか!!
2005express
452:デフォルトの名無しさん
07/02/08 18:10:06
>>451
それは.NET frameworkじゃね
453:デフォルトの名無しさん
07/02/08 18:12:30
知らないうちにC++/CLIを使っている。いかんこれはゲイツの罠だ。
454:デフォルトの名無しさん
07/02/12 00:31:01
初めて任されたツールが遂に完成シマスタ^^
予定では後一週間あるので連休明けはブラックボックステストと
ロゴの作成にかかりたいのですが、VC6 MFCのリソースエディータって
しょぼいですね(^^;フリーでお勧めのリソース編集ソフト知ってたら
教えてくださいオナガイシマス
455:デフォルトの名無しさん
07/02/12 03:21:06
>>454
ロゴの作成にリソースエディタってお前馬鹿じゃないのか?
456:デフォルトの名無しさん
07/02/12 08:22:50
いるんだよ、ソースコードもロゴ画像もIDEで編集しないと気がすまない馬鹿って奴が。
457:松井康明
07/02/12 10:05:18
>>456
バカバカ言ってないで教えてやれよ
458:デフォルトの名無しさん
07/02/12 10:22:31
ロゴの作成をMFCスレで質問するのは脳に異常があるんだろうな
進行が進まないうちに早めに治療を受けたほうがいいよ
459:デフォルトの名無しさん
07/02/12 11:40:34
>>457
教えるも何も、「画像を作る」って聞いたら藻前様は何を使うと仰るのですか?
#ふつー、画像編集ソフトを使うと思うのだが。
460:デフォルトの名無しさん
07/02/12 21:25:22
別にいいんじゃね、リソースエディタでも。センスがあれば。
461:デフォルトの名無しさん
07/02/13 05:43:02
>リソースエディタでロゴ作成業務 8H
やべぇw脳勃起してきたw
462:デフォルトの名無しさん
07/02/15 10:25:44
印刷プレビューをダイアログベースのプログラム(VC6.0)で実現するにはどうすればよいのでしょうか?
検索するとSDI/MDIのプログラムばかりで途方に暮れています。
463:デフォルトの名無しさん
07/02/15 11:57:02
MFCのソース見れ
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4311日前に更新/205 KB
担当:undef