CBitmap の表示
ツールバーのビットマップをリサイズするために CBitmap を調べ始めた.
Inside VC++ Version 5 を参考に次の様に書いてみた.
プログラミング Visual C++ .NET では省かれている?
void CT_CBmpView::OnDraw(CDC* pDC)
{
// CT_CBmpDoc* pDoc = GetDocument();
// ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
{
CDC dc_mem ; dc_mem.CreateCompatibleDC(pDC) ;
CBitmap bitmap ; bitmap.LoadBitmap(IDR_MAINFRAME) ;
BITMAP bm = {0} ; bitmap.GetBitmap(&bm) ;
{
CRect rect(0,0,0,0) ;
GetClientRect(&rect) ;
rect.DeflateRect(100,100,200,200) ;
::SetStretchBltMode(pDC->GetSafeHdc(),HALFTONE) ;
dc_mem.SelectObject(&bitmap) ;
// pDC->BitBlt (rect.left,rect.top,rect.right,rect.bottom,&dc_mem,0,0,SRCCOPY) ;
pDC->StretchBlt(rect.left,rect.top,rect.right,rect.bottom,
&dc_mem,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY) ;
}
}
}
そのまま貼り付けてテスト可能な様に View の OnDraw に書いています.
これを参考に実装する場合,リソースの読込み部分などは OnInitialUpdate などで行ってください.
https://itl.mish.work/i_Tools/Doc/blog/migrate/T_CB0604.zip
欲しかった CBitmap のリサイズのコードは次の所にあった.
How do you scale a CBitmap object?
高 DPI 環境での CToolBar
vC 6 MFC プロジェクトを VC 2010 以降に更新すると,高 DPI 環境でツールバーがうまくない.
CMFCToolBar であれば OK .
個人的には 2005/06 に作成したコードを改良したものを使用している.
どこを参考にしたのかはちょっとわからない.
「MFCによるWindows95プログラミング」や「INSIDE VISUAL C++ 5TH ED」などと思う.
それを簡単に利用できる様にできないかと…
コードは次の様な感じ.
BOOL ToolBar__Resize (CToolBar* toolBar,UINT idr)
{
double dpi_s = 1. ;
{
dpi_s = ::GetDPI_scale(toolBar->GetSafeHwnd()) ; // ::GetDpiForWindow() / 96.
}
if (dpi_s == 1.) {
return TRUE ;
}
CToolBarCtrl& tbCtrl = toolBar->GetToolBarCtrl() ;
CSize btnSize(0,0) ;
CRect bdrRect(0,0,0,0) ;
{ // ボタンなどのサイズを取得
DWORD dwSize = tbCtrl.GetButtonSize() ;
{
btnSize.cx = LOWORD(dwSize) ;
btnSize.cy = HIWORD(dwSize) ;
}
bdrRect = toolBar->GetBorders() ;
}
CSize newBtnSize = btnSize ;
CRect newBdrRect = bdrRect ;
{ // サイズを調整
newBtnSize.cx = int(btnSize.cx *dpi_s) ;
newBtnSize.cy = int(btnSize.cy *dpi_s) ;
newBdrRect.left = int(bdrRect.left *dpi_s) ;
newBdrRect.top = int(bdrRect.top *dpi_s) ;
newBdrRect.right = int(bdrRect.right *dpi_s) ;
newBdrRect.bottom= int(bdrRect.bottom*dpi_s) ;
}
{ // サイズを指定
tbCtrl.SetButtonSize(newBtnSize) ;
toolBar->SetBorders(newBdrRect) ;
}
return TRUE ;
}
ツールバーボタンのビットマップのリサイズはまだ書換えができていない.
https://itl.mish.work/i_Tools/Doc/blog/migrate/Test0603.zip
VC6 から VC2019 への移行
今回は VC 6 ds? の VC 2019 への更新.
VS 2022 では,VC 6 からのアップグレードがなくなった.
VS 2019 で dsw を開き 2019 に更新.
設定は VC 8 の時の手順とほとんど変わらない(設定値が微妙に異なる部分あり).
出力ディレクトリなどを「c:\Temp\…\$(ProjectName)\$(Configuration).142\」に.
「文字セット」を「Unicode 文字セットを使用する」に.
「プリコンパイル済み…」を「$(IntDir)$(TargetName).pch」に.
「C/C++」の「出力ファイル」を「$(IntDir)」に.
「リンカ」の「出力ファイル」を「$(OutDir)$(ProjectName).exe」に.
「ブラウザ情報」の「出力ファイル」を「$(OutDir)$(ProjectName).bsc」に.
そのままビルドすると,デバッグ版では D8016 エラーになる.
「C/C++」-「すべてのオプション」の「関数レベルでリンクする」をブランクに.
https://itl.mish.work/i_Tools/Doc/blog/migrate/Test0526.zip
2024/07/30
VC 6 から VC 2022 への移行
2024/08/21
VC 2010 などでも同じように指定することで移行が可能なことを確認.
Hyper Backup 設定
今日 Synology NAS のパッケージ MariaDB 10 の更新があった.
更新は他のパッケージと同様に行えばよい.
更新後ちょっと気になったのが「もし失敗したら?」ということ.
Hyper Backup でバックアップしておけば良さそうなので,その設定.
保存先として,ローカルディスクや USB ドライブも指定できるが,他社 NAS を対象とした.
ASUSTOR NAS の設定は「サービス」-「Rsyncサーバー」にある.
「Rsyncサーバーを…」をチェックして「追加」で保存先を指定すれば良い.
モジュールの「名前」は,Hyper Backup の「バックアップモジュール」で指定する名称になる.
QNAP NAS は「HBS 3」-「Rsyncサーバー」にある.
保存先の指定は特になさそうで「共有フォルダー」が「バックアップモジュール」で指定する名称になるみたい.
Hyper Backup の「バックアップ ウィザード」で「フォルダとパッケージ」を選択.
「ファイル サーバー」の「rsync」を選択して,今回は「単一バージョン」を選択.
バックアップ先の設定でサーバの IP やユーザー名などを設定して「次へ」.
今回「データ バックアップ」は特に指定しないで「次へ」.
「アプリケーション」にチェックをつけて「次へ」.
あとはそのまま受け入れてバックアップした.
バックアップされたデータは次の様になっている.
VC 6 プロジェクトの移行
今更の内容ではあるが,VC 6 プロジェクトを VC 8 などに移行する手順のまとめ.
私の場合,VC 6 からプロジェクトを作成して VC 2017 などでビルドした exe をリリースすることが多い.
他にも,コードの単体テストのためにコンソール AP を作成する時も VC 6 がお手軽.
Win11 でも MFC42*.dll などは入っているので,テストも exe をコピーすれば可能となる.
以前は VC 7 なども対象としていたが,関係するプロジェクトで必要がなくなり,今は使っていない.
また VC 7 形式を通すと vcproj を直接編集しないといけない状態になることがある.
プロジェクトのバックアップをしやすい様に exe などの出力先は,別の所を指定している.
VC 6 で MDI プロジェクトとして作成.プロジェクト名はなるべく 5 文字以下にしている.
出力ディレクトリを変更.この時 VC のバージョンごとに出力先を分けている.
C:.
└─Test
├─Debug.060
├─Debug.080
├─Release.060
└─Release.080
VC 8 で Test.dsw を開く.
文字セットを「Unicode 文字セットを使用する」に.
出力ディレクトリなどを「c:\Temp\…\$(ProjectName)\$(ConfigurationName).080」に.
「プリコンパイル済み…」を「$(IntDir)/$(TargetName).pch」に.
「C/C++」の「出力ファイル」を「$(IntDir)/」に.
「リンカ」の「出力ファイル」を「$(OutDir)/$(ProjectName).exe」に.
「プログラム データベース…」を「$(OutDir)/$(ProjectName).pdb」に.
「ブラウザ情報」の「出力ファイル」を「$(OutDir)/$(ProjectName).bsc」に.
ツリーに「MIDL」が表示されている場合は「タイプライブラリ」を「$(IntDir)/$(ProjectName).tlb」に変更.
必要に応じて,それぞれの「コマンド ライン」で 060 のままの所がないか確認.
ビルドすると次のワーニングになる.
1>------ ビルド開始: プロジェクト: Test, 構成: Debug Win32 ------
1>コンパイルしています...
1>Test.cpp
1>o:\document\vc_test\migrate\test\test.cpp(61) : warning C4996: 'CWinApp::Enable3dControls': CWinApp::Enable3dControls is no longer needed. You should remove this call.
1> c:\program files (x86)\microsoft visual studio 8\vc\atlmfc\include\afxwin.h(4477) : 'CWinApp::Enable3dControls' の宣言を確認してください。
1>リンクしています...
1>マニフェストを埋め込んでいます...
1>Test - エラー 0、警告 1
========== ビルド: 1 正常終了、0 失敗、0 更新、0 スキップ ==========
削除,または次の様に修正する.
#if(_MFC_VER >= 0x0700)
#else
#ifdef _AFXDLL
Enable3dControls(); // 共有 DLL 内で MFC を使う場合はここをコールしてください。
#else
Enable3dControlsStatic(); // MFC と静的にリンクする場合はここをコールしてください。
#endif
#endif
個人的によく変更する設定として
「C/C++」-「言語」-「OpenMP サポート」を「はい」に.
「リンカ」-「システム」-「大きい…アドレス」を「2GBを超える…サポートする」に.
Test.sln と Test.vcproj を Test_80.sln と Test_80.vcproj としてコピー.
Test_80.sln をエディタで開いて,Test_80.vcproj に.
vC 9 以降に更新する場合は Test.sln を開く.
出力ディレクトリなどを「c:\Temp\…\$(ProjectName)\$(ConfigurationName).090」などに.
VC 8 の時と同様に
Test.sln と Test.vcproj を Test_90.sln と Test_90.vcproj としてコピー.
Test_90.sln をエディタで開いて,Test_90.vcproj に.
vcproj をエディタで開くと TypeLibraryName が c:\Temp\…\Test\Debug.060/Test.tlb として残っている.
そのままでも問題はなさそうだが,修正するとすれば $(IntDir)/$(ProjectName).tlb か.
https://itl.mish.work/i_Tools/Doc/blog/migrate/Test0520.zip
2024/07/26
VC 10 以降でビルドした MDI.exe で「引数が正しくありません。」となることがある.
対応方法は InitInstance に AfxOleInit() の呼出しを追加する.
「Windows 検索」設定
Windwos Search の「インデックスのオプション」を開きたいと問い合わせが入った.
以前の Windows であれば「コントロールパネル」から入ると「インデックスのオプション」があった.
Win10 以降?は「コントロールパネル」も簡単には開けない.
Windows の検索ボックスで “インデックスのオプション” と入力すれば良かったのだが…
それが思い出せず,”Windows サーチ” や “Windows 検索” と入力して,うまくたどり着けない.
“Windows Search” と入力しないとうまくないみたい.
「Windows 検索」の「クラッシック」の下の「…検索場所をカスタマイズ…」を選ぶと表示できる.
Windows の設定などは,キーワードを英語で入力する方が良いのかもしれない.
2024/06/19
「スタート」で表示される「検索ボックス」に何か入力すると「…」(オプション メニュー)が表示される.
それを選択すると「インデックス オプション」などがある.
2024/06/20
「インデックス オプション」は次の様なコマンドでも可能なので,::ShellExecute で呼び出す様にした.
control.exe /name Microsoft.IndexingOptions
3MF データが開けない?
3D データを 3MF 出力したものが開けなくなったと問い合わせが入った.
開発環境では現象がなかなか確認できなかったが,自前の iZIP.exe 版の影響とわかった.
Shell の ZIP 機能を使用していた 2022/12 いっぱいぐらいはうまく動作する.
.net を使用した iZIP.exe にしてからの 3MF がうまく開けない.
自前で作成している 3D ビューアなどではうまく開ける.
それぞれの 3MF を展開して,テキストエディタなどで比較しても特に違いはない.
また 3MF をバイナリで比較すると,少し異なる所があることはわかる.
まだはっきりしていないが,バイナリを見た限りではディレクトリ区切りの影響か?
2024/05/16
iZIP.exe が影響していることはわかったが,その違いがなかなかわからなかった.
iZIP.exe を起動して 3MF を展開したイメージのフォルダをドロップして確認.
iZIP.exe をビルドしている VC が 2022 でないとうまくないみたい.
関連しそうなのは次の情報か?
軽減策:ZipArchiveEntry.FullName パスの区切り文字
.NET Framework 4.6.x への移行に関する変更の再ターゲット
試しに ZipFile::CreateFromDirectory に渡すファイル名を ‘/’ にしてみたが,効果はなかった.
error C2272
次の様なコードで static にしようとすると,
class RegPatNo : public iDocCSV {
// ...
public:
/* static */ tstring GetPathRPC (void) const ;
} ;
inline tstring RegPatNo::GetPathRPC (void) const
{
tstring tmp_path = ::Get_i_Tools_tmp_date() ;
::Folder_Create(tmp_path) ;
tstring rpc_name = ::Path_AddLastSP(tmp_path) + FN_RP_csv ;
return rpc_name ;
}
--------------------Configuration: T_CSV_ - Win32 Debug--------------------
Compiling...
T_CSV_.cpp
t:\develop\_.src\test\regpatno.hpp(101) : error C2272: 'GetPathRPC' : modifiers not allowed on static member functions
Error executing cl.exe.
T_CSV_.exe - 1 error(s), 0 warning(s)
次の様に const の指定を外さなければならない.
static tstring GetPathRPC (void) ;
DSM 7 upload_max_filesize
DirectoryNotFoundException
以前作成した .NET の ZipFile クラス を 使用した exe .
この iZIP.exe で System.IO.DirectoryNotFoundException .
原因は,ある環境でユーザ名に半角スペースが含まれていた.
ユーザ名に半角スペースを含む環境を作成して ZipFold.exe で同じ様な操作を行ったが,再現できない.
いろいろと調べていると,iZIP.exe に渡す時の入力のフォルダ名に半角スペースが含まれていると現象が発生する.
C:\Users\Iwao\AppData\Local\Temp\i_Tools.tmp\test>Q:\C_Temp\i_Tools\ZIP\iZIP\Release.140\iZIP.exe a "C:\Users\Iwao\AppData\Local\Temp\Send.tmp\20240416\09 22 39\" abc.zip
ハンドルされていない例外: System.IO.DirectoryNotFoundException: パス 'C:\Users\Iwao\AppData\Local\Temp\i_Tools.tmp\zip_CLI\20240416\154459\a' の一部が見つかりませんでした。
場所 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
場所 System.IO.FileSystemEnumerableIterator`1.CommonInit()
場所 System.IO.FileSystemEnumerableIterator`1..ctor(String path, String originalUserPath, String searchPattern, SearchOption searchOption, SearchResultHandler`1 resultHandler, Boolean checkHost)
場所 System.IO.DirectoryInfo.EnumerateFileSystemInfos(String searchPattern, SearchOption searchOption)
場所 System.IO.Compression.ZipFile.DoCreateFromDirectory(String sourceDirectoryName, String destinationArchiveFileName, Nullable`1 compressionLevel, Boolean includeBaseDirectory, Encoding entryNameEncoding)
場所 ZipFile_create(Char* fld_file, Char* zip_name) 場所 c:\program files (x86)\microsoft visual studio 14.0\vc\include\xstring:行 1017
場所 zip_create(basic_string<wchar_t\,std::char_traits<wchar_t>\,std::allocator<wchar_t> >* , Char* zip_root) 場所 t:\develop\_.src\__mlt_\zip_func.hxx:行 47
場所 zip_create(Char* fld_file, Char* zip_name) 場所 t:\develop\_.src\__mlt_\zip_func.hxx:行 143
場所 call_func(Int32 argc, Char** argv) 場所 c:\program files (x86)\microsoft visual studio 14.0\vc\include\xstring:行 521
場所 wmain(Int32 argc, Char** argv) 場所 l:\document\develop\tools\_free\ziptools\izip\izip.cpp:行 168
場所 _wmainCRTStartup()
C:\Users\Iwao\AppData\Local\Temp\i_Tools.tmp\test>Q:\C_Temp\i_Tools\ZIP\iZIP\Release.140\iZIP.exe a "C:\Users\Iwao\AppData\Local\Temp\Send.tmp\20240416\09 22 39\" ".\20240416\1545\abc.zip"
ハンドルされていない例外: System.IO.DirectoryNotFoundException: パス 'C:\Users\Iwao\AppData\Local\Temp\i_Tools.tmp\zip_CLI\20240416\154602\a' の一部が見つかりませんでした。
場所 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
場所 System.IO.FileSystemEnumerableIterator`1.CommonInit()
場所 System.IO.FileSystemEnumerableIterator`1..ctor(String path, String originalUserPath, String searchPattern, SearchOption searchOption, SearchResultHandler`1 resultHandler, Boolean checkHost)
場所 System.IO.DirectoryInfo.EnumerateFileSystemInfos(String searchPattern, SearchOption searchOption)
場所 System.IO.Compression.ZipFile.DoCreateFromDirectory(String sourceDirectoryName, String destinationArchiveFileName, Nullable`1 compressionLevel, Boolean includeBaseDirectory, Encoding entryNameEncoding)
場所 ZipFile_create(Char* fld_file, Char* zip_name) 場所 c:\program files (x86)\microsoft visual studio 14.0\vc\include\xstring:行 1017
場所 zip_create(basic_string<wchar_t\,std::char_traits<wchar_t>\,std::allocator<wchar_t> >* , Char* zip_root) 場所 t:\develop\_.src\__mlt_\zip_func.hxx:行 47
場所 zip_create(Char* fld_file, Char* zip_name) 場所 t:\develop\_.src\__mlt_\zip_func.hxx:行 143
場所 call_func(Int32 argc, Char** argv) 場所 c:\program files (x86)\microsoft visual studio 14.0\vc\include\xstring:行 521
場所 wmain(Int32 argc, Char** argv) 場所 l:\document\develop\tools\_free\ziptools\izip\izip.cpp:行 168
場所 _wmainCRTStartup()
C:\Users\Iwao\AppData\Local\Temp\i_Tools.tmp\test>
入力のフォルダ名の “…\20240416\09 22 39\” の “09 22 39” 直後の ‘\’ を削除するとうまくいく.
デバッガで iZIP.exe に渡されるコマンドラインを確認.
デバッグ時,ダンプする様にコードを書換え.
やはり argv がうまく解釈されていない.
argv[2]が「…\17 53 06″ c:\…」となってしまっている.
“…\17 53 06\\” の様にすれば通ることは確認できた.
perse_commandline では ‘\”‘ がダブルクォーテーションと解釈され,’\\’ はバックスラッシュ?
「引数が正しくありません」
以前に書いた情報を整理.
Win10 環境で,MDI exe にドキュメントをドロップすると「引数が正しくありません」となることがある.
原因は ::CoInitinalize が呼び出されていないため.
コードでの対応方法としては InitInstance の最初に以下を追加.
// OLE ライブラリを初期化します。
if (!AfxOleInit()) {
AfxMessageBox(_T("OLE の初期化に失敗しました。")) ;
return FALSE ;
}
また,一度「開く」ダイアログを表示すると,その後は問題ない.
SSL 証明書の更新ができない?
以前から安定しない気がする証明書の更新.
うまく更新できることも多くなったとは思うが,手動で行うとうまくないことがある.
今までは,ルータの「ポートフォワーディング」で 80 を対象の NAS に変更して対応できていた.
それが,今日はうまくいかない.
外から http://27.92.169.109 にアクセスすると,別の Web サーバのままで,対象の NAS に転送されない.
ルータを再起動することで,うまく転送され,証明書の更新もできた.
2024/06/08
DS220+ と TS253D はちゃんと更新されている.
AS5202T はポートフォワーディングの設定で 80 を変更して取得.
今回 DS116 はなぜかうまく取得できない.
更新できた証明書は DS220+ などにインポートした.
2024/06/09
日を改めて DS116 もうまく更新できた.
VirusTotal Trojan 472047
最近 ViruaTotal で,VC 2022 ビルドの exe が引っ掛かる様になった気がする.
Antiy-AVL GrayWare/Win32.Wacapew
Arcabit Trojan.Lazy.D733EF [many]
BitDefender Gen:Variant.Lazy.472047
Emsisoft Gen:Variant.Lazy.472047 (B)
GData Gen:Variant.Lazy.474792
MAX Malware (ai Score=87)
MaxSecure Trojan.Malware.121218.susgen
McAfee GenericRXWN-PP!71DE1C7042EF
Rising Trojan.Generic@AI.83 (RDML:km3T2NBP/pqn91WCd2xwaA)
Skyhigh (SWG) GenericRXWN-PP!71DE1C7042EF
Trellix (FireEye) Gen:Variant.Lazy.472047
VIPRE Gen:Variant.Lazy.472047
VC 2015 や 2017 でビルドしたものはほぼ大丈夫だが,2019 や 2022 ではうまくない.
また,以前は検出されなかったものが,引っ掛かる様になったものもある.
誤検知と思われるが,どうしたものか…
プレーン テキスト フィルター ?
Windows Search でインデックスを作成するために,
[HKEY_CLASSES_ROOT\.(ext)\PersistentHandler]
@="{5E941D80-BF96-11CD-B579-08002B30BFEB}"
[HKEY_CURRENT_USER\SOFTWARE\Classes\.(ext)\PersistentHandler]
@="{5E941D80-BF96-11CD-B579-08002B30BFEB}"
いろいろ試したが,HKLM 以下が必要?
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.(ext)\PersistentHandler]
@="{5E941D80-BF96-11CD-B579-08002B30BFEB}"
反映される(インデックスが作成される)までに時間がかかるのでよくわからない.
確実なのは「プレーン テキスト フィルター」に設定して,「インデックスの設定」タブの「再構築」か?
ネットワーク上のファイルも検索できるみたいだが…
検索場所を指定して「 *.txt MICROSOFT FOUNDATION CLASS LIBRARY 」.
ネットワークドライブとして割り当てると検索できる?
検索されるまで時間がかかるのと,サーバにより?うまく検索できないことがある.
msi でインストールを実行できない
Win10 環境に msi でインストールしようとすると…
[Window Title]
Windows インストーラー
[Main Instruction]
システム管理者によって、ポリシーはこのインストールを実行できないように設定されています。
[OK]
検索すると「ローカルセキュリティポリシー」の設定などが見つかる.
他の Win10 を確認すると,同様に定義されていない.
この現象の環境は Windows Update があり,その更新後起動した状態のもの.
ポリシーを追加しようかと思ったが,念のため一度再起動.
すると,何もなかったかの様にインストールできる様になった.
何だったのだろう.
2024/04/17
また同じ現象に.
今度は,再起動する前に幾つかの exe を終了しながら確認.
ブラウザなど,メモリをそこそこ食っているものを終了.これは変わらずインストールできない.
「エクスプローラー」の「このディスプレイのすべてのウィンドウを閉じる」でインストールできる様になった.
NAS 証明書のインポート
ASUSTOR NAS から,証明書の更新ができなかったメールが来ていた.
This is a system event notification sent from AS5202T.
Event Level: WARNING
Date: 2024/02/09 00:00
User: SYSTEM
Event: [Certificate Manager] Authentication for as.mish.work failed.
https://dev.mish.work/wordpress/2022/08/13/authentication-for-failed/
うまく更新できることもあったと思うが,ルータの設定で 80 が対象の NAS へ転送される様に設定して手動で更新.
Synology NAS の証明書の所を見ると QNAP NAS の期限も迫っている.
QNAP NAS の証明書を見ると,こちらはちゃんと更新されている.
それをエクスポートして,Synology NAS でインポート.
インポートする手順は「証明書」タブの「追加」.
「既存の認証を置き換えます」を選んでドロップダウンから対象のものを選択.
「次へ」を押して「証明書のインポート」を選択して「次へ」.
「秘密キー」と「証明書」などを指定して「OK」で更新できる.
AppName.ini
何年か前に作成したツールをビルドしていて,ちょっと気になったこと.
exe 名を変更した時,設定値がうまく引き継がれない.
レジストリを使用している時は AFX_IDS_APP_TITLE を追加すれば良いが ini では効果がない.
最近書いたコードからは,次の様に m_pszProfileName を変更する様にしている.
BOOL RI_Set_ProfileName (void)
{
CWinApp* app = AfxGetApp() ;
if (app == NULL) { return FALSE ; }
CString nowINI = app->m_pszProfileName ;
CString newINI = ::INI_get_module_ini().c_str() ;
if (nowINI == newINI) { return TRUE ; }
free((void*)app->m_pszProfileName) ;
app->m_pszProfileName = _tcsdup(newINI) ;
{
std::tout << _T("org=") << LPCTSTR(nowINI) << std::endl ;
std::tout << _T("new=") << LPCTSTR(newINI) << std::endl ;
}
return TRUE ;
}
ダイアログベース コマンドライン
ファイルの関連付けを調べていて,3D データを表示するツールに関連付けるとうまく表示されない.
MFC ダイアログベースのスケルトンでは,コマンドラインの標準的な処理は入っていない.
それで OnInitDialog の最後の方で次の様にした.
{
CStringArray readFiles ;
for (int a_index=1 ; a_index<__argc ; a_index++) {
CString av = __targv[a_index] ;
readFiles.Add(av) ;
}
if (readFiles.GetSize() > 0) {
ReadFiles(readFiles) ;
}
}
更に,幾つかのツールでうまく開けないものがあった.
InitInstance での初期化手順がうまくなかった.
ADM 4.2.6.ROR2 IPv6
ASUSTOR NAS の ADM の更新版があったので更新.
更新後,ブラウザでアクセスすると…
LAN 内の PC から as.mish.work にアクセスできない.
IP では可能.mish.myasustor.com も OK .
4G 回線を使用したスマートフォンからのアクセスは可能.
IPv6 でのアクセスができなくなっている?
http://[240f:33:c6c7:1:12bf:48ff:fe8d:50ab]/
アドレスが変わってしまっている.
リリースノートを読むと,確かに書いてあった.
* IPv6 アドレスのプライバシーとセキュリティを強化するために、IPv6 アドレス生成メカニズムを変更しました。
AAAA レコードを更新して対応.
1 時間程経って as.mish.work にアクセスできる様になった.