ホーム » 2022 (ページ 2)

年別アーカイブ: 2022

2024年5月
 1234
567891011
12131415161718
19202122232425
262728293031  

カテゴリー

アーカイブ

ブログ統計情報

  • 81,621 アクセス



::GetDpiForWindow

高 DPI 関連でいろいろと調べてみると ::GetDpiForWindow を使う必要がありそう.
ただ使えるのが Win10 1607 以降みたいで,その辺りをどうしたものか?


次の様に呼出せば 指定した hwnd の値が取れることは確認

	#if	(_MSC_VER >= 1900)
	{
		UINT	dpi = ::GetDpiForWindow(hwnd) ;
		std::terr << dpi << std::endl ;
		}
	#endif

ただ,旧 Windows では存在しないため実行時エラーになる.
そのため ::GetProcAddress利用した方法に

//	UINT	GetDpiForWindow ( [in] HWND hwnd ) ;
typedef	UINT	(WINAPI* P_GDFW)(HWND) ;

UINT	GetDPI	(HWND hwnd)
{
	UINT	dpi = 96/2 ;
	HMODULE	user32 = ::GetModuleHandle(TEXT("user32.dll")) ;
	P_GDFW	p_GetDpiForWindow = (P_GDFW)::GetProcAddress(user32,"GetDpiForWindow") ;
	if (p_GetDpiForWindow != NULL) {
		dpi = p_GetDpiForWindow(hwnd) ;
		}
	else {
		HDC	hdc = ::GetDC(hwnd) ;
		dpi = ::GetDeviceCaps(hdc,LOGPIXELSX) ;
		::ReleaseDC(hwnd,hdc) ;
		}
	return	dpi ;
	}

Win11 で「拡大/縮小」の値を変更したもの.
作成した ::GetDPI を利用した VC6  exe


解像度と DPI の関係が,まだうまく理解できていない.
::GetDpiForWindow は,指定した hwnd の DPI が取得できている.
::GetDeviceCaps では,プライマリの情報が取れる.
「非対応」の場合はスケーリングされた値,「モニターごと」の場合は 100% での値?

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

FBX SDK 2020.3.2

FBX SDK が更新されていた.
https://help.autodesk.com/view/FBX/2020/ENU/?guid=FBX_Developer_Help_welcome_to_the_fbx_sdk_what_new_fbx_sdk_2020_html
今は区切りが良くないので,ダウンロードまで.
FBX SDK 2020.3.2


2023/02/14
追加のインクルードとライブラリを変更.
C:\Program Files\Autodesk\FBX\FBX SDK\2020.3.2\include;%(AdditionalIncludeDirectories)
C:\Program Files\Autodesk\FBX\FBX SDK\2020.3.2\lib\vs2019\x86\$(Configuration);%(AdditionalLibraryDirectories)
C:\Program Files\Autodesk\FBX\FBX SDK\2020.3.2\lib\vs2019\x64\$(Configuration);%(AdditionalLibraryDirectories)
C:\Program Files\Autodesk\FBX\FBX SDK\2020.3.2\include;%(AdditionalIncludeDirectories)

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

buf = string ( buf.c_str () )

先日の共通のコードでのバグ.

tstring	ask_cli	(LPCTSTR msg=_T(""))
{
	tstring	cli ;
	while(true)	{
		tstring	buf ;
		buf.resize(1000) ;
		std::terr << msg ;
		std::tin.getline(&buf[0],std::streamsize(buf.size())) ;
	//	buf = ::QuotM_Del_All(buf.c_str()) ;
		if      (buf == _T("q"))	{	break ;		}
		else if (buf == _T("Q"))	{	break ;		}
		if (buf.empty())         	{	continue ;	}
		cli = buf.c_str() ;
		break ;
		}
	return	cli ;
	}

ループを抜けるために “q” や “Q” と比較している部分が機能しない(break しない).
原因は “q\0\0\0…” と “q\0” を比べているため.
そのため,比較する前に次の様にするとうまく機能する.

{
	tstring	tmp = buf.c_str() ;
	buf = tmp ;
	}

