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