Topさいばざる(雑記)おもわざる(その他雑記)

VC++のF12

久々でございます、さるですこんばんは。
おかげさまでなんとか修羅場を乗り越えることができたりしました。

…そりゃぁもぅいろんな意味で。

「はぼれ」も一段落着きました。ので。
現在、次回作に向けていろいろ下調べ中です。VBでは鬼門のフォント印刷をなんとかしなきゃなぁ。ふっふっふ。



先月まで、VC++.NETで仕事をしておりました。

MFC使ってダイアログベースだってゅうので楽勝っと思って受けたんですが。

これがもぅ大失敗。

いろいろあってリソース使っちゃだめ、ってすんごい条件付いちゃったもんで。コントロールのクラスをソーステキストで作りまくりですよ。RichEditは動作タイミングがいまいちつかめなくて専用の別制御起こさざるを得ませんでしたし、親ウィンドウ(別チーム作成)は子ウィンドウ(こちらのチーム)にインターフェイス作ってくれないので文字色ひとつ変えるのにサブクラス作ってフックしまくらざるを得ませんでしたし、親側がPreTransrateMessage多用しやがるもんでいらんところでメッセージ拾っちゃうのでメッセージ潰しのロジックは入れざるを得ませんでしたし。

終わったから言えますが、

いやぁむちゃくちゃ勉強になりました。

もーVC++のスキルが一気にプロ並みに。< ってもともと私はプロなんではなかったんですかい。



さて。そんなこんなでむだにハイテクニック使いまくりのダイアログを作っていたわけなんですが。

ファンクションキーに機能を割り当てるといぅお約束な機能を作っていた時に。
F1とF12がすなおにSysKeyDownメッセージに反応してくれないんですよ。

いぇ、F1はねぇ。どぅせデフォルトでHelpに割り当たってるだろぅことは何となくわかっていたので、OnHelpInfoで空振らせておっけーだったんですが。

F12がだめ。どーにも。デバッグトレースで行単位でたどってっても、押下した途端にメッセージも流さず何のコマンドも通らないでいきなり例外発生。

いゃ実にこいつには苦しめられました。

で、結論はといぅと。

IDEの機能として、F12は例外を発生させるキーだったんです。

なんじゃそりゃ。

私、強制的に例外を発生させるキーを押して「なんで例外が発生するんだろぅ」と頭を抱えていたんです。
いゃMSDNにそんな記述見つからんかったし。てゅうかそもそも実にわかりにくい記述なんでいまいちIDEの使い方よく理解してないし。

ってMSDNに文句いぅのも実に久しぶりだったりするし。

このキーはレジストリ [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug]の[UserDebuggerHotKey]で割り当たっているそぅで。
デフォルト(0)だとF12なんだそぅで。ほかのキーに割り当てたいならこの値をキーコードにしてやればいいんだそぅで。

試しに0x13(Pause)に変更したら、F12が実にスムースに動作しましたよこんちくしょう。

いぇ、IDE経由しないでEXE直で実行したら例外発生しないので変だなーとは思っていたんですけどね。



さて、今月からはVB2のお仕事です。
VB2をWindows95で、Oracle7に接続するといぅシステムのお仕事です。

ある意味すげぇ。ぎりぎりですね。
そんな究極の組合せに十分対応できるだけの知識と経験を持っている私もある意味すげぇ。

…今回は中途半端に技術屋っぽいお話でした。
たまにはトバしてみたい時もあるってことでひとつ。

トラックバック

このエントリーのトラックバックURL:
http://salv.miscnotes.com/mt/mt-tb.cgi/39

コメントを投稿