MFC であれば CString::ReleaseBuffer(-1) が使えるが…
buf = tstring(buf.c_str()) とすることで対応.
buf = string ( buf.c_str() )


CString , std::string , …

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

::GetDeviceCaps(dc,HORZRES)

先日のコード を利用して,Windows API の動作のテスト.


#include	<clocale>
#include	<iostream>

#include	"_tdefine.hxx"
#include	"cmd_line.hxx"
#include	"ask_cli.hxx"
//#include	"ask_path.hxx"

#include	<Windows.h>

bool	test	(c_tstring& str)
{
//	std::terr << str << std::endl ;
	HDC	dc = ::GetDC(NULL) ;
	if (dc != NULL) {
		int	hres = ::GetDeviceCaps(dc,HORZRES) ;
		int	vres = ::GetDeviceCaps(dc,VERTRES) ;
		std::terr
			<< _T("HORZRES=") << hres << _T("\t")
			<< _T("VERTRES=") << vres << _T("\t")
			<< std::endl ;
		}
	return	true ;
	}

int	_tmain	(int argc,TCHAR* argv[])
{
	_tsetlocale(LC_ALL,_T("")) ;
	{
		::reg_argv (argc,argv) ;
		}
	{
	//	::call_func(argc,argv) ;
		}
	{
		::test(_T("Test")) ;
		}
	::ask_wait() ;
	return	0 ;
	}

GetDeviceCaps HORZRES VERTRES


::GetDpiForWindow を追加して FHD と 4K 環境で実行.

bool	test	(c_tstring& str)
{
	HWND	hwnd = ::GetConsoleHwnd() ;
	{
		HDC	dc = ::GetDC(hwnd) ;
		if (dc != NULL) {
			int	hres = ::GetDeviceCaps(dc,HORZRES) ;
			int	vres = ::GetDeviceCaps(dc,VERTRES) ;
			std::terr
				<< _T("HORZRES=") << hres << _T("\t")
				<< _T("VERTRES=") << vres << _T("\t")
				<< std::endl ;
			}
		}
//	#ifdef	DPI_AWARENESS_UNAWARE
	{
		HWND	hwnd = ::GetConsoleHwnd() ;
		UINT	dpi = ::GetDpiForWindow(hwnd) ;
		std::terr << dpi << std::endl ;
		}
//	#endif
	return	true ;
	}

GetDpiForWindow

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

コンソール AP のための最初のコード

API などをテストするために,個人的に使用している C++ のコード.

#include	<clocale>
#include	<iostream>

#include	"_tdefine.hxx"
#include	"cmd_line.hxx"
#include	"ask_cli.hxx"
//#include	"ask_path.hxx"

bool	test	(c_tstring& str)
{
	std::terr << str << std::endl ;
	return	true ;
	}

inline	bool	call_func	(int argc,TCHAR* argv[])
{
	if (argc > 1) {
		for (int index=1 ; index<argc ; index++) {
			tstring	av = argv[index] ;
			::test(av) ;
			}
		}
	else {
		while(true)	{
			tstring	path ;
			{
				#ifdef	OFN_filter_All
					path = ::ask_path(false) ;
				#else
					path = ::ask_cli(_T("file ... ? =")) ;
				#endif
				}
			if (path.empty())	{	break ;		}
			::test(path) ;
			}
		}
	return	true ;
	}

int	_tmain	(int argc,TCHAR* argv[])
{
	_tsetlocale(LC_ALL,_T("")) ;
	{
		::reg_argv (argc,argv) ;
		}
	{
		::call_func(argc,argv) ;
		}
	{
		::test(_T("Test")) ;
		}
	::ask_wait() ;
	return	0 ;
	}

//#include	"messbar.cxx"

インクルードしているファイルは cpp6_hxx.zip にある.
コンソール AP のための最初のコード
上のコードを test.cpp などとして保存し,同じ所に zip を展開.
g++ test.cpp などでコンパイル可能.


これらを使用したコード.
https://dev.mish.work/wordpress/?s=reg_argv

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

