ホーム » メモ (ページ 16)

メモ」カテゴリーアーカイブ

2025年1月
 1234
567891011
12131415161718
19202122232425
262728293031  

カテゴリー

アーカイブ

ブログ統計情報

  • 103,470 アクセス


高 DPI – 3

Win 7 200 % で,コモンダイアログの表示が切れている?
VC 8 の exe では

VC 9 ?以降だと

保存ダイアログでは,

Win 10 では問題ない.


オーナードローリストボックスなどで,高さが足りないものがあった.
  「固定」となっているものがあったので,これは「可変」に.
  初期化動作で,文字により高さを設定する様に変更.
  {
    int itemH = 20 ;
    int textH = int(::GetTextHeight(wnd)*1.5) ;
    this->SetItemHeight(max(itemH,textH)) ;
    }


高 DPI – 1
高 DPI – 2

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

HVTR-BCTX3 , AVHD-VR2.0 追加

HVTR-BCTX3AVHD-VR2.0 を追加.
TV との接続ではなく,PC モニタ(21 インチ HDMI 接続)と接続.
特に問題なく視聴可能.


T90Chi に「テレリモ」と「テレプレ」をインストール.
DBR-T460 に録画しておいたビデオが再生できることを確認.
Wi-Fi 環境のせい?か,時々途切れることがある.
リンク速度は 100 Mbps あるが,受信速度が 10 Mbps を下回ると途切れるみたい.


MBP の VirtualBox の Win 10 で試すと,
「テレリモ」はインストールでき操作もできるが,「テレプレ」はインストールできなかった.


2016/06/23
昨日ちょっとわからなかったのが,DBR-T460 に録画したものの再生.
「ホーム」-「録画リスト」-「ホームネットワーク」で「DBR-T460」が表示される.


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

高 DPI – 2

CMetaFileDC::CreateEnhanced の lpBounds を指定していたが,うまくなかった様で NULL に.
また,これとは異なるが再生デバイスが異なる場合うまくなかったので,
 ENHMETAHEADER の rclFrame ではなく rclBounds に変更.


何を参考にしたのか不明だが,幅を求めるのに TEXTMETRIC だけを使用していた.幾つかあり.
CComboBox::SetDroppedWidth
CListBox::SetHorizontalExtent
CDC::GetTextExtent


高 DPI – 1
高 DPI – 3

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

WD Cloud その後

昨年の秋に追加した WD Cloud .
最近,気温が高くなってきて…

気温 + 25 ℃くらいになる様なので,扇風機で冷やしている.
ファンレスの場合これが心配.
別の WSS の NAS は,ファンがうるさくなるが 50 ℃になることはなかったと思う.


PC の D ドライブの 64 GB のファイルをコピーして,25 分位(42 MB).
ファイルをバックアップしていて,exe など数 MB のファイルの場合,極端に遅くなることがある.


Virtual PC の VHD を WD Cloud に置いての動作.
 「休止状態」にする時,うまく移行できない時が何度かあった.
 速度的にはローカルの HDD などと比べても遜色ない様に感じる.

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

KB3035583

GWX は何度も更新されていた.

対応方法が公開されたようではあるが,今の所見つけたのは「アップグレード開始後」の「キャンセル」.
このタイミングでは遅いと思うが…

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

_MBCS _tcspbrk

MBCS.exe で _tcspbrk を使用していて,ファイルパスの 0x5c の認識がうまくなかった.


