ObjeqtNote #8 標準的なウィンドウ

とりあえずメニュー付きのウィンドウを標準的なウィンドウとしてCStandardWindowにまとめる・・・。

f:id:BG1:20170124122935p:plain

StandardWindow.hを追加して、

CMenuWindowから、nID付きのRegisterClass、コンストラクタ、Create、OnCreateだけ引き継ぐ・・・。

RegisterClassでクラス名に"StandardWindow"を指定・・・。
今回はメニューのIDも指定するので、OnCreateはCMenuBarオブジェクトの作成だけにする・・・。
Createでクラス名に"StandardWindow"を指定して生成・・・。

MenuWindow.hでRegisterClassをIDなしとID付きの2種類に分ける・・・。
MenuWindow.cppで、

こんな感じ・・・。
また、

最後の戻り値を間違えてたので、FALSEに修正・・・。

で、StandardApplication.cppで、

CMenuWindowからCStandardWindowに・・・。

f:id:BG1:20170124124446p:plain

これで、

f:id:BG1:20170124124534p:plain

こうなる・・・。

・標準的なウィンドウ · bg1bgst333/ObjeqtNote@95fe500 · GitHub

ObjeqtNote #7 メニューアイテムが選択された時の処理

こちらもメニューアイテムが選択された時の処理を実装・・・。

f:id:BG1:20170122181224p:plain

例えば、アプリケーションの終了を選択すると、

f:id:BG1:20170122181318p:plain

"アプリケーションの終了"というメッセージボックスが表示される・・・。

・メニューアイテムが選択された時の処理 · bg1bgst333/ObjeqtNote@26143c9 · GitHub

Aoi #7 メニューアイテムが選択された時の処理

これまでメニューアイテムを押しても、反応しないようにしていた・・・。
アイテムが選択された時の処理を実装する・・・。

MenuBar.hは、

それぞれのメニューアイテムが選択された時のハンドラを追加・・・。

MenuBar.cppは、

OnCommandMenuItemで、IDごとにswitch-case文で振り分け・・・。

各ハンドラはメッセージボックス出すだけ・・・。

MenuWindow.cppは、

メニューが選択された時は、HIWORD(wParam)が0になるので、m_pMenuBar->OnCommandMenuItemにwParam, lParamを渡して呼び出す・・・。
で、CMenuBarの方に任せるという形・・・。

f:id:BG1:20170120233833p:plain

"新規"を選択すると、

f:id:BG1:20170120233853p:plain

このように"新規"とメッセージボックスが出て、他のアイテムも同様にメッセージボックスが出る・・・。

・メニューアイテムが選択された時の処理 · bg1bgst333/Aoi@739847a · GitHub

ObjeqtNote #6 メニューの設置(動的に作成する場合)

ObjeqtNoteも動的メニュー対応・・・。

Aoiとやってることは同じ・・・。
(もうめんどいから同じ場合はコード載せない・・・。)

f:id:BG1:20170120170242p:plain

・メニューの設置(動的に作成する場合) · bg1bgst333/ObjeqtNote@5e2b956 · GitHub

Aoi #6 メニューの設置(動的に作成する場合)

#5では、ウィンドウクラスに静的にメニューリソースを指定していた・・・。
今回は動的にメニューを作成して、ウィンドウに設置したい場合・・・。

MenuBar.hを追加し、

メニューハンドルと、設置するウィンドウハンドルをもつメニューバーオブジェクトを定義・・・。
LoadMenu、SetMenuなどの設置に使う関数、メニューが選択された時の独自ハンドラOnCommandMenuItem・・・。

MenuBar.cppは、それぞれ、LoadMenu、SetMenuを呼べるように・・・。
LoadMenuは以前作った時とは引数を変えている・・・。
OnCommandMenuItemは今回は使わない・・・。

MenuWindow.hには、CMenuBarオブジェクトm_pMenuBarや、デストラクタ、OnCreate、OnCommandを追加・・・。

メニュー指定のRegisterClassはコメントアウトして、

デストラクタで解放、

OnCreateでメニューのロードとセット・・・。
OnCommandはまだ使わない・・・。

Window.hに大元のOnCommandを追加・・・。
CMenuWindowのは、これのオーバーライド・・・。

なにもしない・・・。

WM_COMMANDでOnCommand・・・。
三項演算子で、TRUEだと0を返すようにしている・・・。

f:id:BG1:20170120160544p:plain

これでもメニューでた・・・。

・メニューの設置(動的に作成する場合) · bg1bgst333/Aoi@1c42c42 · GitHub

Zinc #3 URLバーの設置 & Navigateボタンの設置

次は、URLバーとWebページをロードするNavigateボタンを設置する・・・。

activity_main.xmlは、

まず、中に横方向のLinearLayoutを追加・・・。
urlBarはlayout_weight="1"、navigateButtonはlayout_width="wrap_content"として、navigateButtonの左にurlBarが埋まるように・・・。
このLinearLayout自体は、layout_height="wrap_content"・・・。

navigateButton_textは"Navigate"・・・。

こちらのLinearLayoutではlayout_weight="1"なので、urlBarとnavigateButtonを含む上のLinearLayout以外の下の部分を埋める・・・。
そこいっぱいにWebViewが広がる・・・。

MainActivity.javaは、

View.OnClickListenerを実装・・・。

onCreateでは、navigateButtonを取得し、setOnClickListenerにthisを指定・・・。

onClickをオーバーライド、idがnavigateButtonならurlBarを取得し、そこから入力したurlを取得・・・。
webViewも取得して、loadUrlでurlをロード・・・。

f:id:BG1:20170117010546p:plain

URLバーにURLを入れる・・・。

f:id:BG1:20170117010613p:plain

これでNavigateボタンを押すと、

f:id:BG1:20170117010637p:plain

こんな感じでロードされる・・・。

f:id:BG1:20170117010707p:plain

バックキーでソフトウェアキーボードを閉じるとこんな感じ・・・。

・URLバーの設置 · bg1bgst333/Zinc@487da51 · GitHub