Win11 22H2

昨日 Win11 環境に VS 2005 から 2022 をインストール
その後,幾つかのコードをビルドして動作を確認.


仮想環境の Win11 22H2 で,KB5019509 の更新があった.
幾つか試したいことができたので,ホストの Win11 も 22H2 にしたくなった.


次の所から入って 22H2 をインストール.
https://www.microsoft.com/ja-jp/software-download/windows11/
1 時間程度かかった.


先日インストールした VC 6 を起動してみると…
うまく起動する.ビルドも問題なさそう.仮想マシンで動作していたのは 22H2 だったからか?
ステップ実行できない現象はあるが,何とか使える.
Win11 22H2 での VC 6


2022/10/23
ステップ実行した場合のメッセージが,仮想マシンと異なる.
Win11 22H2 VC6 ステップ実行後のメッセージ
仮想マシンは
—————————
Microsoft Visual C++
—————————
ハンドルされていない例外 は i3DV.exe (OLE32.DLL) にあります: 0xC0000005: Access Violation。
—————————
OK
—————————
ホストは
—————————
Microsoft Visual C++
—————————
OLE リモート呼び出しデバッグには管理者権限が必要です: この機能は使用できません。.
—————————
OK
—————————
Win10 VC6 OLE」で検索すると,次の所が見つかった.
Windows10でVC6を使いたい
どうも「ツール」-「オプション」-「デバッグ」の「OLE RPC デバッグ」のチェックを外す必要があるらしい.
VC6 「ツール」-「オプション」-「デバッグ」-「OLE RPC デバッグ」
チェックを外す操作は,一度「ジャスト イン タイム デバッグ」にチェックを入れてから操作する必要がある.

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

RC4005: ‘IDR_MANIFEST’ : redefinition

VC6 から順に更新してきたプロジェクトをビルドしていると,warning RC4005: ‘IDR_MANIFEST’ : redefinition .

...
6>------ ビルド開始: プロジェクト:ClipView, 構成:Debug Win32 ------
6>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\atlmfc\include\afxres.h(32): warning RC4005: 'IDR_MANIFEST' : redefinition
6>
6>  Clip140.vcxproj -> c:\Temp\MICSTool\ClipView\Debug.140\ClipView.exe
6>  Clip140.vcxproj -> c:\Temp\MICSTool\ClipView\Debug.140\ClipView.pdb (Full PDB)
========== ビルド: 6 正常終了、0 失敗、16 更新不要、0 スキップ ==========

resource.h を見ると,確かに IDR_MANIFEST が定義されている.
RC4005 IDR_MANIFEST redefinition
どのタイミングで追加したのかは覚えてないが,resource.h での定義は不要と思われるので削除.

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

Win11 に VS 6 のインストール

先日,Win11 環境に VS6 をインストールした.
手順は Win10 の時と同様 で,DB 関係が入らない様に
VB6 は起動した.
Win11 環境で VB6
が,VC6 は起動できない


昨日,Win10 上の仮想マシンの Win11 に VS6 と SP6 をインストール.
この時 VC 6 は起動可能で,ビルド,デバッグなども動作した.


今日,それを確認すると,デバッグができなくなっている.
全くできないわけではないが,ブレークするとその後がうまくない.
仮想マシン  Win11 の VC6 でデバッグ
何かが更新されて動作しなくなったのか?


Win11 上の仮想マシンとしての Win11 も,起動はできるがデバッグがうまくない.
Win10 の時もそうだったが,何かとの相性? … Win11 21H2 だったため.


2022/10/18
以前使っていた WinXP の VHD があったので,それを Win11 上の仮想マシンとして追加.
最近使ってなかったので,いろいろと問題が…
SMB1 や mklink
なかなかいい運用が見つからない.


2022/10/23
22H2 に上げて うまく動作する様になった.


2023/10/30
VC 6 は,Win 10 ,11 で特に困ることはなく利用できている.
たまに使用する機能でうまくないのは「コンポーネントギャラリ」くらい?
Win11 はシステムドライブが SSD のため,$(OutDir) は「シンボリック リンク」にしている.

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

