忍者ブログ
メモ、備忘録、その他雑記を記載します。 ただし、このHPに記載している情報を利用した結果 損失・損害等が発生したとしても筆者は責任を持ちません。
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

MFCプロジェクトで排他制御オブジェクトを使用するサンプル
環境
 VC6
 WindowsXP sp3


■排他制御オブジェクトに必要なヘッダ
// CCriticalSection、CMutex等のヘッダ
#include <afxmt.h>


■排他制御オブジェクト生成
// CMutex    g_mtx;
CCriticalSection g_cs;

■排他制御処理
{
    CSingleLock lock(&g_cs);
    lock.Lock(); // Unlockはデストラクタで行うことにする


    // 
    // この間は排他されている!
    // 
}

拍手[0回]

PR
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++;
 

拍手[0回]

MFCダイアログベースアプリケーションで、MFC AppWizardで「Windows ソケット」にチェックを入れた場合、入れなかった場合の違いを備忘録として記録しておく。

 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定義追加

拍手[0回]

 

 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();
 

拍手[0回]

 HOME |
Admin / Write
カレンダー
03 2025/04 05
S M T W T F S
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
フリーエリア
最新コメント
最新トラックバック
プロフィール
HN:
Ace
性別:
非公開
バーコード
ブログ内検索
P R
忍者アナライズ
忍者ブログ [PR]