- ベストアンサー
アイコンの自動整列の属性取得 API
始めまして。質問させて下さい。 VC++ 2008 MFCで開発しております。 デスクトップ右クリックからの アイコンの自動整列-等間隔に整列の属性を変更したいと考えております。 取得/変更ができるAPIはありますでしょうか? デスクトッププロパティ取得関数にフラグを指定して 取得するのだと思いますが、調べてみたところそれらしいAPIを見つけられませんでした。 ご存知のかたがおられましたらご教授下さい。 宜しくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
もう一つ、「アイコンを自動整列」の方は、hwndSysListView を取得するところまでは ANo2 と同じで、hwndSysListView を使用して LONG lngStyle = GetWindowLong( hwndSysListView, GWL_STYLE ); if( lngStyle & LVS_AUTOARRANGE ) { MessageBox( NULL, _T("自動整列です。"), _T("GetAutoArrange" ), MB_ICONINFORMATION ); } else { MessageBox( NULL, _T("自動整列ではありません。"), _T("GetAutoArrange" ), MB_ICONINFORMATION ); } のような感じで判定可能です。
その他の回答 (2)
- tsukasa-12r
- ベストアンサー率65% (358/549)
「アイコンを等間隔に整列」かどうかは、他にも方法があるのかもしれませんが、次のようなコードで取得可能です。 ======================================================= #include <windows.h> #include <commctrl.h> int _tmain(int argc, _TCHAR* argv[]) { HWND hwndTop = FindWindow( _T("Progman"), _T("Program Manager") ); if( hwndTop ) { HWND hwndChild = GetWindow( hwndTop, GW_CHILD ); if( hwndChild ) { HWND hwndSysListView = GetWindow( hwndChild, GW_CHILD ); if( hwndSysListView ) { DWORD dwExStyle = ( DWORD )SendMessage( hwndSysListView, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0 ); if( dwExStyle & LVS_EX_SNAPTOGRID ) { MessageBox( NULL, _T("等間隔整列です。"), _T("GetSnapToGrid" ), MB_ICONINFORMATION ); } else { MessageBox( NULL, _T("等間隔整列ではありません。"), _T("GetSnapToGrid" ), MB_ICONINFORMATION ); } } } } return 0; } ======================================================= ( インデントのため、全角空白を使用しています。) 設定するには、LVM_SETEXTENDEDLISTVIEWSTYLE を使用します。
- bluecampus
- ベストアンサー率66% (138/209)
# 回答ではありません。 >アイコンの自動整列-等間隔に整列の属性を変更したい それは特定のアプリケーションからでしょうか? そこらへんの設定はユーザ個々で行うので、 勝手に変わるようなのはあまり良くないと思うのですが。 (たとえば、自動整列でない場合、そのユーザとしては最適なところに アイコンを配置したにも関わらず、そのアプリを起動したとたんに自動整列になってしまった。 せっかく使いやすい位置に置いてあったのになんだよ(怒)!となる)
お礼
bluecampus様 ご回答ありがとうございます。 当然の事だと思います。 私もアプリから個人設定を切り替えるソフトウェアは使用しません。 当然、動作後に戻します。 申し訳ないですが、ご指摘の内容は必要ありません。
お礼
tsukasa-12r様 ご回答ありがとうございました。 おかげさまで、機能が実現できました。 ありがとうございました。