FindNoCase
同じ関数を作ってしまったので,...
CharFnc.hxx より
//*******************************************************************************
// 関数名 :大文字/小文字を区別せずに検索
// 作成日 :’11/09/07
//*******************************************************************************
inline
int FindNoCase (LPCTSTR str1,LPCTSTR str2)
{
CString fStr1 = str1 ;
int fIndex = fStr1.Find(str2) ;
if (fIndex >= 0) { return fIndex ; } // 大文字/小文字を区別して見つかった?
CString fStr2 = str2 ;
fStr1.MakeLower() ;
fStr2.MakeLower() ;
return fStr1.Find(fStr2) ; // 大文字/小文字を区別せずに(小文字にして)検索
}
他にも,
PathName.hxx
PathName.hxx
//*******************************************************************************
// 関数名 :ファイル拡張子取得(text.DAT->dat) 小文字で
// 作成日 :’11/06/09
//*******************************************************************************
inline
CString GetFileExtLow (LPCTSTR pathName)
{
CString ext = ::GetFileExt(pathName) ;
ext.MakeLower() ;
return ext ;
}
WDFME.exe
以前はここまでひどくなかったと思うが,昨日再起動をかけたにもかかわらず,物理メモリの空きが少なくなり動作が遅くなり始めた.
どうも WDFME.exe が影響しているようで,今日再起動後,また同様になってきた.
5 時間程度 PC を起動している状態で,2G 程度食っている.
WD SmartWare のアップデートが出ているのは知っていたが,特に支障は感じられなかった(1.5.0.18)ので更新しないでいた.
アップデートの 1.5.1.6 には以下の様な記述がある.
Fixed high memory utilization on certain systems.
更新してみたが効果なし.
今までうまく動作していて自分の環境に合っていたので,ちょっと残念.
ひとまずサービスを停止することにした.
BDH_Modify クラスを用意
BDH_Modify クラスを用意しました.
class BDH_Modify {
public:
BDH_Modify () { Modified = FALSE ; }
public:
virtual BOOL IsModified (void) const { return Modified ; }
virtual BOOL SetModifiedFlag (const BOOL mod=TRUE) { Modified = mod ; return TRUE ; }
virtual BOOL CanClose (void) { return SaveModified() ; }
public:
virtual CString GetPathName (void) const { return _T(“ファイル”) ; }
virtual BOOL DoFileSave (void) { return FALSE ; }
public:
virtual BOOL SaveModified (void) ;
protected:
BOOL Modified ;
} ;
inline
BOOL BDH_Modify::SaveModified (void)
{
if (!IsModified()) { return TRUE ; }
CString name = GetPathName() ;
if (name.Find(‘\\’) >= 0) {
name = ::GetFileName(name) ;
}
// VC98\MFC\SRC\DocCore.cpp CDocument::SaveModified() より
CString prompt ;
AfxFormatString1(prompt,AFX_IDP_ASK_TO_SAVE,name) ;
switch (AfxMessageBox(prompt,MB_YESNOCANCEL,AFX_IDP_ASK_TO_SAVE)) {
case IDCANCEL: return FALSE ; break ;
case IDYES : if (!DoFileSave()) { return FALSE ; } break ;
case IDNO : break ;
default : break ;
}
return TRUE ;
}
ダイアログベースなどで利用するために作成しました.
以下の様に利用しています.
#include “BDH_Mod.hxx”
class BDModCSV : public BDocCSV , public BDH_Modify {
public:
virtual BOOL Clear (void) { SetModifiedFlag(FALSE) ; return BDocCSV::Clear() ; }
public:
virtual void Serialize (CArchive& ar) { SetModifiedFlag(FALSE) ; BDocCSV::Serialize(ar) ; }
} ;
class Masters : public BDModCSV
{
// …
virtual CString GetPathName (void) const { return GetFilePath() ; }
virtual BOOL DoFileSave (void) { return FileWrite(GetFilePath()) ; }
} ;
BOOL Masters::AddMaster1 (Master* reg)
{
SetModifiedFlag(TRUE) ;
// …
}
void CEditCNDlg::OnCancel()
{
Masters* masters = Mast_S->GetSelected() ;
if (masters != NULL && !masters->CanClose()) { return ; }
CDialog::OnCancel();
}
VC6→VC8→MBCS→UNICODE C4651
c:\….\masteddg.cpp(4) : warning C4651: ‘/D_MBCS’ がプリコンパイル済みヘッダーに定義されていますが、現在のコンパイル処理には定義されていません。
vcproj 内の “;_AFXDLL;_MBCS;$(NoInherit)” を削除
VC 7 などで追加したファイルは,以下の様にシンプル.
<File
RelativePath=".\MastEdDg.cpp">
</File>
これは,VC 6 で追加したもの.
<File
RelativePath="MastS.cpp">
<FileConfiguration
Name="Debug|Win32">
<Tool
Name="VCCLCompilerTool"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
BasicRuntimeChecks="3"/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32">
<Tool
Name="VCCLCompilerTool"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"/>
</FileConfiguration>
</File>
2021/01
VC 12 LNK1104 , VC 14.2 LNK2019
コンパイル対象のソースをすべて選択して「プリプロセッサの定義」を
VC 2008 までは「ブランク」に.
VC 2010 以降は <親またはプロジェクトの既定値から継承> にする.
UNICODE と VC6 → VC8 一部修正
VC6 | UNICODE |
wWinMainCRTStartup
VC6 → VC8
http://cid-535f5973454c1292.skydrive.live.com/self.aspx/.Public/MFC/VC6%e2%86%92VC8.txt
「全般」-「出力ディレクトリ」,「中間ディレクトリ」 | .\$(ConfigurationName) |
「プリコンパイル済みヘッダファイル」 | $(IntDir)/$(TargetName).pch |
「C/C++」-「出力ファイル」 「ASMリスト...」 「オブジェクト...」 「プログラムデータベース...」 |
$(IntDir)/ |
「リンカ」-「全般」の「出力ファイル」 | $(OutDir)/$(ProjectName).exe |
リンカ」-「デバッグ」 「プログラムデータベースファイルの生成」 |
$(OutDir)/$(ProjectName).pdb |
「リソース」-「全般」の「リソースファイル名」 | $(IntDir)/$(InputName).res |
「MIDL」-「出力」の「タイプライブラリ」 | $(IntDir)/$(ProjectName).tlb |
「ブラウザ情報」-「全般」の「出力ファイル」 | $(OutDir)/$(ProjectName).bsc |
CListCtrl の列数の取得
CListCtrl の列数の取得
int colCount = 0 ; // C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRC\WinCtrl6.cpp // CListCtrl::GetColumnOrderArray より { CHeaderCtrl* pCtrl = ctrl->GetHeaderCtrl() ; if (pCtrl != NULL) { colCount = pCtrl->GetItemCount() ; } }
smtp 587 TLS
au の基本メールアドレスを取って,手動で設定.
受信はできるが,送信でエラー.
http://www.auone-net.jp/support/various_set/mail/win/ol10/02.html
ここの step 10
送信サーバー(SMTP)(O) 587
使用する暗号化接続の種類(C) TLS
これらの設定が足りなかった.
OE 6 では
このサーバーは…接続(SSL)が必要(Q) チェックします
送信メール(SMTP)(O) 465
2012/11/12 追記
SMTP認証 oe 6
ビルドエラー fatal error C1060
VC 8 でのビルドでエラー
c:\program files\microsoft visual studio 8\vc\atlmfc\include\afxtempl.h(674) : fatal error C1060: ヒープの領域を使い果たしました。
c:\program files\microsoft visual studio 8\vc\atlmfc\include\afxtempl.h(675): クラス テンプレート のメンバ関数 ‘void CArray::AssertValid(void) const’ のコンパイル中
with
[
TYPE=Circle,
ARG_TYPE=Circle
]
\\dp340xpp\d_drive\develop\circary.hxx(79) : コンパイルされたクラスの テンプレート のインスタンス化 ‘CArray’ の参照を確認してください
with
[
TYPE=Circle,
ARG_TYPE=Circle
]
エラーメッセージの通り,不要な AP を終了することにより対応.