_tcs… の関数を MBCS exe としてデバッガで見てみると
30: LPTSTR result1 = _tcschr (_T(“Test”),_T(‘s’)) ;
0040238A push 73h
0040238C push offset string “Test” (0048b0b0)
00402391 call @ILT+985(__tcschr) (004013de)
00402396 add esp,8
00402399 mov dword ptr [ebp-10h],eax
31: LPTSTR result2 = _tcsstr (_T(“Test”),_T(“sp”)) ;
0040239C push offset string “sp” (0048b0ac)
004023A1 push offset string “Test” (0048b0b0)
004023A6 call strstr (0042d170)
004023AB add esp,8
004023AE mov dword ptr [ebp-14h],eax
32: LPTSTR result3 = _tcspbrk(_T(“Test”),_T(“sp”)) ;
004023B1 push offset string “sp” (0048b0ac)
004023B6 push offset string “Test” (0048b0b0)
004023BB call strpbrk (0042d130)
004023C0 add esp,8
004023C3 mov dword ptr [ebp-18h],eax
33: size_t result4 = _tcsspn (_T(“Test”),_T(“sp”)) ;
004023C6 push offset string “sp” (0048b0ac)
004023CB push offset string “Test” (0048b0b0)
004023D0 call @ILT+1260(__tcsspn) (004014f1)
004023D5 add esp,8
004023D8 mov dword ptr [ebp-1Ch],eax


Afx.h をインクルードすると?
576: int CString::FindOneOf(LPCTSTR lpszCharSet) const

579: LPTSTR lpsz = _tcspbrk(m_pchData, lpszCharSet);
5F42E312 mov edx,dword ptr [lpszCharSet]
5F42E315 push edx
5F42E316 mov eax,dword ptr [this]
5F42E319 mov ecx,dword ptr [eax]
5F42E31B push ecx
5F42E31C call _tcspbrk (5f4012b0)
5F42E321 add esp,8
5F42E324 mov dword ptr [lpsz],eax
 
35: LPTSTR result1 = _tcschr (_T(“Test”),_T(‘s’)) ;
00401D14 push 73h
00401D16 push offset string “Test” (004230b0)
00401D1B call @ILT+485(__tcschr) (004011ea)
00401D20 add esp,8
00401D23 mov dword ptr [ebp-14h],eax
36: LPTSTR result2 = _tcsstr (_T(“Test”),_T(“sp”)) ;
00401D26 mov esi,esp
00401D28 push offset string “sp” (004230ac)
00401D2D push offset string “Test” (004230b0)
00401D32 call dword ptr [__imp__strstr (00426668)]
00401D38 add esp,8
00401D3B cmp esi,esp
00401D3D call _chkesp (0040e246)
00401D42 mov dword ptr [ebp-18h],eax
37: LPTSTR result3 = _tcspbrk(_T(“Test”),_T(“sp”)) ;
00401D45 mov esi,esp
00401D47 push offset string “sp” (004230ac)
00401D4C push offset string “Test” (004230b0)
00401D51 call dword ptr [__imp__strpbrk (0042666c)]
00401D57 add esp,8
00401D5A cmp esi,esp
00401D5C call _chkesp (0040e246)
00401D61 mov dword ptr [ebp-1Ch],eax
38: size_t result4 = _tcsspn (_T(“Test”),_T(“sp”)) ;
00401D64 push offset string “sp” (004230ac)
00401D69 push offset string “Test” (004230b0)
00401D6E call @ILT+655(__tcsspn) (00401294)
00401D73 add esp,8
00401D76 mov dword ptr [ebp-20h],eax
 

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

VC 11 以降の ODMenu

自前の UndoRedo テンプレートで,VC 11 以降メニューの表示が更新されなくなった.
対応は,アプリケーションクラスのヘッダで,ODMRoot.hxx のインクルードを追加すれば良い.


これとは別の動的なメニューも正しく表示できてないが,こちらはまだ原因を特定できてない.
CCmdUI::SetText

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

コンストラクタで static

次の様なクラスで,VC 14 ではコンストラクタ内の static を呼出した段階で止まってしまう?
VC 12 まででは OK .


  class T_static {
  public:
    T_static () ;
    } ;
  T_static::T_static ()
  {
    {
      static T_static root ;
      }
    std::tout << _T("T_static") << std::endl ;
    }


コンストラクタの初期化動作を次の様に変更.
  T_static::T_static ()
  {
    static bool Initialized = false ;
    if (!Initialized) {
      Initialized = true ;
      static T_static root ;
      }
    std::tout << _T("T_static") << std::endl ;
    }

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

VC 6 コンソール AP を VC 11 で…