Win11 に入っている MFC*.DLL

先日手に入った Win11 には,予め幾つかの AP が入っていた.
その中には,MFC140u.dll などが入っていたので,改めて新規インストールした環境で調べてみた.
Win11 Pro
Win11 Pro に入っている MFC*.DLL
Win11 Ent
Win11 Ent に入っている MFC*.DLL
やはり MFC40 と MFC42 みたい.


https://jml.mish.work/index.php/cpp/ref-vcredist-xxx-exe.html

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

Win11 VHD

新しく手に入った Win11 を VHD としてバックアップ.
Disk2vhd.exe で VHD に.
zip をダウンロードして解凍すると 3 つの exe になっている.x86,x64,arm で分かれた?
Disk2vhd v2.02 zip
使用する exe は disk2vhd64.exe .
Disk2vhd WIn11 C SYSTEM Recovery
ViritualBox 6.1.38 を Win11 環境にインストール.
先ず,以前とっておいた Win7 vhd 6.5 GB を起動させてみると,
VirtualBox STOP: 0x0000007B
これは,以前書いていて,今回追記した.
https://dev.mish.work/wordpress/2019/05/01/virtualbox-win7-vhd-0x0000007b/


バックアップした VHD で起動.
特に設定を変更していなかったので,起動にはかなりの時間(10 分程度)がかかった.
仮想マシンの Win11 を起動して VirtualBox Guest Additions  をインストール


今度は,仮想マシンに Win11 の iso を利用して OS のインストールから.
起動するとうまく動作しない.
Win11 iso を利用したインストールでうまくない
もう一度.次の表示が出ている時に何かのキーを押すと iso の読込みが始まる.
Press any key to boot from CD or DVD…
Win11 のインストールの開始
が,「この PC では Windows 11 を実行できません」.
この PC では Windows 11 を実行できません
戻って「コンピューターを修復する」を選択.
「コンピューターを修復する」
「トラブルシューティング」-「コマンドプロンプト」.
\HKEY_LOCAL_MACHINE\SYSTEM\Setup\LabConfig を作成して次のものを追加しなければならないらしい.
BypassTPMCheck と BypassSecureBootCheck で,値は DWORD 1 .
\HKEY_LOCAL_MACHINE\SYSTEM\Setup\LabConfig BypassTPMCheck BypassSecureBootCheck
レジストリエディタを終了して,コマンドプロンプトで setup.exe .
あとはいつも通り.


2022/10/06
「この PC では Windows 11 を実行できません」となった時の一般的に書かれている方法.
「Shift」+「F10」でコマンドプロンプトが表示される.
RegEdit を入力.
BypassTPMCheck と BypassSecureBootCheck の追加.
Win11 Shift+F10 Bypass...Check
レジストリエディタや「この PC では Windows 11 を実行できません」を閉じる.
「本当に終了しますか?」を「はい」で閉じる.
「今すぐインストール」の画面に戻り「今すぐインストール」で続ける.


これらのことをやっていて,ひょっとして今までメインで使用していた Win10 環境でも動くのでは?
CPU が i5-6400 で少し古いため動作対象外となっている.
Win10 の VirtualBox 上で Win11

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

ADM 4.1.0.RLQ1 VirtulBox …

時々ある ことなので驚きはしないが…
ADM 4.1.0.RLQ1 にアップデートして VirtualBox の仮想マシンがうまく起動しなくなった.


Failed to open/create the internal network ‘HostInterfaceNetworking-eth0’ (VERR_SUPDRV_COMPONENT_NOT_FOUND). Failed to attach the network LUN (VERR_SUPDRV_COMPONENT_NOT_FOUND). One of the kernel modules was not successfully loaded. Make sure that VirtualBox is correctly installed, and if you are using EFI Secure Boot that the modules are signed if necessary in the right way for your host system. Then try to recompile and reload the kernel modules by executing ‘/sbin/vboxconfig’ as root (VERR_SUPDRV_COMPONENT_NOT_FOUND)
ADM 4.1.0.RLQ1 で VirtualBox の仮想マシンがうまく起動しなくなった?


