ホーム » VC (ページ 12)

VC」カテゴリーアーカイブ

2024年11月
 12
3456789
10111213141516
17181920212223
24252627282930

カテゴリー

アーカイブ

ブログ統計情報

  • 99,460 アクセス


Clipboard Viewer

MSDN 2001.10 Creating a Clipboard Viewer Window
mk:@MSITStore:C:\Program%20Files\Microsoft%20Visual%20Studio\MSDN\2001OCT\1041\ipc.chm::/hh/winbase/clipbrd_19dj.htm

MSDN Using the Clipboard

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

起動時のエラー

Point.hxx
VT が合っていない
include が間違っていて,VTABLE が合ってない.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

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

BDH_Modify クラス

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

VC6→VC8→MBCS→UNICODE C4651

c:\….\masteddg.cpp(4) : warning C4651: ‘/D_MBCS’ がプリコンパイル済みヘッダーに定義されていますが、現在のコンパイル処理には定義されていません。

vcproj 内の “;_AFXDLL;_MBCS;$(NoInherit)” を削除
 _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 以降は <親またはプロジェクトの既定値から継承> にする.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

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

 
https://dev.mish.work/Iwao/Doc/other/vs/

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

ビルドエラー 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 を終了することにより対応.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

CHttpFile を利用した読込みで,…

CHttpFile を利用した読込みで,接続されていなくても ReadString でそれなりに戻ってくることがあった?

以下は,あるサイトが応答しているかどうかを確認するコードの断片.
  #define W_M_P_C_ _T(“http://www.??????.com/”)
  CString rData ;
  if (!canConnectWeb && InetFile::Read(W_M_P_C_,rData)) {
    if (rData.Find(K_M_P_C_) > 0) { canConnectWeb = TRUE ; }
    connectdSite = W_M_P_C_ ;
    }

アクセスする url に,ダブらないような情報を付加することで回避.
  CString para = _T(“?_q_=”) + ::ToString(::GetTickCount()) ;
  if (!canConnectWeb && InetFile::Read(W_M_P_C_+para,rData)) {
    if (rData.Find(K_M_P_C_) > 0) { canConnectWeb = TRUE ; }
    connectdSite = W_M_P_C_ ;
    }

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

Dependency Walker , Spy , …

Dependency Walker
 http://www.dependencywalker.com/

Spy++ 8.0
 2005-09-28 10:07 140,463 spyxx.chm
 2005-12-01 03:24 496,824 spyxx.exe
 2005-09-23 02:13 73,728 spyxxhk.dll
 VC++ 2005 SP1 再頒布可能パッケージ
Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

LBS_HASSTRINGS を忘れると…

オーナ描画リストボックスで,GetText を呼出した時
LBS_HASSTRINGS を忘れると
コントロールの LBS_HASSTRINGS が指定されていない.


Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

コンソール AP リンクエラー

——————–構成: XXxxXXxx – Win32 Debug——————–
コンパイル中…
XXxxXXxx.cpp
リンク中…
nafxcwd.lib(thrdcore.obj) : error LNK2001: 外部シンボル “__endthreadex” は未解決です
nafxcwd.lib(thrdcore.obj) : error LNK2001: 外部シンボル “__beginthreadex” は未解決です
Debug/XXxxXXxx.exe : fatal error LNK1120: 外部参照 2 が未解決です。
link.exe の実行エラー

XXxxXXxx.exe – エラー 3、警告 0

「C/C++」-「コード生成」-「使用するランタイムライブラリ」を 「マルチスレッド (デバッグ)」 に


 
——————–構成: XXxxXXxx – Win32 Debug——————–
コンパイル中…
XXxxXXxx.cpp
リンク中…
nafxcwd.lib(afxmem.obj) : error LNK2005: “void __cdecl operator delete(void *)” (??3@YAXPAX@Z) はすでに LIBCMTD.lib(dbgdel.obj) で定義されています
Debug/XXxxXXxx.exe : fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました
link.exe の実行エラー

XXxxXXxx.exe – エラー 2、警告 0

http://support.microsoft.com/kb/148652/ja
Visual C++ で CRT ライブラリおよび MFC ライブラリのリンク順序が正しくないときに LNK2005 エラーが発生する

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

いつも場所を忘れるので

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

VC 2010 $(IncludePath)

Microsoft.Cpp.Xxxx.user.props の場所
C:\Users\(UserName)\AppData\Local\Microsoft\MSBuild\v4.0
http://msdn.microsoft.com/ja-jp/library/ee855621.aspx

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

VC 6 で GlobalMemoryStatusEx

#if(_MFC_VER >= 0x0700)
  #include	<WinBase.h>
#else

#include	<Windows.h>
#include	<TChar.h>

//  WinBase.h より
typedef struct _MEMORYSTATUSEX {
  DWORD    dwLength;
  DWORD    dwMemoryLoad;
  DWORDLONG  ullTotalPhys;
  DWORDLONG  ullAvailPhys;
  DWORDLONG  ullTotalPageFile;
  DWORDLONG  ullAvailPageFile;
  DWORDLONG  ullTotalVirtual;
  DWORDLONG  ullAvailVirtual;
  DWORDLONG  ullAvailExtendedVirtual;
  } MEMORYSTATUSEX, *LPMEMORYSTATUSEX;

typedef	BOOL	(WINAPI *PFnGlobalMemoryStatusEx)	(LPMEMORYSTATUSEX lpBuffer) ;

