- 1 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 18:37:47 ]
- Microsoft Foundation Classライブラリ専用スレです。
前スレ ■MFC相談室 mfc18d.dll■ pc11.2ch.net/test/read.cgi/tech/1185917008/
- 285 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 23:52:59 ]
- チェックボックスのボタンスタイルか?
- 286 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 01:07:13 ]
- ダイアログエディタなら、チェックボックスを貼ってPushLikeをtrueに。
それ以外なら、、3ステートボタンとか2ステートボタンで探してみて
- 287 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 02:50:21 ]
- ON_BN_CLICKED で ピクチャーコントロールの上をクリックされたときによばれるコールバックを設定したんだけど、
このとき、クリックされた座標が知りたい。どうすればいい?
- 288 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 09:50:52 ]
- >>287
CPoint pt = GetMessagePos();
- 289 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 09:53:04 ]
- GetCursorPos使えばいいよ
- 290 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 09:58:09 ]
- STNじゃないの?
CLICKEDはボタンを押して離した後に来るからマウス座標の概念は無いかもな。 サブクラス化してLBUTTONDOWNやUPを見たほうがいいかも?
- 291 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 10:00:16 ]
- GetCursorPos や GetMessagePos にはタイムラグあるんじゃない?
CLICKEDが最後のメッセージであると決まってればGetMessagePosでいいのかもしれん
- 292 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 10:04:48 ]
- GetCursorPosはその瞬間のカーソル位置であって、
イベント発生時の座標はGetMessagePos。 ttp://msdn.microsoft.com/ja-jp/library/kt4by313(VS.80).aspx
- 293 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 11:52:42 ]
- >>292
GetMessagePosも、 イベント発生時の座標=クリックされた座標では無いのが曲者だな クリックされた座標を拾えるAPIは、もしかして無いんじゃね?
- 294 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 12:15:27 ]
- 実際にやってみて、ずれなきゃそれでいいしずれるなら自前で取るのがいいかもね。
- 295 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 23:06:45 ]
- 287 です。
みなさん、回答ありがとう。GetMessagePos() を使用して要望がかないました。 実際、実装したかったモノはCStaticにカラーグラデーションを配置して、簡易なカラーピッカを実現することでした。 実装してみるとクリック時よりもリリース時の座標の方が使い勝手がいいことが分かりましたが、 助言をヒントにこれも実現できそうです。
- 296 名前:デフォルトの名無しさん [2008/07/16(水) 13:01:17 ]
- VC.netでUnicode環境の場合に、
char a[10]; CString s; strcpy(a,s); _tcscpy(a, s); _tcscpy_s(a, s); とか、CStringからcharへのコピーがうまくいきません。 誰かご教授くださいm(_._)m
- 297 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 13:29:26 ]
- いったい何がやりたいのか理解できない
- 298 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 13:33:19 ]
- >>296
char a[10]; CString s; strcpy(a, CT2A(s)); とか USES_CONVERSION; char a[10]; CString s; strcpy(a, T2A(s)); とやれば動くだろうけど、そもそもaがchar配列なのは何故?
- 299 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 13:45:16 ]
- CStringA
- 300 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 13:55:01 ]
- コピーじゃなくて変換なのか?
- 301 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 18:05:29 ]
- Visual Studio 2005で、WindowsMobile6用のダイアログベースアプリを作っています。
ダイアログにメニューをつけたいのですが、やり方がわかりません。 下記URLのやり方をやってみようと思ったのですが、2箇所やり方がわからず、詰まってしまいました。 www.g-ishihara.com/mfc_me_01.htm 1.メニューのIDが設定できない リソースの追加でMenuを作成したときに、リソースビューには「IDR_MENU1」というのができるのですが、 メニューのプロパティでは「IDの編集ができません」と書かれて、IDが編集できません(サブメニューは編集できました)。 でも、とりあえず、メニューリソースの作成方法はわかったつもりです。 また、下記2.で使うのは「IDR_MENU1」という名前だと考えたので、 ここでIDの編集ができないことは、メニューをつけられないこととは関係ないと思っています。 2.ダイアログにメニューを関連付けられない >> ダイアログのプロパティで、「Menu」に作成したメニューのIDを指定 という手順で、ダイアログのプロパティに、「Menu」という項目がありませんでした。。。。 もしMenuという項目があれば、「IDR_MENU1」を記入すればよいと思っています。 ダイアログにメニューをつける方法を教えていただけませんでしょうか。 足りない情報があれば、ご指摘ください。 よろしくお願いいたします。
- 302 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 18:21:05 ]
- >>301
1.リソースビューの「IDR_MENU1」をシングルクリック 2.リソースビューの該当ダイアログIDをダブルクリック (※VS2003だけど)
- 303 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 18:22:25 ]
- >>301
1. メニューの編集閉じてから、リソースビューからメニュー右クリックでプロパティ出してみ 2. でも、モバイルでダイアログにメニュー持たせられたっけ
- 304 名前:301 mailto:sage [2008/07/16(水) 18:35:44 ]
- レスありがとうございます。
>>302 その通りにやってみましたが、ダイアログの編集が開くだけでした。 また、実行してみても、画面的に変化はありませんでした。 >>303 >> 1. メニューの編集閉じてから、リソースビューからメニュー右クリックでプロパティ出してみ これはできました!リソースのプロパティでのIDの編集なのですね。 >> 2. でも、モバイルでダイアログにメニュー持たせられたっけ ガーン。 もし無理ならばSDIで作り直して、メニューを編集することにします。 モバイルで可能かどうかって、何を調べればわかりますでしょうか?
- 305 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 18:54:01 ]
- どうだろ、そういうアプリ見たこと無いしなぁ
やっぱMSDN探すしかないか?
- 306 名前:301 mailto:sage [2008/07/16(水) 18:54:25 ]
- 書き忘れました。。。
>>302 1.については、リソースのプロパティが表示され、IDが編集できました。 (303さんと同じ結果でした)
- 307 名前:301 mailto:sage [2008/07/16(水) 19:05:41 ]
- >>305
MSDNでの探し方ってよくわからないんです。 モバイルで可能かどうかっていうのの情報が、どう書いてあるのかわからなくて。。。 .NET Compact Frameworkのどのバージョンに対応とか そういうのは書いてある気がするんですけど、これはまた別の話ですよね? # 当方MFCとかCompactFrameworkとかが何を指しているのかわかっていません。 言葉の意味はわかるのですが、具体的に何を指しているのかわからないのです。。。 たとえばCStringってクラスはMFCっぽい?とかそんなくらいの認識です。。。
- 308 名前:デフォルトの名無しさん [2008/07/16(水) 22:42:12 ]
- >>284
>>285 >>286 返信遅くなりすみません。 無事解決しました。ありがとうございました。
- 309 名前:301 mailto:sage [2008/07/17(木) 13:07:04 ]
- WindowsMobile用のスレを見つけたので、そっちで聞いてみます。
お邪魔しました。
- 310 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 23:00:15 ]
- VC6、VC7.1ともにダイアログベースのスケルトンにボタン貼り付けて、
クリックしたらMessageBox表示するだけのアプリで、 何回かボタンクリックしてるとメモリ使用量が4K増えるんですけど、こういうもんなんですか?
- 311 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 23:09:05 ]
- 一応、そのボタンクリック時の関数の中身貼ってみて
- 312 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 00:38:13 ]
- >>310
そんなもんだろう。 ページングがおこって4kが確保されたんだろうが、それ以上その動作で確保されることはない(とは断定できないが)。
- 313 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 05:34:53 ]
- CFileDialogのファイル選択ダイアログのことなんですが
JPEG Files (*.jpg;*.jpeg)|*.jpg; *.jpeg|All Files (*.*)|*.*|| と設定していて最初はJPEG Filesの拡張子が表示されるんですがJPEG FilesからAll Filesに変えると何も表示されなくなります(JPEG Filesに戻しても表示されない) あとXPですが左側にあるマイコンピュータを押してもCドライブなどが表示されず真っ白の状態(上と同じ)になります これをちゃんと表示させる方法ありませんか?
- 314 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 06:56:50 ]
- ほかのアプリで同様の現象が起きるなら、MFCは関係ないな。
再インストールでもした方が良い。
- 315 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 16:28:22 ]
- VS2005でピクチャーボックスのサイズが知りたくてGetWindowRectを使おうと思ったんだけど
void C・・・Dlg::OnBnClickedButton1(){} こんな形の場所だとhwndの指定がうまくできないんですがどうすればいいんですか?
- 316 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 16:44:21 ]
- 欲しいのはこれかね?
つGetDlgItem
- 317 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 16:59:32 ]
- >>316
それ使いたいんですがGetWindowRectの引数が1個しか指定できなくて使えないんです
- 318 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 17:09:35 ]
- RECT rc;
GetDlgItem(IDC_XX)->GetWindowRect(&rc); こういう事?
- 319 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 17:18:40 ]
- そんなやり方があったんですか
ずっとGetWindowRect(GetDlgItem(hwnd,IDC_XX),&rc);こんな感じでしかできないものと思ってました どうもです
- 320 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 17:20:59 ]
- >>319
GetWindowRect()は、this->GetWindowRect() のthisが省略された書き方だと言う事を意識した方が良い
- 321 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 19:25:16 ]
- Win32と入り混じってそうだな
- 322 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 19:39:36 ]
- GetDlgItem(IDC_XX)->
これ一番最初の方で習うだろ 別のやり方もあるけど、MFCでその方法教えない本はないと思う
- 323 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 09:48:03 ]
- >>322
MFCなら変数化して使うのが一般的じゃないかな。 IDを変数に置きなおして直感的に触れるようにするのがMFCの特徴の1つでもあるし。
- 324 名前:310 mailto:sage [2008/07/19(土) 14:11:23 ]
- >>311
亀で申し訳ないです。 void CmessageboxDlg::OnBnClickedButton1() { // TODO : ここにコントロール通知ハンドラ コードを追加します。 MessageBox("Message", "Title", MB_OK | MB_ICONWARNING); } で、張り付けたボタン→メッセージボックスのボタン の順にクリックし続けると何回かに1回4K増えます。 ボタンにフォーカス当ててエンター押しっぱなしだとより 顕著に増加します。 それ以外の部分はダイアログベースのスケルトンです。
- 325 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 21:07:10 ]
- CWnd一時オブジェクトが増えるのが原因じゃないかなあ。
放っておけば適当な間隔で解放されるから、あまり気にしなくても良いと思うけど。
- 326 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 21:21:25 ]
- だろうな
環境によって違うけど、ある程度時間を待てば解放されると思う
- 327 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 23:57:52 ]
- まあ、多分聞きたいことはみなさんの環境でも同じことやって同じ現象おきませんか?
ってことだと思うけど俺は腰が重くてとても動く気になれないなw
- 328 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 08:36:39 ]
- >>327
もしそうなら、同じOS・同じMFCバージョンでやらないと意味無いかもな。 さすがにメッセージボックス表示させるだけのコードなら大丈夫だと思うぜ。 MFCのバグの可能性を疑うのなら別だけど、それを言い出したらキリが無い。
- 329 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 09:51:32 ]
- MFCもapi呼んでるだけだし、
呼んだ人のハンドル渡すぐらいのことしかやってないから 特にメモリ使ってるようには見えないな メモリ使ってるとしたらapiだろ
- 330 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 09:59:07 ]
- 所詮CWnd::MessageBox()がAfxMessageBoxを呼んで、そいつがAPIのMessageBox呼んでるだけだよなw
- 331 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 07:32:41 ]
- ちょいとスレ違いだけど
EmeditorってMFC使ってないらしいけど どうやって作ってるんですか
- 332 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 08:51:20 ]
- MFCを使わずに作ればいい
- 333 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 19:34:18 ]
- MFCの仕組み分かってないのか・・・
- 334 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 17:24:12 ]
- ウィンドウが作られる前はPreCreateWindowっぽいのですが、
ウィンドウが作られた後のイベントは何でしょうか?
- 335 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 17:49:44 ]
- OnCreate の話?
- 336 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 20:01:25 ]
- CHogeWnd::OnCreate()
{ CWnd::OnCreate(); // ここに書け }
- 337 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 20:51:34 ]
- CHogeDialog::OnInitDialog()
{ CDialog::OnInitDialog(); // TODO: ダイアログならこれの方がいい // TODO: でもなんでダイアログだとこれの方がいいんだろう??? }
- 338 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 20:55:25 ]
- 子コントロールも初期化終わってるからじゃない?
- 339 名前:デフォルトの名無しさん [2008/07/23(水) 21:46:18 ]
- リストコントロールの行の高さを変えるにはどうすりゃいいでしょうか?
- 340 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 22:18:37 ]
- リソースで書き換えとけ
- 341 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 22:28:34 ]
- これかも
リストビュー(レポート)でアイテムの高さを変更する www.rainylain.jp/vc/QandA.htm#CListCtrl_ItemHeight
- 342 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 11:35:16 ]
- MFC初心者です
ダイアログ内の状態に応じて、×ボタンなのでダイアログを閉じさせたくないのですが どのイベントを拾ってどういう処理をすればいいのでしょうか?
- 343 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 11:41:44 ]
- ×ボタン→WM_SYSCOMMAND(SC_CLOSE)→WM_CLOSE
どっか(OnSyscommand等)で捕まえるのがいいかと。 ×ボタン自体はSYSMENUのSC_CLOSEを消すと消える。
- 344 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 11:57:41 ]
- 即レスどうもです!
ためしにOnCloseをオーバーライドしてみたんですが、終了時に呼ばれない。 ためしにOnOkとOnCancelも作ってみたけど・・・呼ばれないorz 何が悪いんでしょうか
- 345 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 12:05:52 ]
- ×ボタンのキャンセルじゃないの?
void Cmfc005Dlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == SC_CLOSE) { // ×ボタン } } とか
- 346 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 13:56:57 ]
- いろいろやってみてるんですがやっぱり継承したOn〜が全然呼ばれていないようです
メッセージマップの設定もしているはずなんですが… 唯一呼ばれるのはOnInitDialogくらいです エスパー助けて >o<
- 347 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 14:27:47 ]
- virtual になって無いとか・・・
- 348 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 14:36:34 ]
- メッセージマップの設定もなにも、、、
クラス選択してプロパティ出して、上のイベントボタン押して そこから追加してる?手でやってるならどれとどれ書いた?
- 349 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 14:37:38 ]
- イベントじゃないや、メッセージね
- 350 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 23:39:08 ]
- >>346
「On〜が全然呼ばれていないようです」 「メッセージマップの設定もしているはずなんですが」 どちらかが嘘だと思う。
- 351 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 10:05:31 ]
- OnCancel が呼ばれるんだよ
ID は IDCANCEL
- 352 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 12:22:44 ]
- >>351
クローズボックスで閉じたときの話をしてるんだが。 >ID は IDCANCEL そう。OnCancel が呼ばれるのは、IDがIDCANCELのダイアログの子ボタンが NOTIFY投げてきたとき&ダイアログがESCキー検出したとき。 けど今それ関係ないから。 >>346 >継承したOn〜が全然呼ばれていないようです 仮想関数でもない OnClose に継承とか関係ない。 メッセージマップに ON_WM_CLOSE があれば、ディスパッチされるハズ。
- 353 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 12:34:05 ]
- そういえばエスケープで閉じない処理を入れると
閉じるボタンでも閉じなくなってしまうから 閉じるボタンだったら閉じる処理を入れたのを思い出した
- 354 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 12:40:34 ]
- エスケープはOnCancel()でいいべ。
- 355 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 12:51:24 ]
- たぶん閉じるボタンでOnCancelが呼ばれて
そこでEndDialogしてるんだろ void CDialog::OnCancel() { EndDialog(IDCANCEL); }
- 356 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 12:57:18 ]
- m--takahashi.com/bbs/pastlog/A0100/A0071.html
「閉じる」ボタンのメッセージハンドラについて
- 357 名前:デフォルトの名無しさん [2008/07/29(火) 21:34:16 ]
- >>341
ありがとうございます。 その方法で行の高さはかえれるようになりましたが、ヘッダの高さが変えられません。 どうすればいいでしょうか?
- 358 名前:337 mailto:sage [2008/08/02(土) 00:30:06 ]
- >>338
OnCreate内でも子コントロールを操作して問題無いからどちらも子コントロール初期化終わってる希ガス
- 359 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 14:06:49 ]
- >>357
ヘッダは別コントロールだから、そっちで何とかするしかないかも
- 360 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 20:22:34 ]
- >>358
DDXとか初期化されて無いでしょ?
- 361 名前:337 mailto:sage [2008/08/03(日) 23:56:56 ]
- >>360
DDXと言うとコントロールとコントロール変数を関連付けるアレかな? あっちは初期化終わってなかったのか
- 362 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 00:11:31 ]
- CDialog::OnInitDialog -> UpdateData -> DoDataExchange
こんな感じになってるからね。 大体、WM_CREATEの時点だと子ウィンドウはまだ存在しないと思うし。
- 363 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 23:01:35 ]
- 質問お願いします。
edit controlを2個 OKボタンを1個 作成しました。edit controlが共に値が入っていないと OKボタンが非表示になるようにしたのですが 非表示の場合でも、Enterキーを入力するとOKが適用されてしまいます。 非表示の場合、Enterキーの無効化または常に無効化する方法を ご存じの方はご教示ください。
- 364 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 23:05:57 ]
- >>363
OnOkをオーバーライドしてそこにエディットコントロールの中身を調べるプログラムを書く。 もし空白など適切なものではない場合はreturnでそのまま返してやるだけ。
- 365 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 23:25:42 ]
- で、SP1まだ?w
- 366 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 10:20:15 ]
- >>363
同時にDisableにしておけばよいかと。
- 367 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 10:37:01 ]
- Disableにしても消しても無理
- 368 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 11:46:45 ]
- OnOkはシステム定義のメッセージだろ
OKボタンじゃなくて自分で作ったボタンにすればいい
- 369 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 13:32:40 ]
- >>368
>OnOkはシステム定義のメッセージだろ 何を言っているのか解らんが、 1. IDがIDOKである、ダイアログの子ボタンからのBN_CLICKED を受け取ったとき 2. ダイアログ自身がキー入力を見て Enter だったとき に、ダイアログから呼び出される仮想メンバ関数。
- 370 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 13:58:56 ]
- win32で定義してるのを知らんのか
WINUSER.H(7537): #define IDOK 1 /* * Dialog Box Command IDs */ #define IDOK 1 #define IDCANCEL 2 #define IDABORT 3 #define IDRETRY 4 #define IDIGNORE 5 #define IDYES 6 #define IDNO 7 #if(WINVER >= 0x0400) #define IDCLOSE 8 #define IDHELP 9 #endif /* WINVER >= 0x0400 */
- 371 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 14:16:02 ]
- また意味不明なことを言ってるよ。
話をどこにもっていきたいのかわからん。
- 372 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 14:32:05 ]
- >OKボタンじゃなくて自分で作ったボタンにすればいい
リターンキーでIDOKを回避するにはこれだけじゃだめで、 その自分で作ったボタンをデフォルトボタンにする必要がある。 まあOnOK()捕まえたほうが確実だね。
- 373 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 15:53:18 ]
- >>367
なんでDisableが無理? Disableにすればエディットボックス上でEnter押しても効かなくなるけど。 >>369 > 2. ダイアログ自身がキー入力を見て Enter だったとき > に、ダイアログから呼び出される仮想メンバ関数。 これは違う。 Enterキーはデフォルトボタンを押す操作。 キャンセルボタン上でEnterキーを押せばOnCancelがコールされるし、 自分で用意したボタン上ならそのハンドラがコールされる。
- 374 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 21:17:56 ]
- OKボタン削除してもOnOK呼ばれる
- 375 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 21:21:23 ]
- MFCやってるんなら、始めにぶつかって覚えてそうなことなのになw
- 376 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 22:40:24 ]
- >>374
OKボタンを削除してもOnOKが呼ばれるのは、IsDialogMessage()が、 デフォルトボタンが存在しないときにIDOKを発行しているからであって、 直接OnOKが呼ばれているのではないのでは? OKボタン削除だけしておいて代わりのデフォルトボタンを用意しなかったり、 DM_GETDEFIDメッセージを処理しなかったりしているからそうなるだけ。
- 377 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 20:02:47 ]
- シングルウィンドウでexeのアイコンにファイルをドロップしたり、その実行ファイルに関連付けされているファイルを開いた場合
どの部分でドロップしたファイルや開いたファイルのパスを取得するのでしょうか。
- 378 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 20:50:07 ]
- >>377
取得しなくとも__argv or __wargvに保持されています。 DialogベースのアプリでないならCYourApp::InitInstanceのParseCommandLineでコマンドラインの解析が行われます。 argvなんて単語初めて聞いた!!という場合はParseCommandLineの利用をお勧めします。
- 379 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 14:27:14 ]
- VisualStudio2005で、WindowsMobile6用にSDIで作っています。
リストボックスのフォントを等幅フォントにしたいと思って、次のように書いたのですけど、反映されません。 CFont nfont; nfont.CreateFont( 0, // nHeight 0, // nWidth 0, // nEscapement 0, // nOrientation FW_BOLD, // nWeight FALSE, // bItalic FALSE, // bUnderline 0, // cStrikeOut SHIFTJIS_CHARSET, // nCharSet OUT_DEFAULT_PRECIS, // nOutPrecision CLIP_DEFAULT_PRECIS, // nClipPrecision DEFAULT_QUALITY, // nQuality FIXED_PITCH | FF_DONTCARE, // nPitchAndFamily _T("MS ゴシック") // lpszFacename ); GetDlgItem(IDC_LIST1)->SetFont(&nfont); ちなみにHeightの設定だけ微妙に反映される状態です。 リストの1行の高さだけが変化し、フォントの大きさは変わらないという微妙さ加減です。 BOLD指定しても太字にならないし、何がなにやらよくわからないです・・・。 リストボックスの文字を等幅フォントに設定する方法を教えてください〜
- 380 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 14:37:12 ]
- そのフォントがスコープ抜けて無効になってるというオチじゃなかろうね?
- 381 名前:379 mailto:sage [2008/08/12(火) 15:55:41 ]
- >>380
スコープ!? あわわわわ。まさにそのオチでしたorz ありがとうございました(泣)
- 382 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 06:32:06 ]
- sp1出てたのか
いろんなニュースに紛れてて気付かなかった
- 383 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 14:20:46 ]
- あれ?
ファイルのフルパスからファイル名を省いたフォルダパスを取得するのってどうするんでしたっけ?
- 384 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 14:41:01 ]
- >>383
PathRemoveFileSpec()
- 385 名前:383 mailto:sage [2008/08/19(火) 14:41:34 ]
- _tsplitpath
でしたね。。。 すまそ。
|

|