設定があるのかもしれないが,検索してもちょっとわからない.
最近の ADM アップデートはあまり安定していない気がする.
それとも,数日仮想マシンを起動していなかったので,どこか弄ってしまったか?


2022/10/05
対応版が出たみたい.
ASUSTOR NAS VirtualBox 6.1.32.r3
うまく起動する様になった.

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

Windows シンボリック リンク

何年か前から VC のビルドでの出力先を C:\Temp 以下に指定している.
c:\Temp\i_Tools\i3DV\Release.060
VC 6  出力ファイル設定
VC 7 以降では次の様な感じ.
c:\Temp\i_Tools\$(ProjectName)\$(ConfigurationName).070
c:\Temp\i_Tools\$(ProjectName)\$(Configuration).143\$(Platform)\
これで,どの環境でビルドしてもそれなりに動作する様にしている.
共通のソースは NAS でドライブとして割り当て,プロジェクトはローカルや NAS .
また,出来上がった exe は CopyNewF.exe でコピーしている.
新しいファイルのコピー


Win10 に VC 6 を入れているが,メイン環境に SP6 が当てられない.仮想環境ではうまく入ったマシンもある.
単体テストの範囲ではメイン環境の VC 6 RTM で問題ないが,リリースビルドでうまくない現象がある.
VS 6 RTM bug … ?


これらのことがあり VC 6 でビルドした結果を,メイン PC の C:\Temp\ 以下にまとめられないかと…
また,近いうちに PC が新しく入る予定だが,SSD の容量がそれほど多くないのでそれを含めてのもの.
仮想環境でホスト PC の \\Z170S0\C_Temp を o:\ として割り当てている.
次の様な指定で,仮想環境で o:\ を C:\Temp としてのシンボリック リンクを作成.
mklink /D c:\Temp o:\
これで意図した通りに動作する様にはなったが,デバッグ版では互換性がないみたいでうまくテストできない.


結局ホストの追加のドライブを指定することに.
mklink /D c:\Temp e:\C_Temp.VC6
mklink /d c:\Temp e:\C_Temp.VC6
これで暫く使ってみる.


今までショートカット lnk を使ってきたが,置き換えができそうな所がありテスト的に設定.

D:\Tmp_link>mklink /D .\D2_i_u \\DS220\web\i_Tools\upload\share
.\D2_i_u <<===>> \\DS220\web\i_Tools\upload\share のシンボリック リンクが作成されました

D:\Tmp_link>mklink /D .\D2_T_u \\DS220\web\Test\upload
.\D2_T_u <<===>> \\DS220\web\Test\upload のシンボリック リンクが作成されました

D:\Tmp_link>mklink /D .\D1_i_u \\DS116\web\i_Tools\upload\share
.\D1_i_u <<===>> \\DS116\web\i_Tools\upload\share のシンボリック リンクが作成されました

D:\Tmp_link>mklink /D .\D1_T_u \\DS116\web\Test\upload
.\D1_T_u <<===>> \\DS116\web\Test\upload のシンボリック リンクが作成されました

D:\Tmp_link>dir
 ドライブ D のボリューム ラベルは ボリューム です
 ボリューム シリアル番号は B630-F57A です

 D:\Tmp_link のディレクトリ

2022/09/28  17:31    <DIR>          .
2022/09/28  17:31    <DIR>          ..
2022/09/28  17:30    <SYMLINKD>     D1_i_u [\\DS116\web\i_Tools\upload\share]
2022/09/28  17:31    <SYMLINKD>     D1_T_u [\\DS116\web\Test\upload]
2022/09/28  17:30    <SYMLINKD>     D2_i_u [\\DS220\web\i_Tools\upload\share]
2022/09/28  17:30    <SYMLINKD>     D2_T_u [\\DS220\web\Test\upload]
               0 個のファイル                   0 バイト
               6 個のディレクトリ  435,247,796,224 バイトの空き領域

D:\Tmp_link>

