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の編集で、アプリの親顔を化粧できました。
 
ではでは。

