スリープする様になった?
設定を変更したつもりはないのに,…
それと,いじってしまったのかはっきりしないが,「休止状態」がなくなった.
スリープと休止状態: よく寄せられる質問
VHD の圧縮でエラー 67
DP340XPP 仮想環境
DP340XPP を移行した Virtual PC 内の環境
「Luna が有効にならない」は特に困るわけではない.Disk2VHD を使用した時はちゃんと表示できてたのにな~.
1.ブート時のChkDsk
2.Outlook Express
3.プロテクトデバイスを使用する AP
4.不要なファイルを整理,削除
5.ディスク クリーンアップ
6.デフラグ 1 回目
7.デフラグ 2 回目 ここでブルースクリーン
イベントビューアで Disk のエラーが多数あり
8.ChkDsk
9.デフラグ
10.PreCompact.exe
11.VHD の圧縮
DP340XPP-0.vhd 64.3 GB → 56.4 GB
DP340XPP-1.vhd 24.6 GB → 22.8 GB
DP340XPP 続き
「統合コンポーネントのインストール」が出来ない状態からの続き.
途中で,ロールバックしている様な動きだったので,…
デバイスマネージャで,うまく認識していないデバイスを削除(3 つあった).
今度は,インストールOK.
画面の解像度や色数が低い(VGA 程度).
再起動で,通常の設定が可能になった.
ただ,ホストとのマウスの行き来が出来ない.
一度,「プログラムの追加と削除」から「統合コンポーネント」をアンインストール.
再度,「統合コンポーネント」をインストール.
マウスの動作やフルスクリーンなど思った動作にはなった.
DP340XPP その後
不安定になっていた,DP340XPP を VHD にするために,HD を整理.
但し,不定期にリブートがかかる(どうもブルースクリーンになっている)ことがあるので,大きくて他の環境に存在してもいいファイルを他環境に移動.
本来はディスクのクリーンアップやデフラグなどを行った方が良かったのかもしれないが,環境が不安定なためスキップ.
Disk2VHD
開始したのが 05/02 21:00 頃.C ドライブだけで,05/03 3:00 頃となったためそのまま放置.
05/03 8:30 頃見ると,リブートがかかっている.
VHD のタイムスタンプが 5:08 ,リブートがかかった時間は 5:30 頃と思われセーフ(イベントビューアで確認).
仮想マシンを作成して,2 つの VHD を割り当て.
仮想マシンとして起動.
ライセンス認証.
ここまでは良かったが,「統合コンポーネントのインストール」が出来ない.
続きは今度,…
MS11-025 の影響?
2011/06/16 追記
2011/06/15 に MS11-025 が更新されたので,以下は古い情報になります.
どちらかというと,以下の影響
Microsoft Visual C++ 2005 Service Pack 1 再頒布可能パッケージ (KB2467175)
Microsoft Visual C++ 2008 Service Pack 1 再頒布可能パッケージ (KB2467174)
MS11-025
Win 7 で,AFX_IDS_~ の表示が英語になってしまう.
Open , Save As , 印刷プレビューのボタン
All Files (*.*)
Failed to create empty document.
C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include\l.jpn
AppCore.cpp の _AfxLoadLangDLL と思うが,うまく確かめられない.
ここが呼ばれる前のコードを切り出して lcid は 1041 で,JPN が求まっている所までは確認.
デバッグ版では,MFC90JPN.dll がロードされている(デバッガやリソースモニターで確認).
C:\Windows\WinSxS\x86_microsoft.vc90.mfcloc_1fc8b3b9a1e18e3b_9.0.30729.5570_none_4977a39175471b31\MFC90JPN.DLL
リリース版に,デバッグ情報を付加して動作を見ると
SXS: Invalid parameter(s) passed to FindActCtxSection*()
dwFlags = 0x00000001
ReturnedData = 0018F58C
->cbSize = 0
FindActCtxSection を検索すると,
Visual C++ MFC and ATL FindActCtxSection
そこからのリンクは Martin’s Blog 自動翻訳
_AfxLoadLangDLL のコードを比べると,
Microsoft Visual Studio 2005 Service Pack 1 (KB2465367) 適用前
static HINSTANCE _AfxLoadLangDLL(LPCTSTR pszFormat, LPCTSTR pszPath, LCID lcid)
{
…
int ret;
ATL_CRT_ERRORCHECK_SPRINTF(ret = _sntprintf_s(szLangDLL,_countof(szLangDLL),
_countof(szLangDLL)-1,pszFormat,pszPath,szLangCode));
if(ret == -1 || ret >= _countof(szLangDLL)) {
ASSERT(FALSE);
return NULL;
}
hInstance = ::LoadLibrary(szLangDLL);
return hInstance;
}
適用後
static HINSTANCE _AfxLoadLangDLL(LPCTSTR pszFormat, LPCTSTR pszPath, LCID lcid)
{
…
int ret;
ATL_CRT_ERRORCHECK_SPRINTF(ret = _sntprintf_s(szLangDLL,_countof(szLangDLL),
_countof(szLangDLL)-1,pszFormat,pszPath,szLangCode));
if(ret == -1 || ret >= _countof(szLangDLL)) {
ASSERT(FALSE);
return NULL;
}
TCHAR *pszFilename = ::PathFindFileName(szLangDLL);
ACTCTX_SECTION_KEYED_DATA data;
if (FindActCtxSectionString( FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX, NULL,
ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION,pszFilename, &data) ) {
// Load using the dll name only…
hInstance = ::LoadLibraryEx(pszFilename, NULL, LOAD_LIBRARY_AS_DATAFILE);
}
else { // Load using the full path…
hInstance = ::LoadLibraryEx(szLangDLL, NULL, 0);
}
return hInstance;
}
FindActCtxSectionString によって,Win 2K では動作しなくなるらしい.
2011/05/10 追記
Ted’s Blog Fixing problems with FindActCtxSectionString in MFC security updates
static.exe での Win2K 対応と,ACTCTX_SECTION_KEYED_DATA の初期化など
比べてもあまり意味はないが,VC 2010 では
static HINSTANCE _AfxLoadLangDLL(LPCTSTR pszFormat, LPCTSTR pszPath, LCID lcid)
{
TCHAR szLangDLL[_MAX_PATH+14];
TCHAR szLangCode[4];
HINSTANCE hInstance;
if (lcid == LOCALE_SYSTEM_DEFAULT) {
Checked::tcscpy_s(szLangCode, _countof(szLangCode), _T(“LOC”));
}
else {
int nResult;
nResult = ::GetLocaleInfo(lcid, LOCALE_SABBREVLANGNAME, szLangCode, 4);
if (nResult == 0)
return NULL;
ASSERT( nResult == 4 );
}
int ret;
ATL_CRT_ERRORCHECK_SPRINTF(ret = _sntprintf_s(szLangDLL,_countof(szLangDLL),
_countof(szLangDLL)-1,pszFormat,pszPath,szLangCode));
if(ret == -1 || ret >= _countof(szLangDLL)) {
ASSERT(FALSE);
return NULL;
}
hInstance = ::LoadLibraryEx(szLangDLL, NULL, 0);
return hInstance;
}
pszPath は “C:\Windows\system32\” になっている.
Visual Studio 2010 SP1
文字列の輪郭を DXF に
ウィンドウを透明に
SetLayeredWindowAttributes
#ifndef _INC_H_HELP_USER_DLL
#define _INC_H_HELP_USER_DLL
#include <WinUser.h>
////
//*******************************************************************************
// 関数名 :SetLayeredWindowAttributes
// 作成日 :’11/01/26
//*******************************************************************************
// C:\Program Files\Microsoft Visual Studio .NET\Vc7\PlatformSDK\Include\WinUser.h より
#ifndef LWA_COLORKEY
WINUSERAPI BOOL WINAPI SetLayeredWindowAttributes(HWND hwnd,COLORREF crKey,BYTE bAlpha,DWORD dwFlags) ;
#define LWA_COLORKEY 0x00000001
#define LWA_ALPHA 0x00000002
inline
BOOL Hlp_SetLayeredWindowAttributes (HWND hwnd,COLORREF crKey,BYTE bAlpha,DWORD dwFlags)
{
HMODULE hDll = ::LoadLibrary(_T(“User32.dll”)) ;
if (hDll == NULL) { return FALSE ; }
HRESULT (WINAPI *pfSetLayeredWindowAttributes)(HWND,COLORREF,BYTE,DWORD) = NULL ;
(FARPROC&)pfSetLayeredWindowAttributes = ::GetProcAddress(hDll,(“SetLayeredWindowAttributes”)) ;
BOOL res = FALSE ;
if (pfSetLayeredWindowAttributes != NULL) {
res = pfSetLayeredWindowAttributes(hwnd,crKey,bAlpha,dwFlags) ;
}
::FreeLibrary(hDll) ;
return res ;
}
#define Use_Help
#endif
////
//*******************************************************************************
// 関数名 :SetLayeredWindowAttributes
// 作成日 :’11/01/26
//*******************************************************************************
#ifndef WS_EX_LAYERED
#define WS_EX_LAYERED 0x00080000
#endif
inline
BOOL SetLayeredWindowAttributes(CWnd*wnd,COLORREF key,BYTE alpha=128,DWORD flags=LWA_COLORKEY)
{
if (wnd == NULL) { return FALSE ; }
HWND hwnd = wnd->GetSafeHwnd() ;
if (hwnd == NULL) { return FALSE ; }
BOOL result = FALSE ;
LONG exStyle=::GetWindowLong(hwnd,GWL_EXSTYLE) ;
::SetWindowLong(hwnd,GWL_EXSTYLE,exStyle|WS_EX_LAYERED) ;
#ifdef Use_Help
result = ::Hlp_SetLayeredWindowAttributes(hwnd,key,alpha,flags) ;
#else
result = ::SetLayeredWindowAttributes(hwnd,key,alpha,flags) ;
#endif
return result ;
}
#endif
MFC 6 で CHARFORMATW
SetSelectionCharFormat では,CHARFORMATA になっている様なので
CString faceName= FontFace.GetFaceName() ;
{
CHARRANGE selCR ;
m_CtrlRichEdit.GetSel(selCR) ;
{
m_CtrlRichEdit.SetSel(0,-1) ;
#ifdef _UNICODE
CHARFORMATW cf ; ::ZeroMemory(&cf,sizeof(CHARFORMATW)) ; cf.cbSize = sizeof(CHARFORMATW) ;
#else
CHARFORMAT cf ; ::ZeroMemory(&cf,sizeof(CHARFORMAT)) ; cf.cbSize = sizeof(CHARFORMAT) ;
#endif
::TcsNCpy(cf.szFaceName,LF_FACESIZE-1,faceName,LF_FACESIZE-1) ;
cf.dwMask = CFM_FACE ;
#ifdef _UNICODE
m_CtrlRichEdit.SendMessage(EM_SETCHARFORMAT,SCF_SELECTION,(LPARAM)&cf) ;
#else
m_CtrlRichEdit.SetSelectionCharFormat(cf) ;
#endif
}
m_CtrlRichEdit.SetSel(selCR) ;
}
System Volume Information フォルダ
System Volume Information フォルダへアクセスする方法
http://support.microsoft.com/kb/309531/ja
https://www.betaarchive.com/wiki/index.php/Microsoft_KB_Archive/309531
CRichEditCtrl の使用
ダイアログでCRichEditCtrlを使用する場合,InitInstanceなど,ダイアログ表示前にAfxInitRichEdit を呼び出す必要あり(これがないとダイアログが表示されない)
http://msdn.microsoft.com/ja-jp/library/76a787xf(VS.80).aspx
BOOL CXxxxApp::InitInstance()
{
AfxEnableControlContainer();
AfxInitRichEdit() ;
…
}
VC7 以降は AfxInitRichEdit2
http://msdn.microsoft.com/ja-jp/library/tt1cfb9f(v=VS.80).aspx
WinCtrl4.cpp より
BOOL PASCAL AfxInitRichEdit()
{
_AFX_RICHEDIT_STATE* pState = _afxRichEditState;
if (pState->m_hInstRichEdit == NULL)
pState->m_hInstRichEdit = AfxCtxLoadLibraryW(L”RICHED32.DLL“);
return pState->m_hInstRichEdit != NULL;
}
BOOL PASCAL AfxInitRichEdit2()
{
_AFX_RICHEDIT_STATE* pState = _afxRichEditState;
if (pState->m_hInstRichEdit2 == NULL)
pState->m_hInstRichEdit2 = AfxCtxLoadLibraryW(L”RICHED20.DLL“);
return pState->m_hInstRichEdit2 != NULL;
}
RC 内のコントロールのクラス名 RichEdit20A , RichEdit20W
http://support.microsoft.com/kb/261171
VC6 UNICODE exe で,CRichEditCtrl から DDX で文字列を取得すると正しく取れない.
例えば”㎡㎥m” が “㎡?m” になってしまう.
RC のクラス名を “RICHEDIT” から “RichEdit20W” に変更して正しく取れる様になった.
”RichEdit20A” では,変わらず.
選択項目の変更の通知にはEN_SEL_CHANGEなど
これを使用する場合,OnInitDialogなどで,以下の様な呼び出しでの設定が必要.
long em = m_CtrlRichEdit.GetEventMask() ;
m_CtrlRichEdit.SetEventMask(em|ENM_SELCHANGE) ;
http://msdn.microsoft.com/ja-jp/library/bb774366.aspx
以下の様な方法で,FaceNameを使用可能
CHARFORMAT cf ;
::ZeroMemory(&cf,sizeof(CHARFORMAT)) ;
cf.cbSize = sizeof(CHARFORMAT) ;
m_CtrlRichEdit.GetSelectionCharFormat(cf) ;
… = cf.szFaceName ;
保存
http://msdn.microsoft.com/ja-jp/library/b0k0ywek(v=VS.80).aspx
GetGlyphOutline
Ask Dr. GUI #55
私のハートはいつもあなたに TrueType
http://msdn.microsoft.com/ja-jp/library/cc440969.aspx
Q243285: HOWTO: “Draw TrueType Glyph Outlines”
(http://support.microsoft.com/support/kb/articles/Q243/2/85.asp)
Q87115: HOWTO: “GetGlyphOutline() Native Buffer Format”
(http://support.microsoft.com/support/kb/articles/Q87/1/15.asp)
BrowseFile でファイル名を指定
Debug\EnvMove\RegExp\RegExpDg.cpp より
CString filter = _T(“登録ファイル (*.reg)|*.reg|All Files (*.*)|*.*||”) ;
BrowseFile bf ;
bf.SetFilter(filter) ;
bf.SetDialogIsSave() ;
bf.SetInitialFolder(comDoc) ;
bf.SetFileName(outFile) ;
bf.SetFileName(::FolderAddLastSP(comDoc)+::GetFileName(outFile)) ;
if (bf.Browse()) {
outFile = bf.GetSelectFile() ;
}
Remote Desktop Mobile を追加
MS_RDP_v6.5.cab
http://forum.xda-developers.com/showthread.php?p=3592033
http://forum.xda-developers.com/attachment.php?attachmentid=174226&d=1239213874
X02T にインストール.
コンピュータ名ではうまく接続できなかった.
IP アドレスによる指定では接続可能.