mklink /D .\D2_i_u \\DS220\web\...
エクスプローラでは次の様に見える.
エクスプローラ  D:\Tmp_link\
ジャンクション名をクリックした時の動作が,微妙に異なることがある様に感じる.
リンク先に切替わったり,そのまま展開されたりする.
ある程度意図したことができる様なので,これもこのまま使用してみる.


2022/10/21
新しい Win11 PC の C ドライブを圧迫しないため,次の様にして NAS 上に置くことにした.
mklink /D C:\Temp \\AS5202T\Temp\C_Temp
NAS の再起動などを意識する必要はあるが,速度なども含め,今の所問題はなさそう.
それでちょっとした違いを見つけた.
シンボリックリンクでエクスプローラの表示が異なる

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

MFC 14 以降の CCheckListBox で…

何年か前,幾つかのプロジェクトを VC 14 に対応しようとして CCheckListBox の表示がうまくなかった.
CCheckListBox  VC 2015 スタティックリンク
CCheckListBox を使っているプロジェクトは限られているので,~MFC 12 にしていた.


今回 いろいろとあり VC 2017 ~ 2022 に対応することに.
MFC が更新されているのかわからないが,以前のものより少し動作は良くなっている?
相変わらず,表示直後にずれているのと,高さが MFC 12 以前に比べ詰まっている.
CCheckListBox VC 2015 でビルドし直したもの


MFC CCheckListBox ずれる」で検索すると,OnInitDialog() などで 高さを指定 すれば良いとあった.

{
	CRect	rect ;
	m_CtrlSExtDllNow.GetWindowRect(&rect) ;		//	他のコントロールの高さを利用
	m_CtrlListSExt.SetItemHeight(0,rect.Height()) ;
	}

面倒だったのでエディットボックスの高さを利用している.
これで MFC 12 などで作成したものと同じ様な表示になった.
CCheckListBox  SetItemHeight を追加

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

ADM DataSync Center

久しぶりに ASUSTOR NAS 上で C++ のコードを試そうと思い見ていると…
共通のコードが古い.丁度 1 年前の更新で止まっている.
他の QNAP NAS などは,正しく更新されている.
ある程度区切りの良い状態で「Google ドライブ」に更新して,それぞれの NAS の同期機能でコピーしている.
この様にすることで,自動バックアップと NAS 上の共通コードの更新を行っている.
QNAP NAS HBS 3


今まで ASUSTOR NAS では「DataSync for GoogleDrive」を使用してきた.
ADM DataSync for GoogleDrive
が,起動しようとすると「ロード中」となって,表示が変わらなくなりうまく動作しない.
App Central を見ても,なさそう.DataSync Center になったみたい.


「DataSync Center」のインストール.
ASUSTOR NAS  DataSync Center インストール
「DataSync Center 」を起動して「Googleドライブ」に「チェック」.
「同期設定をインポートします」にカーソルを合わせると,
DataSync for GoogleDrive からの同期データは,DataSync Center にインポートすることができます.
「Googleドライブ から NAS へ」を指定.
Googleドライブ から NAS へ
同期するパスの指定.ここでは Public なども指定できるので,Home への依存はなくなったみたい.
ASUSTOR NAS DataSync Center 同期パスの指定
あとはそのまま受け入れると同期が始まる.
DataSync Center 「同期中」


同期には 4 時間程度かかった.
また,Synology NAS と同様で,SmpTxt.zip などはコピーされない.
SmpTxt.zip などがダウンロードできない
原因は Release.060/SmpTxt.exe によるもの.
このあと,これらのファイルを更新予定.

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

error LNK2019 : … _GdiplusStartup

VC 6 で作成したプロジェクトを VC 8 に上げてビルドすると…

