13 #pragma managed( push, off )    43         , m_hStatusBar( 
nullptr )
    44         , m_hSeparator( 
nullptr )
    48         , m_hIconImageList( 
nullptr )
    49         , m_pcIconImageList( 
nullptr )
    50         , m_pcToolBarButtonList( 
nullptr )
    51         , m_bFocusOverlap( false )
    52         , m_bFocusFloating( false )
    53         , m_bMenuMouseActivate( false )
    54         , m_bValidMenuSelect( false )
    55         , m_bToolBarMouseActivate( false )
    56         , m_bValidToolBarSelect( false )
    57         , m_bPerformanceTimer( false )
    58         , m_nPerformanceFreq( 0 )
    59         , m_nPerformanceCount( 0 )
    63         , m_nFrameWaitTime( 0 )
    66         , m_nFpsMax( FPS_MAX )
    67         , m_bUpdatedFpsValue( false )
    71         ::InitCommonControls();
   105         ::DestroyAcceleratorTable( 
m_hAccel );
   176             ::PostQuitMessage( 0 );
   190             if ( 0 == ::IsWindowVisible( 
m_hWnd ) ) {
   196             RECT sClientRect = {};
   197             ::GetClientRect( 
m_hWnd, &sClientRect );
   198             if ( 0 == ::IsRectEmpty( &sClientRect ) ) {
   210                     ::ScreenToClient( 
m_hWnd, reinterpret_cast< LPPOINT >( &sRect.left ) );
   211                     ::ScreenToClient( 
m_hWnd, reinterpret_cast< LPPOINT >( &sRect.right ) );
   214                     int nLeft   = sRect.left;
   215                     int nTop    = sRect.bottom;
   216                     int nWidth  = ( sRect.right - nLeft );
   218                     ::SetWindowPos( 
m_hSeparator, HWND_TOP, nLeft, nTop, nWidth, nHeight, ( SWP_NOACTIVATE | SWP_SHOWWINDOW ) );
   251                 ::SetFocus( 
nullptr );
   259                 ::SetFocus( 
nullptr );
   269                 if ( 
nullptr != pcElement ) {
   282                 if ( 
nullptr != pcElement ) {
   319             if ( HTMENU == wHitTest ) {
   330                 ::GetCursorPos( &sPoint );
   341                         if ( TRUE == ::SendMessageW( 
m_cToolBar.
GetHandle(), TB_GETITEMRECT, nIndex, 
reinterpret_cast< LPARAM 
>( &sRect ) ) ) {
   343                             if ( 0 != ::PtInRect( &sRect, sPoint ) ) {
   348                                 int idCommand = ( *m_pcToolBarButtonList )[ nIndex ].idCommand;
   388                 HMENU hMenu = 
reinterpret_cast< HMENU 
>( 
m_lParam );
   445             NMHDR* psNmHdr = 
reinterpret_cast< LPNMHDR 
>( 
m_lParam );
   481             LPDRAWITEMSTRUCT lpDraw = 
reinterpret_cast< LPDRAWITEMSTRUCT 
>( 
m_lParam );
   515                     HWND hCtrl = 
reinterpret_cast< HWND 
>( 
m_lParam );
   516                     if ( 
nullptr != hCtrl ) {
   529                         hCtrl = 
reinterpret_cast< HWND 
>( uData );
   536                     if ( 
nullptr == pcPane ) {
   570             HWND hChild = 
reinterpret_cast< HWND 
>( 
m_lParam );
   574             if ( 
nullptr != pcElement ) {
   584             if ( 
nullptr != pcElement ) {
   607             HWND hChild = 
reinterpret_cast< HWND 
>( 
m_lParam );
   697             ::ShowWindow( 
m_hStatusBar, ( bView? SW_SHOWNOACTIVATE: SW_HIDE ) );
   704                 if ( 
nullptr != pcPane ) {
   776             if ( 
nullptr != pcFocus ) {
   881             if ( 
nullptr == pcPane ) {
   884                 if ( 
nullptr == pcPane ) {
   887                     if ( 
nullptr == pcPane ) {
   909             if ( 
nullptr == pcChild ) {
   925                     ::SetFocus( 
nullptr );
   943                     ::SetFocus( 
nullptr );
  1021         bool result = 
false;
  1027                 ::PostMessageW( 
m_hWnd, WM_CLOSE, 0, 0 );
  1044                 ::SendMessageW( 
m_hWnd, WM_SIZE, 0, 0 );
  1045                 ::UpdateWindow( 
m_hWnd );
  1062                 ::SendMessageW( 
m_hWnd, WM_SIZE, 0, 0 );
  1063                 ::UpdateWindow( 
m_hWnd );
  1119                 if ( ::IsZoomed( 
m_hWnd ) ) {
  1121                     ::ShowWindow( 
m_hWnd, SW_SHOWNOACTIVATE );
  1125                     ::ShowWindow( 
m_hWnd, SW_SHOWMAXIMIZED );
  1155                     int nResult = 
ShowMessage( L
"この操作は元に戻せません。\r\n本当に削除しても良いですか?", 
m_hWnd, MB_OKCANCEL );
  1156                     if ( IDOK == nResult ) {
  1221         HMENU result = 
nullptr;
  1224             HMENU hMenu = ::CreatePopupMenu();
  1225             if ( 
nullptr == hMenu ) {
  1231             HMENU hSubMenu = ::CreatePopupMenu();
  1232             if ( 
nullptr != hSubMenu ) {
  1237                 ::AppendMenuW( hMenu, MF_POPUP, reinterpret_cast< UINT_PTR >( hSubMenu ), L
"共通" );
  1240                     ::EnableMenuItem( hMenu, ( ::GetMenuItemCount( hMenu ) - 1 ), ( MF_BYPOSITION | MFS_DISABLED ) );
  1244                 ::AppendMenuW( hMenu, MF_SEPARATOR, 0, 
nullptr );
  1248             wchar_t szBuffer[ MAX_PATH ];
  1249             ::GetWindowTextW( 
m_hWnd, szBuffer, MAX_PATH );
  1252             ::AppendMenuW( hMenu, MF_STRING, 0, szBuffer );
  1253             ::EnableMenuItem( hMenu, ( ::GetMenuItemCount( hMenu ) - 1 ), ( MF_BYPOSITION | MFS_GRAYED ) );
  1270         bool result = 
false;
  1300         bool result = 
false;
  1304             if ( 0 == ::GetClientRect( 
m_hWnd, &sClientRect ) ) {
  1337             rsRect = sClientRect;
  1351         bool result = 
false;
  1363                 if ( 
nullptr != pcElement ) {
  1373                 if ( 
nullptr != pcElement ) {
  1391         bool result = 
false;
  1411         bool result = 
false;
  1415             if ( 
nullptr == pcElement ) {
  1421             ::ShowWindow( pcElement->
GetHandle(), SW_SHOWNA );
  1424             ::SendMessageW( pcElement->
GetHandle(), WM_SIZE, 0, 0 );
  1425             ::UpdateWindow( pcElement->
GetHandle() );
  1442         bool result = 
false;
  1446             if ( 
nullptr == pcElement ) {
  1452             ::ShowWindow( pcElement->
GetHandle(), SW_SHOWNA );
  1455             ::SendMessageW( pcElement->
GetHandle(), WM_SIZE, 0, 0 );
  1456             ::UpdateWindow( pcElement->
GetHandle() );
  1473         bool result = 
false;
  1477             if ( 
nullptr == pcDocking ) {
  1484             if ( 
nullptr == pcPartition ) {
  1491             if ( 
nullptr == pcElementList ) {
  1503             if ( 
nullptr != pcFloating ) {
  1508                     if ( 
nullptr != pcElementList ) {
  1510                         for ( 
int nIndex = 0, nCount = pcElementList->
GetCount(); nCount > nIndex; ++nIndex ) {
  1512                             CWndElement* pcElement = ( *pcElementList )[ nIndex ];
  1513                             if ( 
nullptr != pcElement ) {
  1521                     ::ShowWindow( pcFloating->
GetHandle(), SW_SHOWNA );
  1524                     ::SendMessageW( pcFloating->
GetHandle(), WM_SIZE, 0, 0 );
  1525                     ::UpdateWindow( pcFloating->
GetHandle() );
  1543             ::SendMessageW( pcPartition->
GetHandle(), WM_SIZE, 0, 0 );
  1544             ::UpdateWindow( pcPartition->
GetHandle() );
  1555         bool result = 
false;
  1567         bool result = 
false;
  1570             if ( 
nullptr == hMenu ) {
  1591             bool bShow   = ( nCount > nShow );
  1592             bool bHide   = ( nHideable > nHide ) ;
  1593             bool bDelete = ( 0 < nDeletable );
  1607             ::AppendMenuW( hMenu, MF_SEPARATOR, 0, 
nullptr );
  1630         bool result = 
false;
  1633             for ( 
int nCount = ::GetMenuItemCount( 
m_hMenu ), nIndex = ( nCount - 1 ); 0 <= nIndex; --nIndex ) {
  1635                 ::DeleteMenu( 
m_hMenu, nIndex, MF_BYPOSITION );
  1662         bool result = 
false;
  1665             if ( 
nullptr == hMenu ) {
  1671             HMENU hSubMenu = ::CreatePopupMenu();
  1672             if ( 
nullptr == hSubMenu ) {
  1678             ::AppendMenuW( hSubMenu, MF_STRING, 
ID_FILE_NEW,         L
"新規作成(&N)\tCtrl+N" );
  1679             ::AppendMenuW( hSubMenu, MF_STRING, 
ID_FILE_OPEN,        L
"開く(&O)...\tCtrl+O" );
  1680             ::AppendMenuW( hSubMenu, MF_STRING, 
ID_FILE_CLOSE,       L
"閉じる(&C)\tCtrl+W,Ctrl+F4" );
  1681             ::AppendMenuW( hSubMenu, MF_SEPARATOR, 0, 
nullptr );
  1682             ::AppendMenuW( hSubMenu, MF_STRING, 
ID_FILE_SAVE,        L
"保存(&S)\tCtrl+S" );
  1683             ::AppendMenuW( hSubMenu, MF_STRING, 
ID_FILE_SAVE_AS,     L
"名前を付けて保存(&A)...\tCtrl+Shift+S" );
  1685             ::AppendMenuW( hSubMenu, MF_SEPARATOR, 0, 
nullptr );
  1686             ::AppendMenuW( hSubMenu, MF_STRING, 
ID_FILE_PRINT,       L
"印刷(&P)...\tCtrl+P" );
  1688             ::AppendMenuW( hSubMenu, MF_SEPARATOR, 0, 
nullptr );
  1689             ::AppendMenuW( hSubMenu, MF_STRING, 
ID_FILE_EXIT,        L
"終了(&X)\tAlt+F4" );
  1690             ::AppendMenuW( hSubMenu, MF_SEPARATOR, 0, 
nullptr );
  1701             ::AppendMenuW( hMenu, MF_POPUP, reinterpret_cast< UINT_PTR >( hSubMenu ), L
"ファイル(&F)" );
  1704                 ::EnableMenuItem( hMenu, ( ::GetMenuItemCount( hMenu ) - 1 ), ( MF_BYPOSITION | MFS_DISABLED ) );
  1708             hSubMenu = ::CreatePopupMenu();
  1709             if ( 
nullptr == hSubMenu ) {
  1715             ::AppendMenuW( hSubMenu, MF_STRING, 
ID_EDIT_UNDO,       L
"元に戻す(&U)\tCtrl+Z" );
  1716             ::AppendMenuW( hSubMenu, MF_STRING, 
ID_EDIT_REDO,       L
"やり直し(&R)\tCtrl+Y" );
  1717             ::AppendMenuW( hSubMenu, MF_SEPARATOR, 0, 
nullptr );
  1718             ::AppendMenuW( hSubMenu, MF_STRING, 
ID_EDIT_CUT,        L
"切り取り(&T)\tCtrl+X" );
  1719             ::AppendMenuW( hSubMenu, MF_STRING, 
ID_EDIT_COPY,       L
"コピー(&C)\tCtrl+C" );
  1720             ::AppendMenuW( hSubMenu, MF_STRING, 
ID_EDIT_PASTE,      L
"貼り付け(&P)\tCtrl+V" );
  1721             ::AppendMenuW( hSubMenu, MF_SEPARATOR, 0, 
nullptr );
  1722             ::AppendMenuW( hSubMenu, MF_STRING, 
ID_EDIT_DELETE,     L
"削除(&D)\tDel" );
  1723             ::AppendMenuW( hSubMenu, MF_SEPARATOR, 0, 
nullptr );
  1734             ::AppendMenuW( hMenu, MF_POPUP, reinterpret_cast< UINT_PTR >( hSubMenu ), L
"編集(&E)" );
  1737                 ::EnableMenuItem( hMenu, ( ::GetMenuItemCount( hMenu ) - 1 ), ( MF_BYPOSITION | MFS_DISABLED ) );
  1741             hSubMenu = ::CreatePopupMenu();
  1742             if ( 
nullptr == hSubMenu ) {
  1754             ::AppendMenuW( hMenu, MF_POPUP, reinterpret_cast< UINT_PTR >( hSubMenu ), L
"表示(&V)" );
  1757                 ::EnableMenuItem( hMenu, ( ::GetMenuItemCount( hMenu ) - 1 ), ( MF_BYPOSITION | MFS_DISABLED ) );
  1761             hSubMenu = ::CreatePopupMenu();
  1762             if ( 
nullptr == hSubMenu ) {
  1769             ::AppendMenuW( hSubMenu, MF_STRING, 
ID_TOOL_OPTION,    L
"オプション(&O)..." );
  1774             ::AppendMenuW( hMenu, MF_POPUP, reinterpret_cast< UINT_PTR >( hSubMenu ), L
"ツール(&T)" );
  1777                 ::EnableMenuItem( hMenu, ( ::GetMenuItemCount( hMenu ) - 1 ), ( MF_BYPOSITION | MFS_DISABLED ) );
  1781             hSubMenu = ::CreatePopupMenu();
  1782             if ( 
nullptr == hSubMenu ) {
  1788             ::AppendMenuW( hSubMenu, MF_STRING, 
ID_WINDOW_NEW,      L
"新規ウィンドウ(&N)" );
  1791             ::AppendMenuW( hSubMenu, MF_STRING, 
ID_WINDOW_LIST,     L
"ウィンドウ(&W)..." );
  1798             HMENU hSubMenu2 = ::CreatePopupMenu();
  1799             if ( 
nullptr == hSubMenu2 ) {
  1807             ::AppendMenuW( hSubMenu2, MF_STRING, 
ID_WINDOW_POS_TOP,      L
"上側(&T)\tCtrl+Alt+Up" );
  1809             ::AppendMenuW( hSubMenu2, MF_STRING, 
ID_WINDOW_POS_FULL,     L
"フルサイズ(&F)\tCtrl+Alt+Enter" );
  1813             ::AppendMenuW( hSubMenu, MF_POPUP, reinterpret_cast< UINT_PTR >( hSubMenu2 ), L
"表示位置(&P)" );
  1816                 ::EnableMenuItem( hMenu, ( ::GetMenuItemCount( hMenu ) - 1 ), ( MF_BYPOSITION | MFS_DISABLED ) );
  1820             ::AppendMenuW( hMenu, MF_POPUP, reinterpret_cast< UINT_PTR >( hSubMenu ), L
"ウィンドウ(&W)" );
  1823                 ::EnableMenuItem( hMenu, ( ::GetMenuItemCount( hMenu ) - 1 ), ( MF_BYPOSITION | MFS_DISABLED ) );
  1827             hSubMenu = ::CreatePopupMenu();
  1828             if ( 
nullptr == hSubMenu ) {
  1834             ::AppendMenuW( hSubMenu, MF_STRING, 
ID_HELP_ABOUT, L
"バージョン情報(&A)" );
  1837             ::AppendMenuW( hMenu, MF_POPUP, reinterpret_cast< UINT_PTR >( hSubMenu ), L
"ヘルプ(&H)" );
  1840                 ::EnableMenuItem( hMenu, ( ::GetMenuItemCount( hMenu ) - 1 ), ( MF_BYPOSITION | MFS_DISABLED ) );
  1844             hSubMenu = ::CreatePopupMenu();
  1845             if ( 
nullptr == hSubMenu ) {
  1851             hSubMenu2 = ::CreatePopupMenu();
  1852             if ( 
nullptr == hSubMenu2 ) {
  1861             ::AppendMenuW( hSubMenu, MF_POPUP, reinterpret_cast< UINT_PTR >( hSubMenu2 ), L
"共通" );
  1864                 ::EnableMenuItem( hMenu, ( ::GetMenuItemCount( hMenu ) - 1 ), ( MF_BYPOSITION | MFS_DISABLED ) );
  1871             ::AppendMenuW( hMenu, MF_POPUP, reinterpret_cast< UINT_PTR >( hSubMenu ), L
"デバッグ(&D)" );
  1874                 ::EnableMenuItem( hMenu, ( ::GetMenuItemCount( hMenu ) - 1 ), ( MF_BYPOSITION | MFS_DISABLED ) );
  1889         static ACCEL sAccels[] = {
  1893             { FVIRTKEY | FCONTROL,          VK_F4,     ID_FILE_CLOSE },
  1906         bool result = 
false;
  1909             int nCount = ( 
sizeof sAccels / 
sizeof( ACCEL ) );
  1910             m_hAccel = ::CreateAcceleratorTableW( sAccels, nCount );
  1928         bool result = 
false;
  1948             ::SendMessageW( 
m_cToolBar.
GetHandle(), TB_SETEXTENDEDSTYLE, 0, TBSTYLE_EX_MIXEDBUTTONS );
  1966         bool result = 
false;
  1973                     int idCommand = ( *m_pcToolBarButtonList )[ nIndex ].idCommand;
  1990         bool result = 
false;
  1994                 { 
ID_FILE_NEW,    L
"新規作成",       L
"Generic_Document.ico", },
  2002             for ( 
int nIndex = 0, nCount = ( 
sizeof( sIconImageInfoList ) / 
sizeof( 
SIconImageInfo ) );; ++nIndex ) {
  2004                 if ( nCount <= nIndex ) {
  2032             else for ( 
int nIndex = 0, nCount = 
m_pcIconImageList->GetCount();; ++nIndex ) {
  2034                 if ( nCount <= nIndex ) {
  2043                 cPath += ( *m_pcIconImageList )[ nIndex ].m_pszIconFileName;
  2046                 HICON hIcon = 
reinterpret_cast< HICON 
>( ::LoadImageW( ::GetModuleHandleW( 
nullptr ), cPath, IMAGE_ICON, 0, 0, LR_LOADFROMFILE ) );
  2047                 if ( 
nullptr == hIcon ) {
  2056                 ::DeleteObject( hIcon );
  2068         bool result = 
false;
  2071             static TBBUTTON 
const sButtons[] = {
  2075                 { 0, 0, 0, BTNS_SEP },
  2077                 { 0, 0, 0, BTNS_SEP },
  2082             for ( 
int nIndex = 0, nCount = ( 
sizeof( sButtons ) / 
sizeof( TBBUTTON ) );; ++nIndex ) {
  2084                 if ( nCount <= nIndex ) {
  2091                 TBBUTTON sButton = sButtons[ nIndex ];
  2092                 if ( 0 != sButton.idCommand ) {
  2094                     for ( 
int nIndex2 = 0, nCount2 = 
m_pcIconImageList->GetCount(); nCount2 > nIndex2; ++nIndex2 ) {
  2098                             sButton.iBitmap = nIndex2;
  2101                             sButton.iString = 
reinterpret_cast< INT_PTR 
>( ( *m_pcIconImageList )[ nIndex2 ].m_pszButtonName );
  2123         bool result = 
false;
  2126             DWORD dwStyle = ( WS_VISIBLE | WS_CHILD | SBARS_SIZEGRIP | CCS_BOTTOM );
  2127             m_hStatusBar = ::CreateWindowExW( 0, STATUSCLASSNAMEW, 
nullptr, dwStyle, 0, 0, 0, 0, 
m_hWnd, 
nullptr, ::GetModuleHandleW( 
nullptr ), 
nullptr );
  2178         bool result = 
false;
  2189                 cString.
Format( L
"%.3f ms", ( nWaitTime / 1000.0 ) );
  2208         bool result = 
false;
  2211             DWORD dwStyle = ( WS_CHILD | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | SS_OWNERDRAW );
  2212             m_hSeparator = ::CreateWindowExW( 0, WC_STATICW, 
nullptr, dwStyle, 0, 0, 0, 0, 
m_hWnd, 
nullptr, ::GetModuleHandleW( 
nullptr ), 
nullptr );
  2230         bool result = 
false;
  2236             ::FillRect( lpDraw->hDC, &lpDraw->rcItem, hBrush );
  2239             ::DeleteObject( hBrush );
  2253         bool result = 
false;
  2256             if ( 
nullptr == 
m_hWnd ) {
  2265             if ( 0 == ::IsWindowVisible( 
m_hWnd ) ) {
  2267                 ::ShowWindow( 
m_hWnd, SW_SHOWNOACTIVATE );
  2286                 if ( 0 != ::PeekMessageW( &sMsg, 
nullptr, 0, 0, PM_REMOVE ) ) {
  2288                     if ( WM_QUIT == sMsg.message ) {
  2293                     else if ( 0 == ::TranslateAcceleratorW( sMsg.hwnd, 
m_hAccel, &sMsg ) ) {
  2295                         ::TranslateMessage( &sMsg );
  2298                         ::DispatchMessageW( &sMsg );
  2332         bool result = 
false;
  2341             LARGE_INTEGER sFrequency = {};
  2342             if ( 0 != ::QueryPerformanceFrequency( &sFrequency ) ) {
  2350                 LARGE_INTEGER sPerformanceCount = {};
  2351                 ::QueryPerformanceCounter( &sPerformanceCount );
  2370         bool result = 
false;
  2402         bool result = 
false;
  2416             LARGE_INTEGER sPerformanceCount = {};
  2417             ::QueryPerformanceCounter( &sPerformanceCount );
  2466         bool result = 
false;
  2489         bool result = 
false;
  2548 #pragma managed( pop ) bool m_bValidToolBarSelect
ツールバーボタン選択有効フラグ 
constexpr WORD const ID_DEBUG_REALTIME_RESIZE_PARTITION
デバッグ::リアルタイムパーティションサイズ変更 
constexpr WORD const ID_FILE_RECENT_FILE
ファイル::最近使ったファイル 
virtual HWND & GetHandle() noexcept
ウィンドウハンドル取得関数 
virtual bool AppendNewFloatingWindow() noexcept
新規フローティングウィンドウ追加関数 
LIB_WINDOW_API bool GetMenuCommandData(HMENU hMenu, UINT uId, ULONG_PTR &ruData) noexcept
メニューコマンドデータ取得関数 
constexpr WORD const ID_TOOL_OPTION
ツール::オプション 
constexpr WORD const ID_WINDOW_POS_LEFT
ウィンドウ::表示位置::左側 
constexpr WORD const ID_EDIT_UNDO
編集::元に戻す 
static bool SaveConfigStatic(CJsonConfig &rcConfig) noexcept
静的構成情報保存関数 
constexpr WORD const ID_DEBUG_HIDE_ALL
デバッグ::すべて隠す 
virtual LRESULT WmNotifyChildSetFocus() noexcept override
ユーザ定義メッセージ処理関数 
constexpr WORD const ID_EDIT_CUT
編集::切り取り 
#define NotifyFatalError()
致命的エラー発生通知マクロ 
virtual LRESULT WmMouseActivate() noexcept override
constexpr WORD const ID_FILE_PRINT
ファイル::印刷 
constexpr WORD const ID_WINDOW_NEW
ウィンドウ::新規ウィンドウ 
static wchar_t const *const KEY_RESIZE_PARTITION_REALTIME
リアルタイムパーティションサイズ変更キー文字列 
LONGLONG m_nFrameWaitTime
フレーム更新待機時間 
constexpr WORD const ID_DEBUG_SHOW_DENUG_INFO
デバッグ::デバッグ情報表示 
constexpr WORD const ID_FILE_CLOSE
ファイル::閉じる 
constexpr WORD const ID_DEBUG_DRAW_DOUBLE_BUFFER
デバッグ::ダブルバッファリング描画 
constexpr WORD const ID_EDIT_DELETE
編集::削除 
constexpr WORD const ID_TOOL_CUSTOMIZE
ツール::カスタマイズ 
virtual CWndPane * GetOrderPane(int *pnOrder) noexcept override
オーダー番号ペインウィンドウ取得関数 
LIB_COMMON_API int ShowMessage(wchar_t const *pszMessage, HWND hWnd=nullptr, UINT uType=(MB_OK|MB_ICONEXCLAMATION)) noexcept
メッセージ表示関数 
CWndToolBar m_cToolBar
ツールバー 
virtual bool ResumeElementListConfig(CJsonConfig &rcConfig, wchar_t const *pszElementName) noexcept
エレメントウィンドウリスト構成情報復元関数 
virtual bool CreateSeparator() noexcept
セパレータ作成関数 
virtual CWndElement * GetElementWindow(HWND hWnd) const  noexcept
エレメントウィンドウ取得関数 
virtual bool CreateListWindow(HWND hParent=nullptr, HMENU hMenu=nullptr) noexcept
エレメントウィンドウリスト作成関数 
virtual bool CreateToolBar() noexcept
ツールバー作成関数 
virtual bool Create(HWND hParent=nullptr, HMENU hMenu=nullptr) noexcept override
ウィンドウ作成関数 
virtual CWndPane * GetOrderPane(int *pnOrder) noexcept override
オーダー番号ペインウィンドウ取得関数 
virtual LRESULT WmDrawItem() noexcept override
static int const STATUSBAR_PARTS_COUNT
ステータスバーコントロール分割数 
virtual bool AppendNewOverlapWindow() noexcept
新規オーバーラップウィンドウ追加関数 
CArray< SIconImageInfo > * m_pcIconImageList
アイコンイメージリストポインタ 
virtual bool AppendMainMenu(HMENU hMenu) noexcept
メインメニュー追加関数 
virtual LRESULT NmClick() noexcept
virtual bool CreateIconImageList() noexcept
アイコンイメージリスト作成関数 
CTimer m_cFrameWaitTimer
フレーム更新待機タイマ 
constexpr WORD const ID_WINDOW_FLOATING
ウィンドウ::フローティング 
virtual bool UpdateClientRectAll() noexcept
全ウィンドウクライアント領域更新関数 
virtual bool EndFrame() noexcept
フレーム終了関数 
constexpr WORD const ID_WINDOW_POS_RIGHT
ウィンドウ::表示位置::右側 
virtual bool CreateStatusBar() noexcept
ステータスバー作成関数 
constexpr WORD const ID_EDIT_SELECT_ALL
編集::すべて選択 
virtual LRESULT WmNotifyChildLButtonUp() noexcept
virtual HMENU CreateContextMenu() noexcept override
コンテキストメニュー作成関数 
virtual bool DeleteChildAll() noexcept override
全子ウィンドウ削除関数 
static wchar_t const *const KEY_DRAW_DOUBLE_BUFFER
ダブルバッファリング描画キー文字列 
static COLORREF const COLOR_SEPARATOR
タブ項目境界色 
virtual bool UpdateClientRectAll() noexcept override
全ウィンドウクライアント領域更新関数 
virtual LRESULT WmNotifyChildLButtonUp() noexcept override
virtual bool DockingToFloating(HWND hWnd) noexcept
ドッキングウィンドウフローティング表示関数 
virtual bool Wait(DWORD dwTime=INFINITE) noexcept override
ウェイト関数 
virtual int GetHideChildCount() noexcept
非表示状態子ペインウィンドウ数取得関数 
virtual bool SetNano100(LONGLONG llWait, LONG nPeriod=0, PTIMERAPCROUTINE pfnCallBack=nullptr, LPVOID lpParam=nullptr, bool bResume=false) noexcept
100ナノタイマ設定関数 
virtual bool ResumeConfig(CJsonConfig &rcConfig) noexcept override
ウィンドウ構成情報復元関数 
CString m_cOtherInfo
その他の情報文字列 
constexpr WORD const ID_DEBUG_SHOW_ALL
デバッグ::すべて表示 
virtual bool AppendDebugMenu(HMENU hMenu) noexcept override
デバッグメニュー追加関数 
LIB_WINDOW_API bool CheckMenuCommand(HMENU hMenu, UINT uId, bool bCheck) noexcept
メニューコマンドチェック状態設定関数 
constexpr WORD const ID_VIEW_TOOLBAR
表示::ツールバー 
virtual bool GetChildPaneInfo(SChildPaneInfo &rsChildInfo) noexcept override
子ペインウィンドウ情報取得関数 
virtual int GetOrderIndex(CWndPane *pcPane=nullptr, int *pnOrder=nullptr) noexcept override
ペインウィンドウオーダー番号取得関数 
virtual bool Append(CArray const &rcInstance) noexcept
追加関数 
constexpr WORD const ID_WINDOW_POS_BOTTOM
ウィンドウ::表示位置::下側 
virtual bool StartFrame() noexcept
フレーム開始関数 
virtual LRESULT WmMenuSelect() noexcept
LIB_WINDOW_API int GetEnableMenuCommandCount(HMENU hMenu) noexcept
メニューコマンド有効数取得関数 
constexpr WORD const ID_FILE_NEW
ファイル::新規作成 
virtual bool SubtractChildRect(HWND hChild, RECT &rsRect) noexcept
子ウィンドウ表示領域減算関数 
LIB_WINDOW_API bool IsEnableMenuCommand(HMENU hMenu, UINT uId) noexcept
メニューコマンド有効状態取得関数 
virtual bool ExecMenuCommand(WORD wId, WORD wCode, HWND hCtrl) noexcept
メニューコマンド実行関数 
static wchar_t const *const PATH_ICON_IMAGE
アイコンイメージファイルディレクトリ文字列 
constexpr WORD const ID_FILE_SAVE_ALL
ファイル::すべて保存 
virtual bool UpdateClientRectAll() noexcept override
全ウィンドウクライアント領域更新関数 
virtual bool DrawSeparator(LPDRAWITEMSTRUCT lpDraw) noexcept
セパレータ描画関数 
virtual int GetShowChildCount() noexcept
表示状態子ペインウィンドウ数取得関数 
static HMENU s_hContextMenu
コンテキストメニューハンドル 
virtual LRESULT WmExitMenuLoop() noexcept
virtual LRESULT WmNotifyChildSetFocus() noexcept override
ユーザ定義メッセージ処理関数 
virtual bool InitConfig(CJsonConfig &rcConfig) noexcept override
ウィンドウ構成情報初期化関数 
bool m_bPerformanceTimer
高精度タイマ有効フラグ 
#define LIB_WINDOW_API
ダイナミックライブラリインポート宣言 
static CWndElement * CreateFloatingWindow() noexcept
フローティングウィンドウ作成関数 
constexpr WORD const ID_EDIT_REDO
編集::やり直し 
constexpr WORD const ID_FILE_EXIT
ファイル::終了 
virtual CWndPane * GetElementListOrderPane(int *pnOrder) noexcept
エレメントウィンドウリストオーダー番号ペインウィンドウ取得関数 
static wchar_t const *const KEY_FOCUS_OVERLAP
オーバーラップウィンドウフォーカス有効状態キー文字列 
virtual ~CWndMain() noexcept
デストラクタ 
virtual bool Create(HWND hParent=nullptr, HMENU hMenu=nullptr) noexcept override
ウィンドウ作成関数 
virtual bool GetChildElementListInfo(CWndPane *pcParent, SChildPaneInfo &rsChildInfo) noexcept
子エレメントウィンドウリスト情報取得関数 
constexpr WORD const ID_WINDOW_POS_FULL
ウィンドウ::表示位置::フルサイズ 
#define _SOLUTION_DIR
ソリューションディレクトリパス 
virtual LRESULT NmClick() noexcept override
virtual LRESULT WmSize() noexcept override
各種メッセージ処理関数 
virtual bool ShowChildAll(bool bShow) noexcept override
全子ウィンドウ表示関数 
constexpr WORD const ID_DEBUG_NEW_FLOATING
デバッグ::新規フローティングウィンドウ 
constexpr WORD const ID_WINDOW_DOCKING
ウィンドウ::ドッキング 
static bool s_bShowDebugInfo
デバッグ情報表示フラグ 
static HWND s_hFocus
フォーカスウィンドウ保存ハンドル 
static int const STATUSBAR_INDEX_FPS_VALUE
FPS測定値表示インデックス 
virtual bool AppendElementWindow(HWND hParent, CWndElement *pcElement) noexcept
エレメントウィンドウ追加関数 
LONGLONG m_nPerformanceCount
パフォーマンスカウント 
constexpr WORD const ID_FILE_SAVE_AS
ファイル::名前を付けて保存 
static bool s_bResizePartitionRealTime
リアルタイムパーティションサイズ変更フラグ 
constexpr WORD const ID_DEBUG_NEW_OVERLAP
デバッグ::新規オーバーラップウィンドウ 
HWND m_hSeparator
セパレータコントロールハンドル 
virtual bool AppendDebugMenu(HMENU hMenu) noexcept override
デバッグメニュー追加関数 
virtual bool CreateAccel() noexcept
アクセラレータテーブル作成関数 
constexpr WORD const ID_WINDOW_POS_MAXIMIZE
ウィンドウ::表示位置::最大化 
static wchar_t const *const STATUSBAR_OTHERS
ステータスバーその他の情報初期値文字列 
static CWndElement * CreateOverlapWindow() noexcept
オーバーラップウィンドウ作成関数 
LONGLONG m_nErrorCount
積算誤差カウント 
virtual Type * GetBuffer() noexcept
配列要素バッファ取得関数 
virtual LRESULT WmSetFocus() noexcept override
各種メッセージ処理関数 
constexpr WORD const ID_EDIT_PASTE
編集::貼り付け 
virtual wchar_t const * Format(wchar_t const *pszFormat,...) noexcept
書式設定文字列代入関数 
static wchar_t const *const KEY_SHOW_DEBUG_INFO
デバッグ情報表示キー文字列 
virtual LRESULT WmDrawItem() noexcept override
virtual bool ExecMenuCommand(WORD wId, WORD wCode, HWND hCtrl) noexcept override
メニューコマンド実行関数 
virtual bool DeleteChildWindow(CWndPane *pcChild) noexcept override
子ウィンドウ削除関数 
constexpr WORD const ID_EDIT_COPY
編集::コピー 
static int const STATUSBAR_INDEX_FPS_WIDTH
FPS測定値表示幅 
HACCEL m_hAccel
アクセラレータテーブルハンドル 
virtual LRESULT WmCommand() noexcept override
CWndMain() noexcept
コンストラクタ 
virtual bool ResumeConfig(CJsonConfig &rcConfig) noexcept override
ウィンドウ構成情報復元関数 
virtual bool InitFrame() noexcept
フレーム管理初期化関数 
virtual bool RemoveElementWindow(CWndElement *pcElement) noexcept
エレメントウィンドウ削除関数 
virtual bool SaveConfig(CJsonConfig &rcConfig) noexcept override
ウィンドウ構成情報保存関数 
virtual bool DeleteChildWindow(CWndPane *pcChild) noexcept override
子ウィンドウ削除関数 
virtual int GetDeletableChildCount() noexcept
削除可能子ペインウィンドウ数取得関数 
bool m_bToolBarMouseActivate
ツールバーマウスアクティベートフラグ 
virtual CWndList * GetElementList() noexcept
エレメントウィンドウリスト取得関数 
static wchar_t const *const KEY_FOCUS_ORDER
フォーカスウィンドウオーダー番号キー文字列 
virtual bool FloatingToDocking(HWND hWnd) noexcept
フローティングウィンドウドッキング表示関数 
virtual LRESULT WmNotifyChildCommand() noexcept
constexpr WORD const ID_DEBUG_DELETE_ALL
デバッグ::すべて削除 
static int const STATUSBAR_INDEX_ERROR_TITLE
積算誤差タイトル表示インデックス 
virtual LRESULT WmSize() noexcept override
各種メッセージ処理関数 
virtual bool InitConfig(CJsonConfig &rcConfig) noexcept override
ウィンドウ構成情報初期化関数 
LIB_WINDOW_API bool EnableMenuCommand(HMENU hMenu, UINT uId, bool bEnable) noexcept
メニューコマンド有効状態設定関数 
virtual bool AppendElementListDebugSubMenu(HMENU hMenu, CWndPane *pcParent, wchar_t const *pszElementName, WORD wIdNew) noexcept
エレメントウィンドウリストデバッグサブメニュー追加関数 
virtual bool GetPartitionClientRect(RECT &rsRect) noexcept override
パーティション表示クライアント領域取得関数 
CWndList m_cOverlapList
オーバーラップウィンドウリスト 
virtual bool Run() noexcept
ウィンドウアプリケーション実行関数 
static bool s_bDrawDoubleBuffer
ダブルバッファリング描画フラグ 
static wchar_t const *const STATUSBAR_TITLE_FPS
ステータスバーFPSタイトル文字列 
constexpr WORD const ID_VIEW_STATUSBAR
表示::ステータスバー 
virtual int GetChildCount() noexcept
子ペインウィンドウ数取得関数 
virtual bool DeleteChildAll() noexcept override
全子ウィンドウ削除関数 
CWndList m_cFloatingList
フローティングウィンドウリスト 
virtual bool CreateToolBarButtonList() noexcept
ツールバーボタンリスト作成関数 
bool m_bFocusFloating
フローティングウィンドウフォーカス有効フラグ 
virtual bool ShowElementListAll(CWndPane *pcParent, bool bShow) noexcept
全エレメントウィンドウリスト表示関数 
virtual LRESULT WmNotifyChildCommand() noexcept override
static int const SEPARATOR_HEIGHT
セパレータコントロール垂直サイズ 
virtual LRESULT WmDestroy() noexcept override
各種メッセージ処理関数 
static wchar_t const *const KEY_VIEW_TOOLBAR
ツールバー表示状態キー文字列 
static int const STATUSBAR_INDEX_OTHERS
その他の表示インデックス 
virtual LRESULT WmSetFocus() noexcept override
各種メッセージ処理関数 
constexpr WORD const ID_WINDOW_LIST
ウィンドウ::ウィンドウ(リスト) 
virtual int GetHideableChildCount() noexcept
非表示可能子ペインウィンドウ数取得関数 
virtual int GetElementListOrderIndex(CWndPane *pcPane, int *pnOrder) noexcept
エレメントウィンドウリストオーダー番号取得関数 
virtual bool AppendCommonDebugMenu(HMENU hMenu) noexcept
共通デバッグメニュー追加関数 
virtual CWndElement * GetCurrentElement() const  noexcept
カレントエレメントウィンドウ取得関数 
LIB_WINDOW_API bool SetMenuCommandData(HMENU hMenu, UINT uId, ULONG_PTR uData) noexcept
メニューコマンドデータ設定関数 
HWND m_hStatusBar
ステータスバーコントロールハンドル 
virtual bool ShowDebugInfo() noexcept
デバッグ情報表示関数 
static bool ResumeConfigStatic(CJsonConfig &rcConfig) noexcept
静的構成情報復元関数 
virtual CWndPane * GetPaneWindow(HWND hWnd) const  noexcept
表示フラグ取得関数 
constexpr WORD const ID_HELP_ABOUT
ヘルプ::バージョン情報 
static wchar_t const *const STATUSBAR_TITLE_ERROR
ステータスバー積算誤差タイトル文字列 
virtual bool DeleteElementListAll(CWndPane *pcParent) noexcept
全エレメントウィンドウリスト削除関数 
virtual bool Create(wchar_t const *pszObjectName=nullptr) noexcept
作成関数 
virtual LRESULT WmExitMenuLoop() noexcept override
virtual bool GetChildPaneInfo(SChildPaneInfo &rsChildInfo) noexcept override
子ペインウィンドウ情報取得関数 
virtual CWndElement * AppendNewElementWindow(HWND hParent, CWndElement *(*pfnCreateElement)()) noexcept
新規エレメントウィンドウ追加関数 
constexpr WORD const ID_FILE_SAVE
ファイル::保存 
LONGLONG m_nPerformanceFreq
パフォーマンス周波数 
bool m_bValidMenuSelect
メニュー項目選択有効フラグ 
virtual bool SetCurrentElement(CWndElement *pcElement) noexcept
カレントエレメントウィンドウ設定関数 
bool m_bUpdatedFpsValue
FPS測定値更新フラグ 
virtual bool UpdateToolBar() noexcept
ツールバー更新関数 
virtual bool UpdateMenuBar() noexcept
メニューバー更新関数 
CArray< TBBUTTON > * m_pcToolBarButtonList
ツールバーボタンリストポインタ 
constexpr WORD const ID_FILE_OPEN
ファイル::開く 
virtual bool ExecMenuCommand(WORD wId, WORD wCode, HWND hCtrl) noexcept override
メニューコマンド実行関数 
bool m_bMenuMouseActivate
メニューマウスアクティベートフラグ 
virtual LRESULT WmCommand() noexcept override
virtual bool SaveElementListConfig(CJsonConfig &rcConfig, wchar_t const *pszElementName) noexcept
エレメントウィンドウリスト構成情報保存関数 
static int const STATUSBAR_INDEX_ERROR_VALUE
積算誤差表示インデックス 
LIB_COMMON_API bool SetWindowPosition(HWND hWnd, EWindowPosition ePos) noexcept
ウィンドウ表示位置設定関数 
virtual LRESULT WmMenuSelect() noexcept override
virtual wchar_t const * GetBuffer() const  noexcept
文字列バッファ取得関数 
bool m_bFocusOverlap
オーバーラップウィンドウフォーカス有効フラグ 
static int const STATUSBAR_INDEX_ERROR_WIDTH
積算誤差表示幅 
JSON構成情報自動セクションブロッククラスヘッダファイル 
static int const STATUSBAR_INDEX_FPS_TITLE
FPS測定値タイトル表示インデックス 
HIMAGELIST m_hIconImageList
アイコンイメージリストハンドル 
constexpr WORD const ID_WINDOW_POS_TOP
ウィンドウ::表示位置::上側 
static wchar_t const *const SECTION_OVERLAP_LIST
オーバーラップウィンドウリストセクション文字列 
static wchar_t const *const KEY_FOCUS_FLOATING
フローティングウィンドウフォーカス有効状態キー文字列 
virtual bool InitElementListConfig(CJsonConfig &rcConfig, CWndElement *(*pfnCreateElement)(), wchar_t const *pszElementName) noexcept
エレメントウィンドウリスト構成情報初期化関数 
virtual int GetCount() const  noexcept
配列要素数取得関数 
LONGLONG m_nSecondCount
1秒待ちカウント 
virtual bool ShowChildAll(bool bShow) noexcept override
全子ウィンドウ表示関数 
virtual bool IdleCallBackProc() noexcept
アイドル処理コールバック関数 
LIB_WINDOW_API bool IsOwnOrChild(HWND hWnd, HWND hChild) noexcept
自分または子ウィンドウ判定関数 
virtual bool UpdateStatusBar() noexcept
ステータスバー更新関数 
static wchar_t const *const SECTION_FLOATING_LIST
フローティングウィンドウリストセクション文字列 
static wchar_t const *const KEY_VIEW_STATUSBAR
ステータスバー表示状態キー文字列 
virtual bool SaveConfig(CJsonConfig &rcConfig) noexcept override
ウィンドウ構成情報保存関数 
virtual int GetOrderIndex(CWndPane *pcPane=nullptr, int *pnOrder=nullptr) noexcept
ペインウィンドウオーダー番号取得関数 
virtual int GetOrderIndex(CWndPane *pcPane=nullptr, int *pnOrder=nullptr) noexcept override
ペインウィンドウオーダー番号取得関数