Iwao Dev

気付いたことをメモしています.

この画面は、簡易表示です

2011 / 10月

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
//*******************************************************************************
// 関数名 :ファイル拡張子取得(text.DAT->dat) 小文字で
// 作成日 :’11/06/09
//*******************************************************************************
inline
CString GetFileExtLow (LPCTSTR pathName)
{
  CString ext = ::GetFileExt(pathName) ;
  ext.MakeLower() ;
  return ext ;
  }


StringFn.hxx



  にほんブログ村 IT技術ブログへ


WDFME.exe

以前はここまでひどくなかったと思うが,昨日再起動をかけたにもかかわらず,物理メモリの空きが少なくなり動作が遅くなり始めた.
どうも WDFME.exe が影響しているようで,今日再起動後,また同様になってきた.
5 時間程度 PC を起動している状態で,2G 程度食っている.
WD SmartWare のアップデートが出ているのは知っていたが,特に支障は感じられなかった(1.5.0.18)ので更新しないでいた.

アップデートの 1.5.1.6 には以下の様な記述がある.
Fixed high memory utilization on certain systems.

更新してみたが効果なし.

今までうまく動作していて自分の環境に合っていたので,ちょっと残念.
ひとまずサービスを停止することにした.



  にほんブログ村 IT技術ブログへ


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



  にほんブログ村 IT技術ブログへ


VC6 → VC8 → MBCS → UNICODE

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>



  にほんブログ村 IT技術ブログへ


UNICODE と VC6 → VC8 一部修正

UNICODE と VC6 → VC8  2009/12

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

 



  にほんブログ村 IT技術ブログへ


Web 接続のリモート

サーバが WIn XP
 リモート デスクトップ Web 接続をインストール
 ms-its:C:\WINDOWS\Help\rdesktop.chm::/rdesktop_install_Webcli.htm
外部にサーバを公開する
 http://www.aterm.jp/function/guide12/model/190/k/index.html
http://(サーバ名)/tsweb/

Web 経由の場合は,サーバ名を入力



  にほんブログ村 IT技術ブログへ


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


CListCtrl::GetItemCount では行数



  にほんブログ村 IT技術ブログへ


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



  にほんブログ村 IT技術ブログへ


ビルドエラー

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 を終了することにより対応.



  にほんブログ村 IT技術ブログへ



    top

    %d人のブロガーが「いいね」をつけました。