VC 6 コンソール AP を順にアップしたプロジェクトを VC 11 でビルドすると,
—— すべてのリビルド開始: プロジェクト: T_DbgCls, 構成: Debug Win32 ——
T_DbgCls.cpp
_WIN32_WINNT not defined. Defaulting to _WIN32_WINNT_MAXVER (see WinSDKVer.h)
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\sal_supp.h(57):
  warning C4005: ‘__useHeader’ : マクロが再定義されました。
  c:\program files (x86)\microsoft visual studio 11.0\vc\include\sal.h(2872) :
    ’__useHeader’ の前の定義を確認してください
c:\program files (x86)\microsoft sdks\windows\v7.1a\include\specstrings_supp.h(77):
  warning C4005: ‘__on_failure’ : マクロが再定義されました。
  c:\program files (x86)\microsoft visual studio 11.0\vc\include\sal.h(2882) :
    ’__on_failure’ の前の定義を確認してください
c:\program files (x86)\microsoft visual studio 11.0\vc\atlmfc\include\atlcore.h(638):
  error C2039: ‘SetDefaultDllDirectories’ : ‘`global namespace” のメンバーではありません。
c:\program files (x86)\microsoft visual studio 11.0\vc\atlmfc\include\atlcore.h(638):
  error C2065: ‘SetDefaultDllDirectories’ : 定義されていない識別子です。
c:\program files (x86)\microsoft visual studio 11.0\vc\atlmfc\include\atlcore.h(640):
  error C2065: ‘LOAD_LIBRARY_SEARCH_SYSTEM32’ : 定義されていない識別子です。
========== すべてリビルド: 0 正常終了、1 失敗、0 スキップ ==========


プロジェクト設定の,「プラットフォームツールセット」を「Visual Studio 2012 (v110) 」とすれば通る.


さらに,VC 12 では,
—— ビルド開始: プロジェクト:T_DbgCls, 構成:Debug Win32 ——
T_DbgCls.obj : warning LNK4075: /EDITANDCONTINUE は /OPT:LBR の指定によって無視されます。
LINK : fatal error LNK1104: ファイル ‘mfc120d.lib’ を開くことができません。
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========

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

::SaveUTF8

xml などを保存する時, ::SaveUTF8(outName, outStr) ; の様にしていた.
動作としてはそれ程問題なかったように思うが,32 ビット exe で対象のデータが 50 MB 位を超えるとメモリ不足に…
例えば 100 MB の xml データの場合,
  もとのデータの Xml_E で 200 M,tstring の outStr でも 200 M.
  保存する前に,UNICODE から,UTF8 に変換するために 100 M.
200 M の連続領域が確保できないことが多いみたい.


::SaveUTF8 で,v_tstring (文字列の配列)形式のものを作成.
  bool SaveUTF8 (LPCTSTR pathName,const v_tstring& strAry)
  {
    FILE* ofp = ::Open_File(pathName,_T(“wb”)) ;
    for (size_t index=0 ; index<strAry.size() ; index++) {
      tstring str = strAry[index] + _T(“\r\n”) ;
      std::string u8Str = ::To_UTF8(str.c_str()) ;
      v_char v_chr = ::To_v_char(u8Str) ;
      ::fwrite(&v_chr[0],sizeof(char),v_chr.size(),ofp) ;
      }
    ::fclose(ofp) ;
    return true ;
    }
UNICODE から UTF8 への変換時間などはそれほど気にならない.100 MB のファイル 800,000 行で 10 秒程度.


幾つかの形式で保存した時のファイルサイズ

  OBJ AMF DAE X3D PLY AC
サイズ MB 111 368 85 29 191 57
比率 1.00 3.31 0.76 0.26 1.71 0.51
Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

VC 6 Release inline

次の様な呼出しで,Release ビルドでうまく動作しないことがあった.
…\PntFnc\TCrossL\TCrossLD.cpp 2 円の交点のエラー時の動作
  Vd2 cp1 = ::get_point_on_line (l1c,l2c,l1r) ;
デバッグ版では意図した動作となる.
inline Vd2 get_point_on_line ( const Vd2& ls, const Vd2& le, const double d )
{
   if (ls == le) { return ls ; }
   Vd2 unit = (le-ls).Normalized() ;
   Vd2 pos = ls + unit * d ;
   return pos ;
   }
ls と le を比較している部分で抜けてしまっている?
VC 7 では OK.


よくわからないので,間接的に呼出す様に変更.
inline Vd2 get_point_on_line(const Vd2& ls,const Vd2& le,const double d) { return get_point_on_line_(ls,le,d); }

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

内積で誤差?

以前書いたコードで次の様にしていた.

デバッグ版では単位ベクトルにすると誤差が大きい様に感じたが,リリース版ではそれ程でもない?


double	Naiseki	(const P3& p1,const P3& p2)
{
  //	→ →  →  →
  //	a・b=|a||b|cosθ
  //	a.x*b.x+a.y*b.y+a.z*b.z=sqrt(ax*ax+ay*ay+az*az)*sqrt(bx*bx+by*by+bz*bz)*cosθ
  //	...	a,bのベクトルが単位ベクトルの時
  //		sqrt(ax...) と sqrt(bx...) は 1
  //	a.x*b.x+a.y*b.y+a.z*b.z=1*1*cosθ
  //	a.x*b.x+a.y*b.y+a.z*b.z=cosθ
  //	→ →
  //	a・b=ax*bx+ay*by+az*bz
  P3	p1u = p1.Uni() ;
  P3	p2u = p2.Uni() ;
  //	return	(p1u.x*p2u.x+p1u.y*p2u.y+p1u.z*p2u.z) ;
  //	誤差の補正
  double	dp = p1u.x*p2u.x+p1u.y*p2u.y+p1u.z*p2u.z ;
  if (dp<-1 || 1<dp) {
    if (dp < -1.)	{	dp = -1. ;	}
    if (dp >  1.)	{	dp =  1. ;	}
    }
  return	dp ;
  }
 
P3	Gaiseki	(const P3& p1,const P3& p2)
{
  //	→ →  →  →
  //	a×b=|a||b|sinθ・c
  //	→ →
  //	a×b=(ay*bz-az*by,az*bx-ax*bz,ax*by-ay*bx)
  P3	pt ;
  pt.x = p1.y * p2.z - p1.z * p2.y ;
  pt.y = p1.z * p2.x - p1.x * p2.z ;
  pt.z = p1.x * p2.y - p1.y * p2.x ;
  return	pt ;
  }
Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

WD Cloud に Joomla

WD Cloud に Joomla を追加しようとして,データベースの設定でつまずいていた.
ユーザ名がわからず,検索していたら phpMyAdmin を設定すればよさそうとわかった(pdf の 150 ページ辺り).

これで,ユーザ名に admin を指定して設定できた.

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

Win 10 10586

ドロップダウン付のツールバーで,ボタンが切れる現象は直った?
VS 2005 で作成した「Web セットアップ プロジェクト」のインストールはまだできない?


2015/12/10
ドロップダウン付のツールバーのサイズが正しくない現象が XP でも発生.
初期の Win 10 で現象が発生しやすかったことは確かだが,もっと他にも条件がありそう.
  MFC 8 やフラットかどうかなど.
XP で発生した時,MFC 6 の exe は問題なかった.
いつも使用している環境では,フラットにしていないことが多い.

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

vector -> tstring

以前 MFC を使用した StringArrayToString を変更したが,今回は STL 版.


tstring String_Join (const std::vector<tstring>& srcAry,LPCTSTR sp)
{
  tstring str ;
  for (size_t index= 0 ; index<srcAry.size() ; index++) {
    str += srcAry[index] ;
    if (index+1 == srcAry.size()) { continue ; }
    str += sp ;
    }
  return str ;
  }
MFC 版は VC 6 までだったが,STL 版では VC 7 も遅い.


tstring String_Join (const std::vector<tstring>& srcAry,LPCTSTR sp)
{
  tstring str ;
  v_tstring tmpSA ;
  tstring tmpStr ;
  for (size_t index= 0 ; index<srcAry.size() ; index++) {
    tmpStr += srcAry[index] ;
    if (index+1 == srcAry.size()) { continue ; }
    if ((index%128) == 100) {
      tmpSA.push_back(tmpStr) ;
      tmpStr.erase() ;
      continue ;
      }
    tmpStr += sp ;
    }
  if (!tmpStr.empty()) {
    tmpSA.push_back(tmpStr) ;
    }
  if (tmpSA.size() > 1) {
    str = ::String_Join(tmpSA,sp) ;
    }
  else if (tmpSA.size() == 1) {
    str = tmpSA[0] ;
    }
  return str ;
  }

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

Shell Extension のデバッグ

Shell Extension で,縮小版の背景に GDI+ を使用して,どうも動作が安定しなくなった.
現象としては,環境によるが explorer.exe が「応答なし」に.
  GDI+ の GdiplusShutdown の呼び方が悪かったみたいで,DllCanUnloadNow で終わらせる様にした.
また,今回デバッグ用にダンプする様にしていて,そのファイルをエクスプローラで選択しようとするとフリーズ.
  これは,デフォルトでは出力しないことで回避.


今回これらをやっていて,以前から面倒と思っていた ShellExt.dll のデバッグ.
デバッグ版.dll が呼ばれる様に設定して,普通の exe で「開く」ダイアログで dll 内をデバッグできる.


Vector
https://jml.mish.work/i-tools.html

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

VC include lib のパス

VC 6
  HKCU\Software\Microsoft\DevStudio\6.0\Build System\Components\Platforms\Win32 (x86)\Directories
VC 7 , 7.1 , 8 , 9
  C:\Users\Iwao\AppData\Local\Microsoft\VisualStudio\…\VCComponents.dat
VC 10 , 11 , 12
  C:\Users\Iwao\AppData\Local\Microsoft\MSBuild\v4.0\Microsoft.Cpp. … .user.props

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

フォルダ以下の同期

先日追加した WD Cloud にソースなどをバックアップしたいと思い探していたら,robocopy.exe を見つけた.
まだ,単純にバックアップをとっているだけ.
  robocopy \\DevXP\C_Drive\Temp\ \\WDCloud\Backup\Develop\DevXP\Temp\ /mir
UNICODE のフォルダやファイル名も,コピー中の表示は ‘?’ となるが問題なさそう.


GUI 版の RichCopy があるみたいだが,こっちはまだ未確認.
FTP もいける?


robocopy 補助ツール
robocopy 補助ツール

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

Win 8.1 –> Win 10 ?

勝手に Win 8 から 8.1 に更新された仮想マシン.

VirtualBox が 4.3.30 だったので,5.0.8 に.
しかし,変わらず.
Win10_Japanese_x32.iso」を使用してインストールしてみた.
* すぐ上の Win 10 ダウンロードのリンク先は,利用 OS ? により異なる様です.この記事は mac を想定しています.


何とか環境を引継ぎインストールできたみたい.

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

うまく起動しない…

「知人から譲り受けた Win 7 のノート PC の起動が遅い」と言うことで調べてみると,
確かに,起動時のロゴが出て HDD のランプが点きっぱなし,1 時間程そのままにしておいたら起動していた.
怪しいのは HDD .
イベントビューアで確認しようとしたが,起動はするがデータが開けない.
ChkDsk で修復すると,

起動は通常の時間になったと思うが,動作が安定しない.


リカバリメディアの作成
  PCG-71712N で実際必要だったメディア数は DVD で 5 枚,DL で 2 枚となっていた.
  VPCCB38FJ が正しいモデル名?
ずっと PC についてはいなかったが,それぞれ 20 ~ 30 分程度.
  4 枚目が少しかかっていたように思う.HDD の不良セクタの影響?


先ず,リカバリ領域からのリカバリ.2 時間程度.
ちょっと拝借,AP をインストールして今日ビルドした exe をテスト.


今度はリカバリメディアの DVD から
  読込?に 1 時間程度(ディスク 5 枚).
  さらに 2 時間弱.


Window Update で,170 個程を 6 時間位.

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