////
//*******************************************************************************
//	クラス名:Kernel32.DLL ラッパー
//	作成日	:’10/09/16
//*******************************************************************************
class	WrapKernel32	{
public:
      WrapKernel32	() ;
  virtual ~WrapKernel32	() ;
public:
  virtual	BOOL	GlobalMemoryStatusEx(LPMEMORYSTATUSEX lpBuffer) ;
protected:
  HMODULE   HLibrary ;
  PFnGlobalMemoryStatusEx  FnGlobalMemoryStatusEx ;
  } ;

////
//*******************************************************************************
//	関数名	:コンストラクタ/デストラクタ
//	作成日	:’10/09/16
//*******************************************************************************
inline
WrapKernel32::WrapKernel32	()
{
  HLibrary = NULL ;
  FnGlobalMemoryStatusEx = NULL ;
  HLibrary = ::LoadLibrary	(TEXT("Kernel32.DLL")) ;
  if (HLibrary == NULL)	{	return ;	}
  FnGlobalMemoryStatusEx = (PFnGlobalMemoryStatusEx) GetProcAddress(HLibrary,("GlobalMemoryStatusEx")) ;
  }

inline
WrapKernel32::~WrapKernel32	()
{
  if (HLibrary != NULL) {
    FreeLibrary(HLibrary) ;
    }
  }

////
//*******************************************************************************
//	関数名	:それぞれの呼び出し
//	作成日	:’10/09/16
//*******************************************************************************
inline
BOOL	WrapKernel32::GlobalMemoryStatusEx	(LPMEMORYSTATUSEX lpBuffer)
{
  if (FnGlobalMemoryStatusEx != NULL)	{
    return	FnGlobalMemoryStatusEx	(lpBuffer) ;
    }
  return	FALSE ;
  }

inline
BOOL	WINAPI	GlobalMemoryStatusEx(LPMEMORYSTATUSEX lpBuffer)
{
  if (lpBuffer->dwLength != sizeof(MEMORYSTATUSEX)) {
    #ifdef	_DEBUG
      afxDump << _T("GlobalMemoryStatusEx ... dwLength != ") << sizeof(MEMORYSTATUSEX)
            << _T("  ") << lpBuffer->dwLength << _T("\r\n") ;
    #endif
    }
  WrapKernel32	wk32 ;
  return	wk32.GlobalMemoryStatusEx(lpBuffer) ;
  }

#endif	//	(_MFC_VER >= 0x0700)

WrpKrnl3.hxx

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

「応答なし」になり難くする

//*******************************************************************************
// 関数名 :時間がかかる時に,応答なしにならない様にする
// 作成日 :’07/10/05
//*******************************************************************************
BOOL WaitPeek (void)
{
  MSG msg ;
  ::PeekMessage(&msg,NULL,0,0,PM_NOREMOVE) ;
  return TRUE ;
  }

//*******************************************************************************
// 関数名 :時間がかかる時に他に制御を回す
// 作成日 :’95/12/05
//*******************************************************************************
BOOL Wait (void)
{
  MSG msg ;
  for (int msgCnt=0 ; msgCnt < 1000 ; msgCnt++) {
    if (::PeekMessage(&msg ,NULL,0,0,PM_REMOVE)) {
      if (msg.message == WM_QUIT) {
        return FALSE ;
        }
      ::TranslateMessage(&msg) ;
      ::DispatchMessage(&msg) ;
      continue ;
      }
    break ;
    }
  return TRUE ;
  }


2011/11/02 追加
//*******************************************************************************
// 関数名 :時間がかかった時に,不要なイベントをスキップする
// 作成日 :’11/03/31
//*******************************************************************************
inline
BOOL EatMessage (const HWND wnd=NULL,const UINT skipWM=WM_TIMER)
{
  MSG eatMsg;
  while(::PeekMessage(&eatMsg,wnd,skipWM,skipWM,PM_REMOVE)) ;
  return TRUE ;
  }


HelpWait.hxx

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

Shell_NotifyIcon

SDK32: 通知領域にアイコンが登録されないことがある
http://support.microsoft.com/kb/418138/ja

マウスの位置の取得
BOOL ::GetCursorPos(LPPOINT lpPoint) ;

http://cid-535f5973454c1292.office.live.com/self.aspx/.Public/MFC/NotifyI.hxx.txt

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

タスクバーのドキュメント

mk:@MSITStore:X:MSDNShellcc.chm::/platform/Shell/Shell_Int/Taskbar.htm
http://msdn.microsoft.com/ja-jp/library/cc144179(VS.85).aspx

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

hdc が拡張メタファイルのデバイスコンテキスト?

hdc が拡張メタファイルのデバイスコンテキストかどうかを調べるには、GetObjectType 関数
GetDeviceCaps
GetObjectType

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

マルチバイト→UNICODE

「構成プロパティ」-「全般」-「文字セット」を「マルチバイト...」から「UNICODE...」に変更すると,以下のエラーになることがある.
msvcrtd.lib(wcrtexew.obj) : error LNK2019: 未解決の外部シンボル _wWinMain@16 が関数 ___tmainCRTStartup で参照されました。

vcproj をエディタなどで開き,";_MBCS;$(NoInherit)" を削除.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

VC 8 double の配列をメモリダンプ

VC 8 で座標のデータをダンプ

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

VC 6 プロファイラを有効に

VC 6 で「プロファイルを行う」を有効にする設定
「プロジェクトの設定」-「リンク」タブ-カテゴリ「一般」のダイアログで,「Alt」+「E」
または,プロジェクトのオプションに "/Profile" を追加.

特定のモジュールに限定
「プロファイル」-「詳細設定」で
/EXCALL /INC ComPro01.obj /inc ComUse02.obj

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.