- リソースで、ツールボタンを削除する
- リソースを開いて、ツールバーのエリアの外側に向かってドラッグアンドドロップ。MS-Officeでツールバーからボタンを削除するときと同じように。
◆悩んだ。<Delete>を押すと、ボタンの中の絵が削除されるだけでしょ?先輩に教わりました。なんてわかりにくいんでしょう。
- リソースIDの値を指定する
- リソースのプロパティウィンドウで、「ID=数値」と入力すると、自分の好きな値にできる。(一度保存すると、プロパティ画面の「=値」の表示は消える)
- 「FileView」タブの「Header Files」の中の「Resource.h」を開き、IDの定義値を変更する。コンパイル時に再読み込みするか、と聞かれるので「はい」を選択する。
- コンボボックスのリスト表示を広げる
- スタイルのタイプを「ドロップダウンリスト」に設定したときで、項目数が少ないときかな、リストが1行分くらいしか表示されない場合がある。そのときは、一度「標準」のスタイルで、リストのサイズを広げておいて、そのあと「ドロップダウンリスト」に変更すると、リストのサイズが広がるのだ。もっといい方法もあるんだろうけど…。とりあえず発見したので書いておく。
- ダイアログのタブオーダーを設定する
- リソースのダイアログ設計画面を開いた状態で、<Ctrl>+<D>を押す。
- タブ順の番号が表示されるので、タブ順を設定する順番に、コントロール部品の上をクリックする。
- もう一度<Ctrl>+<D>を押すか、ダイアログのウィンドウ以外をクリックすると表示が戻る。<Enter>を押しても良い。
◆「レイアウト」メニューの「タブオーダー」を選択しても同じだ。
- コントロールのタブ オーダーを部分的に変更する
- リソースのダイアログ設計画面を開いた状態で、<Ctrl>+<D>を押す。または、「レイアウト」メニューから「タブ オーダー」を選択する。
- <Ctrl>を押しながら、タブ オーダー変更を開始するコントロールを選択する。例えば5番目以降を変更するなら、4番目のコントロールを選択。
- 続きのタブ順を設定するコントロールを順番にクリックする。
◆あるコントロールを先頭のタブ順に設定するには、ダブルクリックだ。
- ダイアログベースでメニューをつける
- リソースエディタで、メニューを作成する。
- ダイアログのプロパティウィンドウの「一般」タブで、メニューに、作成したリソースIDを指定する。
- VC++の起動時に、最後に開いていたワークスペースを開く
- 「ツール」メニューから「オプション」を選択する。
- 「ワークスペース」タブで、「起動時に前回のワークスペースを開く」にチェックをつける。
- ダイアログのエディットコントロールに変数を割り当てる
- 「Resource Veiw」タブの「Dialog」からダイアログボックスを開く。
- ダイアログに配置したエディットコントロールを右クリックして、「ClassWizard」ウィンドウを開く。
- 「メンバ変数」タブでエディとコントロールのIDを選択して、「変数の追加」ボタンをクリックし、「メンバ変数の追加」ウィンドウで変数名を入力して「OK」ボタンをクリック。先頭に「m_」を付けるのが慣習らしいな。
- 「ClassWizard」ウィンドウに戻り、必要であれば最大文字数や最小値/最大値を指定できる。
- スタティックコントロールのクリックを検知する
- スタティックコントロールのプロパティを開く。
- 「一般」タブを選択して、IDを「IDC_STATIC」以外に変更する(変更しないとClassWizardに出てこない)。
- 「スタイル」タブを選択して、「通知」にチェックをつける(チェックしないと、メッセージが通知されない)。
- ClassWizardで「BN_CLICKED」の関数を追加する。→「BN_CLICKED」をダブルクリックして「メンバ関数の追加」で「OK」ボタンをクリックし、追加されたメンバ関数をダブルクリックする。
- ダイアログボックス内のコントロールの配置を揃える
- 位置を揃えるコントロールをすべて選択する(Shift+クリックまたはCtrl+クリック)。
- 縦に配置したコントロールの左右の位置を揃える場合は、「レイアウト」メニューの「配置」で揃える位置を「左端」「左右中央」「右端」から選択する。一番最後にクリックしたコントロールの位置に合わせられる。
- 縦に配置したコントロール同士の間隔を均一にする場合は、「レイアウト」メニューから「スペースの均等化」→「下へ」を選択する。選択したコントロールのうち、一番上と一番下の範囲の間で間隔が均等になる。
- 横に配置したコントロールの上下の位置を揃える場合は、「レイアウト」メニューの「配置」で揃える位置を「上端」「上下中央」「下端」から選択する。一番最後にクリックしたコントロールの位置に合わせられる。
- 横に配置したコントロール同士の間隔を均一にする場合は、「レイアウト」メニューから「スペースの均等化」→「左右方向」を選択する。選択したコントロールのうち、一番左と一番右の範囲の間で間隔が均等になる。
- デバッグ中の変数の値
- 変数の値はデバッグ中にマウスポインタをポイントすると、ポップアップ表示される。配列変数の場合は、変数名から[添え字]までを選択してからポイントすると、ポップアップ表示される。
- 変数を選択して<Shift>+<F9>を押すか、または「デバッグ」メニューから「クイックウォッチ」を選択すると、「クイックウォッチ」ウィンドウが表示される。
- ブレークポイントを全部クリアする
- 「編集」メニューから「ブレークポイント」を選択する。<Ctrl>+<B>または<Alt>+<F9>でも同じ。
- 「ブレークポイント」ウィンドウで「すべて削除」ボタンをクリックする。
- デバッグ・実行のショートカットキー
- ブレークポイントの設定 <F9>
- リビルド <F7>
- デバッグの実行 <F5>
- ステップ実行 <F10>
- (ステップイン <F11>)
- プログラムの実行 <Ctrl>+<F5>
- デバッグの中止 <Shift>+<F5>
- BOOLやDWORDなどの変数の表示色も変更する
- インストール先(「MSDEV.EXE」がある)フォルダ(「C:\Program Files\Microsoft
Visual Studio\Common\MSDev98\Bin」かな?)に、「USERTYPE.DAT」という名前のテキストファイルを作成する。
- 色を変える変数の定義を記述する。
- VisualStudioを再起動する。
- ボタンとメニューから同じ関数を呼び出す-その2
- メニューに設定するIDとボタンに設定するIDを同じにする
- ClassWizardで、表示されないメッセージがあるとき
- ClassWizardウィンドウの「クラス情報」タブを選択し、「詳細設定オプション」のメッセージフィルタを、表示されたものと別の項目に変更する。再度「メッセージマップ」タブを選択すると、メッセージが選択できるようになる。かも?
◆私がやったときは、OnCtlColorメッセージが表示されなくて困っていたら、この方法で表示されたのだ。
- プログラムのアイコンを変更する
- プロジェクトの「res」フォルダにicoファイルが入っているので、名前とサイズを確認する。
- 変更するアイコンファイルを、「res」フォルダにサイズと名前を合わせて上書きコピーする。
- プロジェクトをリビルドする。バージョン情報のダイアログや、リソースのアイコンは元のままでも、実行ファイルは変更される。
◆リソースのアイコンで変更すると、うまくいかなかったのだ。
- デバッグバージョンとリリースバージョン
- 「ビルド」メニューの「アクティブな構成の設定」をクリックする。
- 「プロジェクトの標準構成」ウィンドウで「… - Debug」または「… - Release」を選択して、「OK」ボタンをクリックする。
- 「ビルド」メニューの「リビルド」をクリックする。
◆VisualStudioがインストールされていないPCでは、デバッグバージョンが動かないみたいだな。そりゃそうか。
- エディタ画面で空白とタブを表示する
- 「編集」メニューの「高度な操作」→「空白の表示」をクリックする。または、<Ctrl>+<Shift>+<8>を押す。
- 最近使ったファイルの数を変更する
- 「ツール」メニューの「オプション」を選択し、「オプション」ウィンドウ表示する。
- 「ワークスペース」タブを選択して「最近使ったファイル一覧で表示するファイル数」の数値を変更する。ワークスペースの数を変更する場合は、「最近使ったワークスペース一覧で表示する数」を変更する。
- 「OK」ボタンをクリックする。
- ワークスペースに複数プロジェクト
- プロジェクト作成時、「ファイル」メニューの「新規作成」を選択し、「プロジェクト」タブの「現在のワークスペースへ追加」を選択して作成する。
- ワークスペース内で現プロジェクトを切り替える場合は、「プロジェクト」メニューの「アクティブプロジェクトに設定」から、プロジェクトを選択する。プログラムの実行を行うと、アクティブプロジェクトのプログラムが実行される。
◆関連プロジェクトのリソースやソースコードを見るのに便利だな。ただ、「起動時に前回のワークスペースを開く」に設定していたら、「ワークスペースを開くときにドキュメントを再ロード」のチェックははずした方がいいかもしれない。マシンスペックのせいなのかわかんないけど、ファイルは開けないみたいだ。
- MSDNライブラリヘルプでグレー表示で選択できない項目がある
- ヘルプウィンドウ左上(「目次」「キーワード」タブの上)の「アクティブサブセット」で、表示するサブセットを選択する。選択されたサブセットの項目のみ表示されるので「すべてのトピック」を選択すると、全項目が選択できるようになる。
- Visual Studio 6.0 Service Pack 6
- http://www.microsoft.com/japan/msdn/vstudio/downloads/sp/order_vs6sp6.aspからダウンロードする。
- MFC拡張DLLを作る
- ダイアログベースでのDDVの注意点
- ダイアログベースでDDV(Dialog Data Validation)機能を使うとき、メインのダイアログ上で設定すると、UpdateData関数を呼び出すまで値のチェックはされない。そして、 ID_OKなどの割り当てられたボタンをクリックしたときもチェックされて、正しい値を入力するまで、プログラムが終了できなくなってしまう。その上、 UpdateDataを呼び出したときにチェックされてメッセージは表示されるけど、そのまま処理は続行してしまう。意味ないじゃん。
- 結論としては、メインダイアログではDDVは設定せず、必要な箇所で自分で値のチェックを行う。
- 複数のコントロールからのメッセージ処理をまとめる
- 同じ処理をするコントロールのIDの値を連番に設定する。
- ボタンであれば、ボタンクリック時の処理関数を定義する。引数は、コントロールのIDでUINT型。
//ヘッダファイル内
class C…Dlg : public CDialog
{
…
afx_msg void OnButtonClicked(UINT);
…
};
//ソースファイル内
void C…Dlg::OnButtonClicked(UINT uID)
{
…
//uIDを使って処理する
}
- BEGIN_MESSAGEMAPからEND_MESSAGE_MAPの間で、ON_CONTROL_RANGEを定義する。
BEGIN_MESSAGE_MAP
…
ON_CONTROL_RANGE(BN_CLICLED, IDC_BOTTUN1, IDC_BUTTON10, OnButtonClicked)
…
END_MESSAGE_MAP
◆他にも、ON_COMMAND_RANGEとかON_UPDATE_COMMAND_UI_RANGEとかってのがあるな。前から疑問だったから、発見してよかった。メニューもやってみたぞ。
- MFCレギュラーDLLを作る
- 「ファイル」メニューの「新規作成」を選択して、「プロジェクト」タブの「MFC AppWizard(DLL)」を選択して、「プロジェクト名」と「位置」を指定して「OK」ボタンをクリックする。ここまではMFC拡張DLLと同じ。
- 「作成するDLLの種類」で「MFCの共有DLLを使用」を選択する。
- クラスから移行する場合は、ヘッダファイルのクラス定義を削除して、公開する関数の定義は、
extern "C" 型 WINAPI EXPORT 関数名(引数);
とする。プライベート関数の定義は、
型 関数名(引数);
という形式でよい。
- ソースファイルでも、クラスの定義を削除し、関数の定義はヘッダと同じにする。関数の先頭に
AFX_MANAGE_STATE(AfxGetStaticModuleState());
の記述を追加する。これによって一時的にMFCの使うリソース先が変更されてアクセスできるらしい。
- MFCレギュラーDLLに関数を追加する
- ヘッダファイルに記述を追加して、CPPファイルに関数の記述を追加するが、このとき、defファイルへの記述を忘れないこと。コンパイルは通るけど、libファイルに記述が追加されず、リンク先でエラーになる。
- 条件付きブレークポイント
- ブレークポイントを設定する(設定する行で<F9>を押す)。
- 「編集」→「ブレークポイント」を選択する。<Ctrl>+<B>または<Alt>+<F9>でも同じ。
- 「ブレークポイント」ウィンドウの下部のブレークポイントの一覧から条件を設定するものを選択して、「条件」ボタンをクリックする。
- 「ブレークポイントの条件」ウィンドウで式や要素の数を指定する。スキップカウントを指定すると、条件をその回数繰り返した後に停止する。
- 別プロジェクトのリソースをコピーする
- コピー先のプロジェクトを開いた状態で、「ファイル」メニューから「開く」を選択する。
- コピー元のプロジェクトの「・・・・.rc」というファイルを開く。
- リソースの画面が表示されるので、そこからコピーできる。<Ctrl>キーを押しながらリソースにドラッグすると簡単。<Ctrl>キーを押さないと移動しちゃうぞ。
◆同じプロジェクトスペースの場合は、そのままコピーできるみたいだな。
- メンバの自動表示やパラメタヒントなどが表示されない
- プロジェクトのソースが入っているフォルダ内の「*.ncb」ファイルを削除してリビルドする。
◆ソースをコピーしてプロジェクトに追加したときなんかにこうなる時があるのかな。
- 参照先フォルダの設定方法
- 「ツール」メニューから「オプション」を選択して、「ディレクトリ」タブを選択する。
- 「表示するディレクトリ」で「インクルードファイル」とか「ライブラリ」とか選択して参照するフォルダを指定する。
- libファイルのリンク設定方法1
- 「プロジェクト」メニューの「プロジェクト」→「プロジェクトへ追加」→「ファイル」を選択する。
- 「ファイルの種類」で「ライブラリファイル(lib)」を選択して、リンクするlibファイルを指定する。
- または、「File View」にライブラリファイルをドラッグする。
- libファイルのリンク設定方法2
- ソースファイルのどこか?に記述する。
#pragma comment(lib,"ライブラリ.lib")