MFC/Win32

MFCDLL内の関数をC#で呼び出す

過去の資産をC#で利用したい。 その基本的なやり方を示します。 MFCDLLのプロジェクトを作成し、 apiModule.cppを追加し下記のように記述します。 defファイルに関数名を記述します。apiModule.cpp #include "StdAfx.h" void WINAPI Dll_ShowMessage(const C…

USBメモリを挿した際の自動再生ウインドウをキャンセルする

USB機器とデータをやり取りするアプリを作っていると、 USB機器をPCに挿した際に自動再生ウインドウが アプリの前面に表示されてしまう。そのウインドウを表示させない方法。OnInitDialogでQueryCancelAutoPlayのメッセージを登録する m_cancelWindowMessage…

リストコントロールアイテムのカスタムドロー

NM_CUSTOMDRAWのイベントハンドラに下記のように記述する。 アイテムの設定を変更するとそれ以降のアイテムに影響するので デフォルト設定をしておかなければならない void CnmCustomDrawTestDlg::OnNMCustomdrawListNum(NMHDR *pNMHDR, LRESULT *pResult) {…

画像を透過色で透過する

右の画像の赤色の部分を透過したい 下記はMFCでのやり方 m_cBitmapはCBitmap型 IDB_BMP_IMGはイメージのリソースID 赤色で透過したいのでRGB(255, 0, 0) OnInitDlgで m_cBitmap.LoadBitmap(IDB_BMP_IMG); OnPaintで CPaintDC dc(this); BITMAP bmp; m_cBitma…

アプリケーションのインストールパスの取得方法

アプリケーションをインストールするとHKEY_LOCAL_MACHINEのSoftware\\Microsoft\\Windows\\CurrentVersion\\Uninstall に情報が書き込まれるのでそれを利用してアプリケーションのインストールパスを取得する。 下記のコードはGoogle Earthの場合。参考: ht…

UTF8変換

厳密ではないけどマルチバイト環境でもunicode環境でも使えるUTF8に変換する関数。 マルチバイト環境の時にMultiByteToWideCharとWideCharToMultiByteを 使わなければいけないのはどうにかならないものか。 int GetUTF8String(const TCHAR *pInBuf, char *pO…

ソート覚書

今までわざわざ面倒な方法でソートしていた。 こんな簡単にできるのに一体何をやっていたのだろう。 #include "stdafx.h" #define _CRT_RAND_S // の直前に#define すること #include #include #include #include #include class CSizeLess { public: bool o…

CAtlRegExpの使い方

boost::regexを試そうと思っていたが先にATLのCAtlRegExpを試してみる。文字列が正規表現にマッチしていなくても matchContext.m_uNumGroupsは中括弧括りの個数分だけ値を保持するものなのか・・・。 #include "stdafx.h" #include // CAtlRegExp #include i…

リストコントロールアイテムのソートの仕方

void ClistCtrlSortTestDlg::PrepareListHeader() { LVCOLUMN lvColumn; ::memset(&lvColumn, 0, sizeof(LVCOLUMN)); lvColumn.mask = LVCF_TEXT | LVCF_WIDTH; lvColumn.cx = 100; lvColumn.pszText = _T("num"); m_numList.InsertColumn(0, &lvColumn); } …

フォルダ選択ダイアログを表示するソースコード

int CALLBACK _SHBrowseForFolderCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData) { if (uMsg == BFFM_INITIALIZED) { ::SendMessage(hwnd, BFFM_SETSELECTION, TRUE, lpData); } return 0; } BOOL SelectFolderDlg(HWND hParent, CStrin…