メモ、備忘録、その他雑記を記載します。
ただし、このHPに記載している情報を利用した結果 損失・損害等が発生したとしても筆者は責任を持ちません。
VC6.0のCListCtrlの使い方です。
■準備
ツールからリストビューをダイアログ上へD&Dする。
リストビューのタイプを「レポート」にする
メンバ変数の追加
CListCtrl m_listview;
■拡張スタイル設定
// 拡張スタイル設定
unsigned long ulStyle = m_listview.GetExtendedStyle();
// 1行選択
ulStyle |= LVS_EX_FULLROWSELECT;
// グリッド線表示
ulStyle |= LVS_EX_GRIDLINES;
m_listview.SetExtendedStyle(ulStyle);
■列追加
int g_nColNo = 1;
// m_listview.InsertColumn(インデックス, 列のヘッダー文字列, 配置, 列幅の初期値);
m_listview.InsertColumn(g_nColNo, "列名", LVCFMT_RIGHT, 30);
// m_listview.InsertColumn(g_nColNo, "列名");
g_nColNo++;
■行追加
int g_nRowNo = 0;
int g_nColNo = 0;
CString str;
str = _T("テスト");
// LVITEM lvItem ;
LVITEM lvItem = {0};
lvItem.mask = LVIF_TEXT;
lvItem.iItem = g_nRowNo;
lvItem.iSubItem = g_nColNo;
lvItem.pszText = (LPTSTR)(LPCTSTR)str;
if (g_nColNo == 0) {
// 行の挿入
// 最初の列にアイテム設定
m_listview.InsertItem(&lvItem);
} else {
// 最初以外の列にアイテム設定
m_listview.SetItem(&lvItem);
}
g_nRowNo++;
MFCダイアログベースアプリケーションで、MFC AppWizardで「Windows ソケット」にチェックを入れた場合、入れなかった場合の違いを備忘録として記録しておく。
1.ファイル→新規作成→プロジェクトで以下を選択
2.MFC AppWizard - ステップ1 / 4の「作成するアプリケーションの種類」で以下を選択
<afxsock.h>がインクルードされる
・Test.cpp
アプリケーションクラスのInitInstance()で
AfxSocketInit()が行われる
・Test.rc
AfxSocketInit()エラー時の文言定義追加
・Resource.h
AfxSocketInit()エラー時のID定義追加
1.ファイル→新規作成→プロジェクトで以下を選択
MFC AppWizard (exe)
※ここではプロジェクト名を仮に「Test」とする。
2.MFC AppWizard - ステップ1 / 4の「作成するアプリケーションの種類」で以下を選択
ダイアログベース(D)
「次へ」を押下する。
3.MFC AppWizard - ステップ2 / 4の「Windows ソケット」のチェックについて・・・
チェックした場合、そうでない場合と比べて以下が変更される。
・StdAfx.h<afxsock.h>がインクルードされる
・Test.cpp
アプリケーションクラスのInitInstance()で
AfxSocketInit()が行われる
・Test.rc
AfxSocketInit()エラー時の文言定義追加
・Resource.h
AfxSocketInit()エラー時のID定義追加
VC6のDLL作成方法です。
1.ファイル→新規作成→プロジェクトで以下を選択
MFC AppWizard (dll)
※ここではプロジェクト名を仮に「SampleDll」とする。
MFC AppWizard - ステップ1 / 1の「作成する DLL の種類」で以下を選択
MFC の拡張 DLL (MFC の共有 DLL 使用)(E)
※これでMFC AppWizardを終了する。
2.関数の実装
int WINAPI Test();
int WINAPI Test()
{
AfxMessageBox(_T("DLL内関数テスト"));
return 0;
}
3.def.ファイルの修正
; SampleDll.def : DLL 用のモジュール パラメータ宣言
LIBRARY "SampleDll"
DESCRIPTION 'SampleDll Windows Dynamic Link Library'
EXPORTS
; 明示的なエクスポートはここへ記述できます
Test @1
※補足
2.関数の実装は、以下のように記載してもよい。
そうすると、3.def.ファイルの修正の手順は必要なくなる。
extern "C" __declspec(dllexport) int Test();
extern "C" __declspec(dllexport) int Test()
{
AfxMessageBox(_T("DLL内関数テスト"));
return 0;
}
実際の記載例は以下(DLLを暗黙的に使用する場合)
●DLL作成プロジェクト
・DLL関数ヘッダファイル
#ifdef DLL_EXPORT
#define DLL_DECLSPEC __declspec(dllexport)
#else
#define DLL_DECLSPEC __declspec(dllimport)
#endif
#ifdef __cplusplus
extern "C" {
#endif
DLL_DECLSPEC int Test();
#ifdef __cplusplus
}
#endif
・DLL関数CPPファイル
int Test()
{
AfxMessageBox(_T("DLL内関数テスト"));
return 0;
}
・StdAfx.h
#define DLL_EXPORT
●DLL呼出プロジェクト
#include "Xxx.h" // DLL関数ヘッダファイルのインクルード
extern "C" {
#pragma comment( lib, "Sample.lib" ) // DLLのlibファイル
}
Test();
HOME |