「ダイアログ バー」の追加
Win10 環境で VC 6 を使えるようにはなったが,「コンポーネントギャラリ」はうまく機能しないみたい.
今回利用しようとしたのは「ダイアログ バー」.ヘルプの内容は次の様なもの.
ダイアログ バー コンポーネント : 挿入結果
ダイアログ バー コンポーネントを挿入すると、プロジェクト コードに次の変更が加えられます。
- プロジェクトのリソース スクリプトにダイアログ テンプレート リソースが追加されます。このダイアログ テンプレートにコントロールを追加するには、Visual C++ のダイアログ エディタを使用できます。
- 指定したフレーム ウィンドウ クラスに、CDialogBar 型のメンバ変数の宣言が追加されます。デフォルトの変数名 m_wndMyDialogBar は変更できます。ダイアログ バーの初期プロパティ (標準では可視、ドッキング可能など) も指定できます。
- フレーム ウィンドウの OnCreate メンバ関数に初期化コードが追加されます。この初期化コードは、CDialogBar::Create を呼び出して、ダイアログ バーのドッキング オプションを設定します。また、ダイアログ バーの表示/非表示に関する初期化もここで行います。
- ダイアログ バーの表示/非表示に関するメニュー項目のサポートが追加されます。
ダイアログ バー コンポーネントを挿入しても、ダイアログ バーの表示/非表示を切り替えるためのメニュー項目はメニュー リソースに追加されません。このメニュー項目はメニュー エディタを使用して手作業で追加する必要があります。コンポーネントは、メニュー項目の追加手順を記述した “TODO” コメントを追加します。このコメントは、ダイアログ バーを追加したフレーム クラスの OnCreate 関数に挿入できます。
- 2 つの関数のハンドラがフレーム ウィンドウ クラスのメッセージ マップに追加されます。
- OnUpdateXXX 関数はメニュー項目の状態を随時更新します。
- 次に、OnBarCheck 関数は、メニュー項目のチェックマークのオン/オフどおりに、ダイアログ バーが表示/非表示になっているかどうかを調べます。
メニュー項目のプロンプト文字列がプロジェクトのストリング テーブル リソースに追加されます。コマンド ハンドラをインプリメントするには、ClassWizard を使用して、次の手順に従います。
- ResourceView で、ダイアログ バーのダイアログ テンプレートを開きます。
- Ctrl キーを押しながら W キーを押して ClassWizard を開きます。[クラスの追加] ダイアログ ボックスが表示されます。
- [クラスを選択] をクリックして、[OK] をクリックします。[クラスの選択] ダイアログ ボックスが表示されます。
- ダイアログ バー コンポーネントを挿入したときに指定したフレーム ウィンドウ クラスの名前をクリックして、[選択] をクリックします。このクラスとダイアログ リソースを関連付けるかどうかを確認するメッセージ ボックスが表示されます。
- [はい] をクリックします。[MFC ClassWizard] ダイアログ ボックスの [メッセージ マップ] タブの [オブジェクト ID] ボックスの一覧に、ダイアログ バーのコントロールの ID が表示されます。
- 通常の方法で、コントロールにコマンド ハンドラを割り当てます。
メモ ActiveX コントロールをダイアログ バーに追加する場合は、プロジェクトが ActiveX コントロール コンテナ機能をサポートしている必要があります。AppWizard でプロジェクトのスケルトンを生成したときに [ActiveX コントロール] オプションを選択していた場合は、ActiveX コントロール コンテナ機能のサポートがプロジェクトに含まれています。サポートがない場合は、[Gallery] の [Visual C++ Components] フォルダから [ActiveX コントロール コンテナ コンポーネント] を選択してプロジェクトに挿入する必要があります。
実際のコードなどの編集は次の様な手順.
ダイアログリソースの追加.
「スタイル」を「チャイルド」に.
「境界線」を「しない」に.
「タイトルバー」のチェックを外す.
CMainFrame に変数を追加.
CDialogBar m_wndDlgBar ;
CMainFrame::OnCreate に追加.
{
if (!m_wndDlgBar.Create(this, IDD_DIALOG_BAR,
CBRS_RIGHT | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_HIDE_INPLACE,
ID_DIALOG_BAR))
{
TRACE0("Failed to create dialog bar m_wndDlgBar\n");
return -1; // fail to create
}
// m_wndDlgBar.EnableDocking(CBRS_ALIGN_RIGHT | CBRS_ALIGN_LEFT);
// EnableDocking(CBRS_ALIGN_ANY);
// DockControlBar(&m_wndDlgBar);
}
Resource.h に ID_DIALOG_BAR を追加.
ダイアログバー上のコントロールに対しての操作は次の様な感じ.
void CMainFrame::OnSize(UINT nType, int cx, int cy)
{
CFrameWnd::OnSize(nType, cx, cy);
if (m_wndDlgBar.GetSafeHwnd() == NULL) { return ; }
CListBox* listBI = (CListBox*)m_wndDlgBar.GetDlgItem(IDC_LIST_BI) ;
FitWindow(&m_wndDlgBar,listBI,3, FALSE, FALSE, FALSE, FALSE) ;
}
ASUSTOR NAS Mail Server
VNC 接続が安定しない?
最近は使う頻度が減ってきたが…
QNAP NAS の Virtualization Station の Win10 x86 への VNC 接続が安定しない.
他にも幾つか登録しているが,うまく開けないものが多い.
また Android からは,いつからかわからないが開けなくなってしまっている.
Virtualization Station へはブラウザからも接続できて操作はできるが,ちょっと反応が悪い.
VNC のクライアントは VNC Viewer ,サーバは UltraVNC を使用している.
ハッキリわからないが,Win10 などのバージョンが上がった関係か?
先ず VNC Viewer を Windows 版 6.21.1109 に更新.Android 版は最新版になっていた.
予想通りだが,特に変わらず.
サーバ側の UltraVNC は 1.2.24 や 1.2.40 が入っていた.これを 1.3.60 に更新.
インストール後,再起動が要求されるが,試しに Android から接続するとうまくいった.
どうも UltraVNC が古いことがまずかったと思われる.
IShellLink::SetShowCmd
ツールなどのスタートアップへの登録.
スタートアップのパスの取得は次の様な感じ.
LPITEMIDLIST pidl = 0 ;
::SHGetSpecialFolderLocation(NULL,CSIDL_STARTUP,&pidl) ;
tstring start_path = ::SH_GetPathFromIDList(pidl) ;
lnk の作成は,以前にツールを作成してその時のものを利用.
http://mish.work/joomla/index.php/i-tools/create-l.html
https://mish.myds.me/wordpress/dev/2020/01/11/msdn-createlink/
lnk のスタートアップへの登録は次の様にできる.
tstring start_lnk = ::Path_AddLastSP(start_path) + ::Path_GetTitle(file_path) + _T(".lnk") ;
tstring descript = _T("コメント") ;
::Create_lnk(file_path.c_str(),start_lnk.c_str(),descript.c_str()) ;
今回は,robocopy のコマンドを BAT ファイルとして生成し,それをスタートアップへ登録したかった.
http://mish.work/joomla/index.php/i-tools/cl-copy.html
動作としてはうまく機能するが,BAT ファイルを使用しているためコマンドプロンプトが表示されてしまう.
最小化された状態で起動する方が動作はスマート?
lnk 作成時に指定できるだろうと思い 検索 するとあった.
シェルリンク
IShellLink::SetShowCmd を使えば良さそう.
SW_SHOWMINIMIZED を指定してもうまく動作しない.SW_SHOWMAXIMIZED はうまく動作する.
SW_SHOWMINIMIZED ではなく SW_SHOWMINNOACTIVE を使うみたい.
::Create_lnk(file_path.c_str(),start_lnk.c_str(),descript.c_str(),work_dir.c_str(),SW_SHOWMINNOACTIVE) ;
::CreateLink している所を変更してうまくいった.
S_lnk.hxx
WS2022 IIS 環境に PHP インストール
先日作成した Windows Server 2022 の IIS 環境 に PHP をインストール.
先ず,CGI を追加.
Web PI のインストール.
Web Platform Installer で PHP 8 のインストール.
次の内容の php を開き,うまく動作していることを確認.
<?php phpinfo(); ?>
Edge で WebGL が表示できない?
Edge で three.js を利用したデータが表示できなかった.
WebGL で表示可能な形式に変換
https://itl.mish.work/i_Tools/to_wgl/
デバッガで追いかけると,WebGL を利用できない様なエラー.
Edge を再起動すると,うまく表示できるようになった.
何だったのだろう?
2023/01/17
Win8.1 環境の Edge で「使用可能な場合はハードウェア …」を OFF にする必要があった.
2024/07/18
仮想マシンの Win11 Edge で表示できなくなっていたので,その設定.
Edge の「設定」-「システムとパフォーマンス」で
「使用可能な場合はグラフィック アクセラレータを使用する」を「OFF」にして「再起動」.
2024/07/24
環境や 3D データなどによると思いますが,
「…グラフィック アクセラレータを…」を「OFF」にすると表示が遅くなったり,表示されなくなることもあります.
::CreateMutex の名称
以前作成した W_mutex を利用.
同じドキュメントを開かない様なガードに使えると思い,単体テスト用のコードを書いた.
#include "messbar.hxx"
#include "itls_tmp.hxx"
#include "cmd_line.hxx"
#include "S_Exec.hxx"
#include "W_mutex.hxx"
tstring make_mutex_name (const tstring& doc_name)
{
tstring mutex_name ;
v_tstring argv = ::get_arg() ;
if (argv.size() > 0) {
mutex_name += argv[0] ;
mutex_name += _T(" ") ;
}
mutex_name += doc_name ;
///////////////////////////////////////////////////////////////
// mutex_name = ::Path_Normalize(mutex_name,_T('/')) ;
///////////////////////////////////////////////////////////////
std::terr << mutex_name << std::endl ;
return mutex_name ;
}
bool t_wait (const tstring& doc_name)
{
tstring mutex_n = ::make_mutex_name(doc_name) ;
size_t bar_max = 1000 ;
MessageBar bar(_T("wait"),bar_max) ;
for (size_t index=0 ; index<bar_max ; index++) {
::Sleep(100) ;
W_mutex mutex(mutex_n.c_str()) ;
bar.SetBarInc() ;
if (mutex.Is_exist()) {
}
else {
break ;
}
}
return true ;
}
bool t_loop (const tstring& doc_name)
{
tstring mutex_n = ::make_mutex_name(doc_name) ;
W_mutex mutex(mutex_n.c_str()) ;
size_t bar_max = 100 ;
MessageBar bar(_T("loop"),bar_max) ;
for (size_t index=0 ; index<bar_max ; index++) {
bar.SetBarInc() ;
::Sleep(30) ;
}
::Sleep(2000) ;
return true ;
}
bool test (const tstring& doc_name)
{
::t_wait(doc_name) ;
::t_loop(doc_name) ;
return true ;
}
int _tmain (int argc,TCHAR* argv[])
{
_tsetlocale(LC_ALL,_T("")) ;
::reg_argv(argc,argv) ;
if (argc > 1) {
test(argv[1]) ;
}
else {
time_t now = ::time(NULL) ;
size_t count = 5 ;
tstring test_cmd ;
S_Exec se ;
{
tstring exe_name ;
tstring tmp_name ;
{
exe_name = argv[0] ;
}
{
tstring temp_dir = ::Get_i_Tools_tmp() ;
tstring time_str = ::Now_Format(_T("%H%M%S")) ;
tmp_name = ::Path_AddLastSP(temp_dir) + time_str + _T(".tmp") ;
}
{
test_cmd = exe_name + _T(" ") + tmp_name ;
}
{
se.SetFile (exe_name.c_str()) ;
se.SetParamaters(tmp_name.c_str()) ;
}
{
for (size_t index=0 ; index<count ; index++) {
std::terr << test_cmd << std::endl ;
se.Execute() ;
::Sleep(2000) ;
}
}
{
::Sleep(1000) ;
tstring mutex_n = ::make_mutex_name(tmp_name.c_str()) ;
size_t bar_max = 1000 ;
MessageBar bar(_T("test wait "),bar_max) ;
for (size_t index=0 ; index<bar_max ; index++) {
W_mutex mutex(mutex_n.c_str()) ;
if (mutex.Is_exist()) {
bar.SetBarInc() ;
::Sleep(100) ;
}
else {
break ;
}
}
}
}
}
return 0 ;
}
#include "messbar.cxx"
Mutex の名称としては,exe 名とドキュメント名を連結したものとした.
最初,実行させるとうまく動作しない(Mutex オブジェクトが存在するはずなのに抜ける).
::CreateMutex に与えている名称がうまくなかった.’\’ が使えない.
パスの区切りを ‘/’ に変更してうまくいった.
次の様なコードをアプリケーションクラスの InitInstance に追加.
{
if (cmdInfo.m_nShellCommand == CCommandLineInfo::FileOpen) {
tstring doc_name = cmdInfo.m_strFileName ;
tstring exe_name = ::Get_module_name() ;
tstring mtx_name = exe_name + _T(" ") + doc_name ;
mtx_name = ::Path_Normalize(mtx_name,_T('/')) ;
static W_mutex mutex(mtx_name.c_str()) ;
if (mutex.Is_exist()) {
return FALSE ;
}
}
}
Jetpack Boost の影響?
このページもそうだが,
WordPress のページにつけている「QR コード」が意図した位置に表示されていないことに気づいた.
先日,表示が速くなるかなと思い「Jetpack Boost」の設定を変更した.
どうもこれが影響していたみたい.
「必須ではない JavaScript を後回しに」の機能を「OFF」に.
* QRコードは株式会社デンソーウェーブの登録商標です.
https://www.qrcode.com/faq.html#patentH2Title
再起動マネージャ
何年か前に有効にした「再起動マネージャ」.
Restart Manager in MFC
MFC 再起動マネージャ
その実装がうまくなかった.
編集操作中に「自動保存」が動作すると,意図しない状態になってしまうことがあった.
原因は,実装方法がうまくないだけではあるが,なかなか難しい.
Serialize が呼ばれた時に,一部の情報を更新しているため,例えば選ばれているものに影響を与えてしまう.
実際はデータに応じて選択状態が変わるのだが,それに気づかず操作してしまうことがある.
これとは別にバックアップ機能を持っているので「自動保存」が動作しない様に修正することに.
本当はこれだけでは足りない.
編集操作中に「上書き保存」された時も同様に動作するため,この部分の修正が必要か?
ユーザが意識している操作なので,現状のままとするか?
VS Installer
久しぶりにインストーラを…
今までのものは「VS インストーラ」.
前も使ったが忘れていた.アンインストールで,ファイルをそのまま残す設定.
「Permanent」を「True」に.
ショートカットなどを作成すると,アンインストール時に時間がかかってしまう.
それで,以前は使ってなかったが,更新版のインストール.
「RemovePreviousVersions」を「True」に.
「Version」を更新する.同様に exe などの更新も必要.bmp などはタイムスタンプでいける?
2024/06/21
どこかに設定があるのかもしれないが「Permanent」を「True」としてインストール後「False」としても効かない?
01727 : アンインストール時にファイルが削除されない(msi 形式 インストーラ)
次の所に “00000000000000000000000000000000” が入っているので削除する必要があった.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components\…
いろいろ検索してみたが,レジストリの該当箇所を削除するしかなさそう.
Recommended way to uninstall a file that was configured as “Permanent” once
VS 2022 インストール
VS 2022 があったのでインストール.
共通の C の include などは VC 10 からの設定が引き継がれている(同じ所).
フォールバックの設定を E:\Temp\_Fallbck に.
MFC などランタイムは VC 2015 以降同じもの.
3D ビューアをビルドしたが,その範囲では,特に目立った違いはなさそう.
Current という表現は何なんだろうか?
VC のランタイム vc_redist.x86.exe などは次の所にまとめている.
https://mish.work/joomla/index.php/cpp/ref-vcredist-xxx-exe.html
VC 2015 から 2022 までは,同じもので動作する.
AS5202T VirtualBox に WS2022
ASUSTOR NAS AS5202T の VirtualBox 環境に Windows Server 2022 のインストール.
最初,リモート接続するための設定箇所がわからなかった.
Net Address の所に,アドレス(127.0.0.1 だったと思う)が入っていて,それをクリアする必要があった.
あとは,通常の手順.
「Ctrl」+「Alt」+「Delete」にあたるものがわからなかったが,これは,「Ctrl」+「Alt」+「End」.
マウスの位置がずれていたが,VirtualBox Guest Additions を入れて対応.
VS 6 と SP6 を入れて,今の所デバッグなどもできている.
https://dev.mish.work/wordpress/2021/06/10/win-10-vs6-install/
2021/11/10
リモートデスクトップ内の画面コピーは,「Ctrl」+「Alt」+「+」.
アクティブウィンドウのコピー 「Ctrl」+「Alt」+「-」.
2021/11/29
LAN 上の他の PC からの参照は問題なさそうだが,WS2022 から他の PC への参照が非常に遅い.
以前同じ様な環境に Win10 を入れていたが,この時も他からの参照のみだったので気づかなかった.
PC 上の仮想マシン は,速くはないが使えるレベル.NAS なので,これが限度か?
WS2022 ASP ActiveX dll exe の設定
必要に応じてファイアウォールの設定.
オートメーションを使用しているのでエラーになる.
サーバ上で確認すると,
An error occurred on the server when processing the URL. Please contact the system administrator.
If you are the system administrator please click here to find out more about this error.
「ASP」-「機能を開く」で「ブラウザへのエラー送信」を「True」に.
Server オブジェクト エラー ‘ASP 0177 : 800401f3’
Server.CreateObject に失敗しました
/_LIB_/L_Mainte.asp, 行 33
800401f3
エラーは Server.CreateObject を呼んでいる所.
set oFCnt = Server.CreateObject("AsFile.Counter")
AsFile.dll を登録 .
この dll は 32 ビットなので「32 ビット アプリケーションの有効化」.
次の様な asp を実行してテスト.
<%@ Language=VBScript %>
<% Option Explicit %>
<HTML>
<BODY>
<%
on error resume Next
dim oFCnt : set oFCnt = Server.CreateObject("AsFile.Counter")
dim oImgC : set oImgC = Server.CreateObject("AsImageConverter.Application")
Response.Write "AsFile Count.." & oFCnt.GetVersion & "<br>" & vbCrLf
Response.Write "AsImgC App …" & oImgC.GetVersion & "<br>" & vbCrLf
%>
</BODY>
</HTML>
AsimageConverter は exe でまだ登録していない状態.
「管理者」として起動したコマンドプロンプトで,AsImgCnv.exe を登録.
「コンポーネント サービス」で,IUSR が起動できるように設定.
32 ビット exe は,そのままの comexp.msc の起動では表示されない.
「 %windir%\system32\comexp.msc /32 」の様に /32 のオプションの指定が必要.
「セキュリティ」タブ-「起動と…」-「カスタマイズ」-「編集」.
「IUSR」を追加して「ローカルからのアクティブ化」にチェック.
これで 32 ビットのオートメーション dll と exe が起動できるようになる.
「ODBC データソース 32 ビット」の設定.
設定直後は,次のエラーになることがある?
Provider エラー ‘80004005’
この場合は OS を再起動すればうまく動作する 様になる.
参考にさせてもらったところ.
64bit Windows 環境で 32bit の DCOM コンポーネントを登録しても一覧に表示されない
64bit版Windowsでx32bit版のDCOMが表示されない
WS2022 Classic ASP インストール
Windows Server 2022 を VirtualBox 仮想マシンにインストール.
特に難しい所はない.
続いて Classic ASP のインストール.
「サーバーマネージャー」で「管理」-「役割と機能の追加」.
「サーバーの役割」で「Web サーバー(IIS)」を選択.
「役割サービス」で「ASP」を選択.
ASP をインストール.
簡単な asp ファイルを作成.
MSDN 2001/10
mk:@MSITStore:C:\Program%20Files%20(x86)\Microsoft%20Visual%20Studio\MSDN\2001OCT\1041\jpiis.chm::/iishelp/iis/htm/asp/iiwabasi.htm
<%@ Language=VBScript %>
<HTML>
<BODY>
This page was last refreshed on <%= Now() %>.
</BODY>
</HTML>
参考にさせてもらったところ.
Windows Server 2022 にIIS 10.0をインストールし、ASP.NETを有効化
windows server 2016で、classic asp を有効化
Windowsの機能の有効化(Windows Server 2016)
Windows のパスワードの複雑性の要件を無効にする (Windows Server Tips)
繋がらない!Windows10で共有フォルダにアクセスできない時の対処法
次のツールも問題なく動作した.
Win10 用 タイトルバーの色設定
2021/11/09
共有フォルダにアクセスしようとすると,アクセスできない.
[Window Title]
ネットワーク エラー
[Main Instruction]
\\WS2022 にアクセスできません
[Content]
名前のスペルを確認しても問題がない場合は、ネットワークに問題がある可能性があります。ネットワークの問題を識別して解決するには、[診断] をクリックします。
[^] 詳細を非表示にします [診断(D)] [キャンセル]
[Expanded Information]
エラー コード: 0x80070035
ネットワーク パスが見つかりません。
Win7 環境や Win10 20H2 などからは問題なくアクセスできる.
「グループポリシーでゲストログオンを許可する」必要があった.
サーチコンソールの警告と VirusTotal
以前から,このサイトで「一般的ではないダウンロード」の警告が表示されている.
対応方法がわからずそのままとなっていた.
「ウィルス対策ソフト 誤検知」などで調べていて,VirusTotal を見つけた.
同じコードでも VC の異なるバージョンでビルドしたもので結果が異なる.
VC | 8 | 11 | 12 | 141 | 142 |
GLSm | 0 | Cylance Unsafe |
0 | Cylance Unsafe |
0 |
i3DC | 0 | Cylance Unsafe |
Microsoft Trojan:Win32/Sabsik.FL.B!ml |
Microsoft Trojan:Win32/Sabsik.FL.B!ml |
0 |
i3DV | 0 | Cylance Unsafe |
Microsoft Trojan:Win32/Sabsik.FL.B!ml |
0 | |
S_as | SecureAge APEX Malicious |
SecureAge APEX Malicious |
0 | 0 | |
TDIB | 0 | Cylance Unsafe |
0 | 0 |
VC 6 SecureAge APEX Malicious
VC 9 SecureAge APEX Malicious , VBA32 Heur.Malware-Cryptor.Hlux
VC140 Cylance Unsafe
VC 10 , 142 は 0 .
これで順につぶしていけば,「一般的ではないダウンロード」の警告はなくなるか?
削除中にエラーが発生しました
また,削除できないキーができてしまった.
[Window Title]
キーの削除エラー
[Content]
・ を削除できません。削除中にエラーが発生しました。
[OK]
RegDelNull を探すと,場所が変わっていた.
RegDelNull v1.11
使い方は以前と同じ.
Microsoft Windows [Version 10.0.19043.1288] (c) Microsoft Corporation. All rights reserved. C:\Users\Iwao>cd %TMP% C:\Users\Iwao\AppData\Local\Temp>J:\Download\Tools\MS\Regdelnull\RegDelNull.exe RegDelNull v1.11 - Delete Registry keys with embedded Nulls Copyright (C) 2005-2016 Mark Russinovich Sysinternals - www.sysinternals.com Scan complete. C:\Users\Iwao\AppData\Local\Temp>J:\Download\Tools\MS\Regdelnull\RegDelNull.exe hkcu\SOFTWARE\Iwao\****\x86\BAPMan RegDelNull v1.11 - Delete Registry keys with embedded Nulls Copyright (C) 2005-2016 Mark Russinovich Sysinternals - www.sysinternals.com Null-embedded key (Nulls are replaced by '*'): HKCU\SOFTWARE\IWAO\****\X86\BAPMAN\?* Delete? (y/n) y Key successfully deleted. Scan complete. C:\Users\Iwao\AppData\Local\Temp>
::SetWindowPos(hWnd,…)
wndTopMost で,Z オーダーの最前面に.
{
CRect rect ;
GetWindowRect(&rect) ;
SetWindowPos(&wndTopMost,rect.left,rect.top,0,0,SWP_NOSIZE|SWP_NOACTIVATE) ;
}
幾つかの環境ではこれでうまく動作している.
今日作成したツールの CMSetNmTDlg::OnInitDialog() にこれを追加.
Win10 のホスト環境で最前面に移動しない.
仮想マシンで試すと意図した動作.
ホストの,以前に起動したツールは前面のまま保持された.
が,一度終わらせて再起動したら,最前面にならなくなった.
ちょっとよくわからないが,何かが邪魔しているのか?
PC を再起動すれば直るかもしれないが…
とりあえずメモ.
2021/10/25
explorer.exe の再起動でうまく動作する様になったみたい.
他 AP などからの操作の場合 SetForegroundWindow
2023/07/12
Windows API だと次の様に指定できる.
::SetWindowPos(this->GetSafeHwnd(),HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE|SWP_NOACTIVATE) ;
2 つ目の引数は次のものが指定可能.
#define HWND_TOP ((HWND)0)
#define HWND_BOTTOM ((HWND)1)
#define HWND_TOPMOST ((HWND)-1)
#define HWND_NOTOPMOST ((HWND)-2)
ADM 更新で WordPress が…
スマートフォンの AiMaster で ASUSTOR NAS にアクセスすると ADM のアップデートがあった.
特に気にすることなく更新.
その後,この NAS の WordPress のページにアクセスしようとすると開けない.404 になってしまう.
AiMaster ではわかり辛いので,今度は PC から ASUSTOR NAS へアクセス.
すると WordPress などがグレーになっている.
ネットワーク上などから WordPress のフォルダも見えない.
App Central で確認すると WordPress などの機能が無効(OFF)になっている.
画像をとり損ねたが,ON にしようとすると「MariaDB の更新が必要」とのメッセージが表示された.
MariaDB に入ると更新が始まった.
更新後,App Central で WordPress などを ON に.
ちゃんと動作する様になった.
FBX SDK 2020.2.1 に更新
FBX SDK を 2020.2.1 に更新.
プロジェクト設定の,インクルードとライブラリのディレクトリを変更.
C:\Program Files\Autodesk\FBX\FBX SDK\2020.2.1\include;%(AdditionalIncludeDirectories)
C:\Program Files\Autodesk\FBX\FBX SDK\2020.2.1\lib\vs2019\x86\$(Configuration);%(AdditionalLibraryDirectories)
特に問題なくビルド完了.動作テストはこれから.
#pragma comment (lib, “LibFbxSDK-MD.lib”) などの設定は次の所に書いている.
https://jml.mish.work/index.php/cpp/fbx-sdk-setting.html
高 DPI
先日の更新で,ツールバーのボタンが小さくなった?という報告を受けたので,ちょっとまとめてみた.
DPI 認識 | DPI 対応 | 「互換性」タブ |
なし | 非対応 | システム |
高い DPI 認識 | システム | |
モニターごとの高い DPI 認識 | モニターごと | アプリケーション |
上から,非対応,システム,モニターごとx2 .下から 2 つ目は,100% のディスプレイから移動したもの.
高 DPI デバイスでの Windows のスケーリングの問題
PROCESS_DPI_AWARENESS enumeration (shellscalingapi.h)
C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\um\ShellScalingApi.h
いろいろ試したが,特にツールバーボタンの関係ではわからなかった.
2021/10/14
どうも,プライマリディスプレイの設定によりスケーリング動作が異なる?
125% にしたもの.
右下の 3 つのツールバーとダイアログの大きさなどがスケーリングされない.
それら以外の,メニューやステータスバーなどは正しくスケーリングされている様に見える.
VirtualBox の「スケールモード」で 80% 程度にしたもの.
exe のプロパティで「アプリケーション」としたもの.
ダイアログのフォントに固定サイズのものを使用しているので少し文字間隔が広くなってしまっている.
https://jml.mish.work/index.php/i-tools/setcolt.html