------ ビルド開始: プロジェクト: DocTh, 構成: Debug Win32 ------
リンクしています...
ComNGP01.obj : error LNK2019: 未解決の外部シンボル _GdipCreateSolidFill@8 が関数 "public: __thiscall Gdiplus::SolidBrush::SolidBrush(class Gdiplus::Color const &)" (??0SolidBrush@Gdiplus@@QAE@ABVColor@1@@Z) で参照されました。
ComNGP01.obj : error LNK2019: 未解決の外部シンボル _GdipDeleteBrush@4 が関数 "public: virtual __thiscall Gdiplus::Brush::~Brush(void)" (??1Brush@Gdiplus@@UAE@XZ) で参照されました。
ComNGP01.obj : error LNK2019: 未解決の外部シンボル _GdipCloneBrush@8 が関数 "public: virtual class Gdiplus::Brush * __thiscall Gdiplus::Brush::Clone(void)const " (?Clone@Brush@Gdiplus@@UBEPAV12@XZ) で参照されました。
ComNGP01.obj : error LNK2019: 未解決の外部シンボル _GdipFree@4 が関数 "public: static void __cdecl Gdiplus::GdiplusBase::operator delete(void *)" (??3GdiplusBase@Gdiplus@@SAXPAX@Z) で参照されました。
ComNGP01.obj : error LNK2019: 未解決の外部シンボル _GdipAlloc@4 が関数 "public: static void * __cdecl Gdiplus::GdiplusBase::operator new(unsigned int)" (??2GdiplusBase@Gdiplus@@SAPAXI@Z) で参照されました。
ComNGP01.obj : error LNK2019: 未解決の外部シンボル _GdipCreateLineBrushI@24 が関数 "public: __thiscall Gdiplus::LinearGradientBrush::LinearGradientBrush(class Gdiplus::Point const &,class Gdiplus::Point const &,class Gdiplus::Color const &,class Gdiplus::Color const &)" (??0LinearGradientBrush@Gdiplus@@QAE@ABVPoint@1@0ABVColor@1@1@Z) で参照されました。
ComNGP01.obj : error LNK2019: 未解決の外部シンボル _GdipCreateFromHDC@8 が関数 "public: __thiscall Gdiplus::Graphics::Graphics(struct HDC__ *)" (??0Graphics@Gdiplus@@QAE@PAUHDC__@@@Z) で参照されました。
ComNGP01.obj : error LNK2019: 未解決の外部シンボル _GdipDeleteGraphics@4 が関数 "public: __thiscall Gdiplus::Graphics::~Graphics(void)" (??1Graphics@Gdiplus@@QAE@XZ) で参照されました。
ComNGP01.obj : error LNK2019: 未解決の外部シンボル _GdipSetSmoothingMode@8 が関数 "public: enum Gdiplus::Status __thiscall Gdiplus::Graphics::SetSmoothingMode(enum Gdiplus::SmoothingMode)" (?SetSmoothingMode@Graphics@Gdiplus@@QAE?AW4Status@2@W4SmoothingMode@2@@Z) で参照されました。
ComNGP01.obj : error LNK2019: 未解決の外部シンボル _GdipFillRectangle@24 が関数 "public: enum Gdiplus::Status __thiscall Gdiplus::Graphics::FillRectangle(class Gdiplus::Brush const *,float,float,float,float)" (?FillRectangle@Graphics@Gdiplus@@QAE?AW4Status@2@PBVBrush@2@MMMM@Z) で参照されました。
ComNGP01.obj : error LNK2019: 未解決の外部シンボル _GdipFillRectangleI@24 が関数 "public: enum Gdiplus::Status __thiscall Gdiplus::Graphics::FillRectangle(class Gdiplus::Brush const *,int,int,int,int)" (?FillRectangle@Graphics@Gdiplus@@QAE?AW4Status@2@PBVBrush@2@HHHH@Z) で参照されました。
ComNGP01.obj : error LNK2019: 未解決の外部シンボル _GdipFillPie@32 が関数 "public: enum Gdiplus::Status __thiscall Gdiplus::Graphics::FillPie(class Gdiplus::Brush const *,float,float,float,float,float,float)" (?FillPie@Graphics@Gdiplus@@QAE?AW4Status@2@PBVBrush@2@MMMMMM@Z) で参照されました。
ComNGP01.obj : error LNK2019: 未解決の外部シンボル _GdiplusStartup@12 が関数 "public: static int __cdecl UseGdiPlus::Startup(void)" (?Startup@UseGdiPlus@@SAHXZ) で参照されました。
ComNGP01.obj : error LNK2019: 未解決の外部シンボル _GdiplusShutdown@4 が関数 "public: static int __cdecl UseGdiPlus::Shutdown(void)" (?Shutdown@UseGdiPlus@@SAHXZ) で参照されました。
c:\Temp\iShellE\DocTh\Debug.080/DocTh.exe : fatal error LNK1120: 外部参照 14 が未解決です。
DocTh - エラー 15、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ==========

