■MFC相談室 mfc17d.dll■
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/11/21(火) 10:38:31前スレ
■MFC相談室 mfc16d.dll■
http://pc8.2ch.net/test/read.cgi/tech/1146117893/
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ないものは教えられない
■ このスレッドは過去ログ倉庫に格納されています