ホーム » 2010 (ページ 3)
年別アーカイブ: 2010
「無効な引数が発生しました。」
MFC 7.1 以降,AfxThrowInvalidArgException が呼ばれるようになっている
C:\Program Files\Microsoft Visual Studio\VC98\MFC\Include\AfxColl.inl Line 96
_AFXCOLL_INLINE DWORD& CDWordArray::ElementAt(int nIndex)
{ ASSERT(nIndex >= 0 && nIndex < m_nSize);
return m_pData[nIndex]; }
C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include\AfxColl.inl Line 126
_AFXCOLL_INLINE DWORD& CDWordArray::ElementAt(INT_PTR nIndex)
{ ASSERT(nIndex >= 0 && nIndex < m_nSize);
if( nIndex < 0 || nIndex >= m_nSize )
AfxThrowInvalidArgException();
return m_pData[nIndex]; }
—————————
App
—————————
無効な引数が発生しました。
—————————
OK
—————————
nIndex が配列の範囲を超えている場合に ASSERT .
2010/06/15 追記
VC8 AtlSimpStr.h Line 389
XCHAR operator[]( __in int iChar ) const
{
ATLASSERT( (iChar >= 0) && (iChar <= GetLength()) ); // Indexing the ” is OK
if( (iChar < 0) || (iChar > GetLength()) )
AtlThrow(E_INVALIDARG);
return( m_pszData[iChar] );
}
—————————
App
—————————
パラメータが間違っています。
—————————
OK
—————————
MSB6006
ビルドで MSB6006 のエラーが発生するようになってしまった.
—— ビルド開始: プロジェクト: XxxXxXxx, 構成: Release x64 ——
XxxXxXxx.vcxproj -> \XxxXXDocumentsXxxxxxxXXXXXxxXxXxxx64_R10XxxXxXxx.exe
—— ビルド開始: プロジェクト: XxxXxXxx, 構成: Release Win32 ——
XxxXxXxx.vcxproj -> \XxxXXDocumentsXxxxxxxXXXXXxxXxXxxx86_R10XxxXxXxx.exe
C:Program Files (x86)MSBuildMicrosoft.Cppv4.0Microsoft.CppCommon.targets(562,5): error MSB6006: "mt.exe" はコード 31 を伴って終了しました。
========== ビルド: 2 正常終了、1 失敗、0 更新不要、0 スキップ ==========
リビルドしても効果なし.
ファイルサーバも含め再起動をかけたら正しくビルドできるようになった.
explorer コマンドラインオプション
explorer のコマンドラインオプション
http://support.microsoft.com/kb/314853/ja
explorer コマンドラインオプション
Visual Style を無効に
ダイアログ上のボタンなどの Visual Style を無効に
BOOL DisableVisualStyle (CWnd* wnd)
//************************************************************************************************** // ファイル名 :HelpVSty.hxx // 機能名 :ビジュアルスタイルヘルパ Visual Style 関数の簡略化 // 作成者 : // 作成年月日 :’09/07/02 // 変更履歴 :’09/07/02 //************************************************************************************************** #ifndef _INC_H_HELP_THEME_API #define _INC_H_HELP_THEME_API #include <AfxWin.h> //******************************************************************************* // 関数名 :SetWindowTheme // 作成日 :’09/07/02 //******************************************************************************* inline HRESULT Hlp_SetWindowTheme (HWND hwnd,LPCWSTR pszSubAppName,LPCWSTR pszSubIdList) { HMODULE hDll = ::LoadLibrary(_T("UxTheme.dll")) ; if (hDll == NULL) { return !S_OK ; } HRESULT (WINAPI *pfSetWindowTheme)(HWND,LPCWSTR,LPCWSTR) = NULL ; (FARPROC&)pfSetWindowTheme = ::GetProcAddress(hDll,("SetWindowTheme")) ; HRESULT res = !S_OK ; if (pfSetWindowTheme != NULL) { res = pfSetWindowTheme(hwnd,pszSubAppName,pszSubIdList) ; } ::FreeLibrary(hDll) ; return res ; } //******************************************************************************* // 関数名 :Visual Style を OFF に // 作成日 :’09/07/02 //******************************************************************************* inline BOOL DisableVisualStyle (CWnd* wnd) { if (wnd == NULL) { return FALSE ; } if (wnd->m_hWnd == NULL) { return FALSE ; } #ifdef __ATLBASE_H__ { // コモンコントロールのバージョンをチェック DWORD ccMajor = 0 ; DWORD ccMinor = 0 ; AtlGetCommCtrlVersion(&ccMajor,&ccMinor) ; if (ccMajor < 6) { return TRUE ; } } #endif HRESULT res = !S_OK ; res = ::Hlp_SetWindowTheme(wnd->GetSafeHwnd(), L" ", L" ") ; return (res == S_OK) ; } #endif
コンボボックスの高さ指定
//******************************************************************************* // 関数名 :コンボボックスの高さを,親ウィンドウの下に合わせる // 作成日 :’09/07/01 //******************************************************************************* #ifndef CBM_FIRST // C:Program Files (x86)Microsoft SDKsWindowsv7.0AIncludeCommCtrl.h #define CBM_FIRST 0x1700 // Combobox control messages #define CB_SETMINVISIBLE (CBM_FIRST + 1) #define CB_GETMINVISIBLE (CBM_FIRST + 2) #define CB_SETCUEBANNER (CBM_FIRST + 3) #define CB_GETCUEBANNER (CBM_FIRST + 4) #endif BOOL FitDropHeight (CComboBox* ctrl,CWnd* parent) { if (ctrl == NULL) { return FALSE ; } if (ctrl->m_hWnd == NULL) { return FALSE ; } CRect tRect ; ctrl->GetWindowRect (&tRect) ; parent->ScreenToClient(&tRect) ; CRect pRect ; parent->GetClientRect(&pRect) ; tRect.bottom= pRect.bottom ; ctrl->MoveWindow(&tRect) ; // ここから上は,Visual Style が無効な exe の時に動作する { // ここから下は,Visual Style が有効な場合に必要 MoveWindow では変更されない? int minV = tRect.Height()/ctrl->GetItemHeight(0) ; if (minV >= 3) { minV-= 2 ; } if (minV <= 0) { minV = 1 ; } ctrl->SendMessage(CB_SETMINVISIBLE,minV) ; } return TRUE ; }
CB_SETCUEBANNER
CComboBox::SetCueBanner
Windows Vista コントロールの拡張
Windows Vista コモン コントロールの作成要件
サポートされなくなった ANSI API
x86 プロジェクトの x64 へのコピー
VC 6 以前から使用しているプロジェクトを,64 ビット用にコピーしてビルドすると以下のエラーになることがある.
1>—— ビルド開始: プロジェクト: Project, 構成: Release x64 ——
1>.x64_R10ProjectA.obj : fatal error LNK1112: モジュールのコンピューターの種類 ‘x64’ は対象コンピューターの種類 ‘X86’ と競合しています。
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
「プロジェクトのプロパティページ」の「構成プロパティ」-「リンカ」-「コマンドライン」の「追加オプション」にある "/MACHINE:I386" を削除する.
MFC ファイルハンドラの登録で MSB3075
ビルド時に以下のエラーとなる.
—— ビルド開始: プロジェクト: ???Handlers, 構成: Debug Win32 ——
???Handlers.vcxproj -> C:\Users\???\Documents\Visual Studio 2010\Projects\???\Debug\???Handlers.dll
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(732,5): warning MSB3075: コマンド “regsvr32 /s “C:\Users\???\Documents\Visual Studio 2010\Projects\???\Debug\???Handlers.dll”” はコード 5 で終了しました。このコマンドを実行するための十分な権限があるか確認してください。
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(744,5): error MSB8011: 出力の登録に失敗しました。ユーザーごとのリダイレクトを有効にするか、引き上げられたアクセス許可を使用して、コマンド プロンプトからコンポーネントを登録してください。
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
VS 2010 を「管理者として実行」して起動する.
または,「管理者として実行」した「コマンドプロンプト」での「RegSvr32」.
通常の「コマンドプロンプト」では以下のエラーとなる.
[Window Title]
RegSvr32
[Content]
モジュール “C:\Users\???\Documents\Visual Studio 2010\Projects\???\Debug\???Handlers.dll” は読み込まれましたが、DllRegisterServer への呼び出しはエラー コード 0x80070005 により失敗しました。
この問題の詳細については、エラー コードを検索語として入力してオンラインで検索してください。
レジストリ キーのオープンエラー
レジストリエディタで削除できないキーができてしまった.
[Window Title]
キーのオープン エラー
[Content]
・・・・….・・・・・・・・・笶,cF 潺ィ$<1S を開けません。
エラーによりこのキーを開けません。
詳細: 指定されたファイルが見つかりません。
[OK]
原因は,AfxGetApp()->m_pszProfileName をいじっていた関係で,
OpenMP を利用した時のバグでごみが設定された.
対応には,RegDelNull.exe を利用.
http://technet.microsoft.com/ja-jp/sysinternals/default.aspx
http://technet.microsoft.com/ja-jp/sysinternals/bb545027.aspx
http://technet.microsoft.com/ja-jp/sysinternals/bb897448(en-us).aspx
https://docs.microsoft.com/ja-jp/sysinternals/downloads/regdelnull
RegDelNull の使い方
削除したいキー名は "HKEY_CURRENT_USER\Software\???\???\_"
環境は,Windows 7
- コマンドプロンプトを管理者として実行.
- C:\Windows\system32> C:\Users\…\Regdelnull\RegDelNull.exe hkcu\Software\???\???\_
- 削除するか聞いてくるので,必要に応じて y
2021/11
レジストリエディタ 削除中にエラーが発生しました
Microsoft Touch Pack
BAMBOO CTH-460 では,インストールできない.
BAMBOO でのイベント
wacom Touch
http://www.wacomeng.com/touch/index.html
MFC 10 再起動マネージャ
再起動マネージャのサポートの追加
http://msdn.microsoft.com/ja-jp/library/dd465232(v=VS.100).aspx
CXxxxApp::CXxxxApp()
{
#if (_MFC_VER >= 0x0A00)
m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_ALL_ASPECTS ;
#endif
}
AppCore.cpp CWinApp::CWinApp(LPCTSTR lpszAppName)
m_nAutosaveInterval = 5 * 60 * 1000; // default autosave interval is 5 minutes (only has effect if autosave flag is set)
2021/11
https://mish.myds.me/wordpress/dev/2021/11/19/restart-manager/
VC++ 2010 VCReDist_??.exe
VC++ 2010 の VCReDist の場所
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\vcredist_x86
または,
VCReDist_x86
VCReDist_x64
X02T メモ
「スタート」-「設定」-「個人」-「電話」-「サービス」タブ-「転送電話」内
Wi-Fi 接続中の SoftBank メールの送受信など
一時的に止めないと,Wi-Fiが優先される
設定などで,自動的に起動(Power ON)させることは可能か?
その様な機能はない
SoftBank メールの,「メール振り分け設定」
ドメイン指定は不可
10 件まで
SoftBank メールの「未読」が常に1つ存在する現状の対応方法としては,ハードリセットが必要
HKEY_LOCAL_MACHINESoftwareArcsoftArcSoft MMS UAConfigUI の MMSUnreadCount を 0 に
TRE Ver.0.82 を利用(0.90 はインストールできなかった)
CCriticalSection と CMutex
P4 | VirtualPC | Xeon | |
CCriticalSection | 734 | 160 | 94 |
*1 | 78 | 20 | 15 |
CMutex | 8200 | 710 | 1140 |
*1 | 950 | 250 | 437 |
Profile INI | 2900 | 950 | 920 |
Reg | 2100 | 570 | 740 |
ElapseTick et_cs ;
{
CCriticalSection cs ;
for (int index=0 ; index<500000 ; index++) {
//CCriticalSection cs ;
cs.Lock() ;
cs.Unlock() ;
}
}
DWORD e_cs = et_cs.GetElapse() ;
ElapseTick et_me ;
{
CMutex mt ;
for (int index=0 ; index<500000 ; index++) {
mt.Lock() ;
mt.Unlock() ;
}
}
DWORD e_me = et_me.GetElapse() ;
ElapseTick et_pr ;
{
Profile profile ;
for (int index=0 ; index<500000 ; index++) {
int data = profile.GetInt(_T("Test"),_T("Test"),100) ;
}
}
DWORD e_pr = et_pr.GetElapse() ;
OpenMP エラー 1002
—————————
致命的なユーザー エラー 1002:
—————————
同一名の 1 つで ‘#pragma omp critical’ が不適切に入れ子にされています
2.9 ディレクティブの入れ子
局所的になる様に,呼び出し元での “#pragma omp critical” を削除.
class Profile { ... protected: LPCTSTR LastProfileName ; CString C_T_ProfileName ; ... } ; BOOL Profile::SaveProfileName(void) { CWinApp* app = AfxGetApp() ; if (app== NULL) { return FALSE ; } LastProfileName = AfxGetApp()->m_pszProfileName ; AfxGetApp()->m_pszProfileName = C_T_ProfileName ; return TRUE ; } BOOL Profile::LoadProfileName(void) { AfxGetApp()->m_pszProfileName = LastProfileName ; return TRUE ; }
omp critical ではなく,MFC 同期クラスを使用する様に変更.
// 以下は,テスト用のコード BOOL Profile::?et??? (LPCTSTR lpszSection,LPCTSTR lpszEntry,...) { ... CMutex m(FALSE,MN_LPN) ; m.Lock() ; // return ???Profile??? (lpszSection, lpszEntry, ...) ; BOOL ret = ???Profile??? (lpszSection, lpszEntry, ...) ; m.Unlock() ; return ret ; } // MFC 同期クラスの呼出しはコストがかからない様に修正する