ドキュメントに対する EMF  VC 8
リンク対象に Gdiplus.lib を追加して対応.

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

VirusTotal SmpTxt.exe

Synology NAS の Cloud Sync のログに,ダウンロードできないファイルが幾つかあった.
対象のファイルは SmpTxt.zip で,その中の SmpTxt.exe がうまくない様子.
VC 6 でビルドしたものがマルウェアなどとして検出されている.VC 8 でビルドしたものは問題ない.
VirusTotal  SmpTxt.exe
Vector に登録できているので誤検出だろうと思うが,どうしたものか.
i_ShellExt 未定義ドキュメントのサムネイルを表示可能に


2022/09/22
VC のバージョンをあげて対応することに.また SmpTxt.zip 内の VC 6 版は削除予定.


2022/09/26
SmpTxt_2022_09.zip

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

SSD の温度が高くなった?

昨日の午後になって,SSD の温度がいつもより高いことに気づいた.
SSD の温度
今まで,使っていない時は 50~60℃位だったのが,70℃以上になっている.


最近の更新は,SSD のファームのアップデートと,月齢の Windows Update .
どちらかが影響しているものと思われるが,何とも言えない?
表示だけの問題であれば良いが…


PC の電源を落として,朝,再起動.
今の所,50℃台で安定している.何だったのだろう?

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

NAS ファイアウォール設定

以前から phpMyAdmin を狙ったアクセスが多い.
見つけると IP の範囲で Synology NAS のファイアウォールに追加してきた.
その影響かどうかわからないが WordPress などへのアクセスが減った気がする.
日本からの 443 を許可する設定を追加してみた.
Synology NAS ファイアウォール設定 日本を「許可」
これでアクセスが増えると良いが…

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

WebGL Three.js r144

久しぶりに Three.js を更新しようかと…
いつものデータを r144 に書き換えて…

r131 と比べると,オブジェクトが暗い.


サンプルのデータを見ると mtl が変更されている.


ライブラリの変更履歴 を見ると 136 → 137 で変更されている.
r136 までにして,この辺りが更新された時に見直すこととするか?

three.js   r144 と r131

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

CHttpFile Read String

何年か前に Web 上の html読み取るコード を書いた.
それを 今回書き直し


これらのコードでは「シフトJIS」で書かれたページ以外ではうまく処理できない?
以前利用した時は IIS のサーバで,html 内の一部のコードを読み取るだけなので,特に問題にはならかなった.
今回も,単純に html が更新されたかどうかだったので,それなりに処理できていた.


今度は,html だけでなく画像などバイナリにも対応したくなった.
favicon.ico
CInternetFile::ReadString の部分を

	{
		CString	buf ;
		while	(pFile->ReadString(buf)) {
			tstring	tmp = ::To_tstring(LPCSTR(LPCTSTR(buf))) ;
			r_buf.push_back(tmp) ;
			}
		read_dt = ::String_Join_Line(r_buf) ;
		}

CInternetFile::Read に変更.

	{
		FILE*	ofp = ::Open_File(dt_file.c_str(),_T("wb")) ;
		v_char	readBuf ;	readBuf.resize(1024) ;
		while	(true) {
			UINT	r_size = pFile->Read(&readBuf[0],1024) ;
			::fwrite(&readBuf[0],1,r_size,ofp) ;
		//	if (r_size < 1024)
			if (r_size < 1)
			{
				break ;
				}
			}
		::fclose(ofp) ;
		}

I_Read.hxx

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