おいちゃんのおぼえがき

仕事のTipsをメモするブログ

MFCフォームでキーを拾う

2009-02-23 | Win
ダイアログで乗っているコントロールではなくフォーム自身でキーを拾いたいときは、CDialog::PreTranslateMessage()をオーバーライドする。 メッセージを処理したなら return TRUEを、未処理なら CDialog::PreTranlateMessage() を呼ぶこと。 BOOL CWinVendDlg::PreTranslateMessage(MSG* pMsg) . . . 本文を読む

VB2008 型変換

2009-02-23 | Win
Option Strict とか入れてると、Byte データを Integer に入れるのとかでもいちいちエラーになる。 そんなときには、 CBool(expression) CByte(expression) CChar(expression) CDate(expression) CDbl(expression) CDec(expression) CInt(expression) CLng(e . . . 本文を読む

VB2008 Right関数

2009-02-23 | Win
VB2008 から、名前空間が導入され、フォーム系のクラスに存在する right プロパティと区別するため、rRight(), Left() は下記のように名前空間からフル指定する必要がある。 Microsoft.VisualBasic.Right() Microsoft.VisualBasic.Left() なお、Mid() は名前がかぶらないのでそのまま使える。 . . . 本文を読む

VB2008 コントロールが作成されたスレッド以外のスレッドからコントロールが・・・

2009-02-23 | Win
VB2008 では、異なるスレッド間で相互にコントロールの値を変更するアクセスができない(もともとVBはスレッドセーフではなかった)。 この場合、正しくは Invoke プロパティを使う方法、ワーカースレッドを使う方法などが正しい回避策だが、ちょっとしたプログラムで手軽にエラーを避けるには、フォームのプロパティで CheckForIllegalCrossThreadCalls を False にし . . . 本文を読む

VC2008 定義済みマクロほか、小技など

2009-02-23 | Win
__cplusplus   C++コンパイラ(ソースが cpp ) が動いていると定義される。C関数を混在して使う場合に必要になる。   #ifdef __cplusplus   extern "C" {   #endif     int cfunc(void);   #ifdef //__cplusplus _WIN32   windows 環境向けにコンパイルされるときに定義される。他環境 . . . 本文を読む