CPicture::OnVScroll

CPicture::OnVScrollで垂直方向スクロールバーも実装する。
Picture.hで、

OnVScrollと、変化量を表すm_dyを追加。
Picture.cppで、

OnVScrollを実装。

OnPaintも垂直成分を追加。

ビットマップサイズの取得とスクロールバーの初期化をSetBitmapに移動。
MainWindow.cppは、

OnCreateはすっきり。

左上
左上

左上。

右上
右上

右上。

右下
右下

右下。

左下
左下

左下。
このように四隅までスクロールできる。

Test/winapi/CPicture/OnVScroll/src/CPicture at master · bg1bgst333/Test · GitHub

InputExtensions.TextBox

Html.TextBoxで、テキストボックスを出力できる。
ただし、Html.BeginFormとは違い、HTML文字列を返すだけなので、呼び出しだけではダメで戻り値を"%="で出力しないといけない。
Index.aspxで、

こうすると、

テキストボックスが表示されてる
テキストボックスが表示されてる

テキストボックスが表示されてる。

引数のnameに指定した文字列が、idとnameにセットされてる。
引数のnameに指定した文字列が、idとnameにセットされてる。

引数のnameに指定した文字列が、idとnameにセットされてる。
ちなみにこれも、HtmlHelperのメソッドではなく、

InputExtensions.TextBox メソッド (System.Web.Mvc.Html) | Microsoft Docs

InputExtensionsにある拡張メソッドである。

Sample/aspnetmvc/InputExtensions/TextBox/src/InputExtensions_ at master · bg1bgst333/Sample · GitHub

MvcForm.Dispose

MvcForm.Disposeは、本来MvcFormオブジェクトの終了処理であり、リソース解放とかだが、実はformの終了タグを出力することも担っている。

MvcForm.Dispose メソッド (System.Web.Mvc.Html) | Microsoft Docs

Index.aspxで、

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Index</title>
</head>
<body>
    <div>
        <%
          var mvcForm = Html.BeginForm();
          mvcForm.Dispose();
        %>
    </div>
</body>
</html>

とすると、

formの終了タグが出力されてる
formの終了タグが出力されてる

formの終了タグが出力されてる。
ということは、

usingでHtml.BeginForm()の戻り値のMvcFormを囲んでも、Disposeが呼ばれformの終了タグが出力されるということ。

確かにそうなった。
確かにそうなった。

確かにそうなった。
(usingを使った記述が見られたので、何故かとおもったらそういうことだった・・・。)

https://github.com/bg1bgst333/Sample/tree/master/aspnetmvc/MvcForm/Dispose/src/MvcForm_title

CPicture::OnHScroll

CPicture::OnHScrollを実装して、水平方向にビットマップをスクロールできるようにする。
Picture.hは、

OnHScrollを追加。
またprivateで水平方向の変化量m_dxも追加。
Picture.cppで、

再描画処理と水平方向スクロール処理。
MainWindow.cppは、

ビットマップのセット、水平方向スクロールバーの初期化。

起動時は左端
起動時は左端

起動時は左端。

スクロールして真ん中の辺り。
スクロールして真ん中の辺り。

スクロールして真ん中の辺り。

さらにスクロールで右端に。
さらにスクロールで右端に。

さらにスクロールで右端に。
水平方向にはスクロールできた。

Test/winapi/CPicture/OnHScroll/src/CPicture at master · bg1bgst333/Test · GitHub

CPicture::Create

CPicture::Createを実装する。
Picture.hに、

第1引数がウィンドウ名のCreateを追加。
Picture.cppで、

CPicture::Createの中では、CUserControl::Createで、ウィンドウクラス名は"CPicture"とする。
MainWindow.cppで、

ピクチャーコントロールの生成に加えて、ビットマップのロードやセット、スクロールバーの初期化など。

ビットマップが表示され、スクロールバーも動くが、スクロールに合わせて再描画はされない。
ビットマップが表示され、スクロールバーも動くが、スクロールに合わせて再描画はされない。

ビットマップが表示され、スクロールバーも動くが、スクロールに合わせて再描画はされない。

Test/winapi/CPicture/Create/src/CPicture at master · bg1bgst333/Test · GitHub

MvcForm.EndForm

MvcForm.EndFormでもformの終了タグを出力することが出来る。

MvcForm.EndForm メソッド (System.Web.Mvc.Html) | Microsoft Docs

Index.aspxで、

こう書いた場合、

終了タグが出力されている
終了タグが出力されている

終了タグが出力されている。

Sample/aspnetmvc/MvcForm/EndForm/src/MvcForm_ at master · bg1bgst333/Sample · GitHub

MvcForm

Html.BeginFormが返す値は、MvcFormとなっている。

MvcForm クラス (System.Web.Mvc.Html) | Microsoft Docs

Index.aspxで、

戻り値の型を確認してみる。

確かにMvcForm
確かにMvcForm

確かにMvcForm。

Sample/aspnetmvc/MvcForm/MvcForm/src/MvcForm_ at master · bg1bgst333/Sample · GitHub