KotlinとSwift後のアナログ時計アプリ:VC++(MFC)のSDIで軽くできるかも?。。
こんにちは。川上です。
KotlinやSwiftでのアナログ時計アプリと同様に、VC++(MFC)での試用に、ちょっとね。
Visual Studio 2017 Community版でおサラのProjectのテンプレートは、
・SDI(Single Document Interface)
をチョイスしました。
(なんとなく、仕組みが安易そーなので、とりあえず、おきまりの「ドキュメント/ビューアーキーテクチャ」のままの作りです)
アナログ時計アプリPrjの名前は「ClockWin2」で命名しました。
(ClockWin1のテンプレートは「ダイアログベース」だったけどやめたの。)
テンプレートで標準のClassができています。
SDIタイプの雛のClassは、
・ClockWin2.cpp (.h) ーーー Windowsアプリの基盤の骨格のところ
・ClockWin2Doc.cpp (.h) ーーー ドキュメント
・ClockWin2View.cpp (.h) ーーー アプリ顔内のViewのところ
・MainFrame.cpp (.h) ーーー アプリ顔のViewを持っとく親御さん。
です。
まずは、アナログ時計アプリの初期設定や諸々の処理。
アプリ表示サイズ設定やメニューやツールバーなど未使用そうなものからですw。
MainFrameでの編集からです。
・メニューやツールバーの有無
1 2 3 4 5 6 7 8 9 | int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { ・・・ // -- メニュー、ツールバーOff m_wndStatusBar.ShowWindow(SW_HIDE); m_wndToolBar.ShowWindow(SW_HIDE); SetMenu(NULL); // return 0; } |
・アプリの表示サイズの設定やサイズ不可やMax/Minボタンの有無など
時計画像(png) サイズは、720x720で作っていたので、
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { if( !CFrameWnd::PreCreateWindow(cs) ) return FALSE; // TODO: この位置で CREATESTRUCT cs を修正して Window クラスまたはスタイルを // 修正してください。 cs.cx = 800; cs.cy = 800; //- 削除 cs.style = WS_OVERLAPPED | WS_CAPTION | FWS_ADDTOTITLE | WS_SIZEBOX //- 削除 | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_SYSMENU; cs.style = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU; // メニューOff ::DestroyMenu(cs.hMenu); cs.hMenu = NULL; return TRUE; } |
で、CMainFrameの編集で、アプリの親顔を化粧できました。
ではでは。