Option Strict Off
Option Explicit On
Imports System.Windows.Forms
'------------------------------------ 2023/11/09 ------------------------------------
Public Class 五clsスイスイ

#Region "宣言"
    Private Structure スイスイData
        Dim 全範囲 As RECT
        Dim 画rct As RECT
        Dim 枠幅実寸 As Integer
        Dim 外枠幅実寸 As Integer
        Dim PostXYIDX As Integer
        Dim PostXYmax As Integer
        Dim PostXY() As POINTAPI
        Dim bmp As Integer '2017/09/28 Add  -----  OR Copy + AND Copy　をするための画像
        Dim bmpWD As Integer
        Dim bmpHT As Integer
        Dim Rgn画 As Integer '2018/08/26 Add  -----  背景画像変更時に bmp を素早く再作成するため使用
        Dim Rgn枠 As Integer
        Dim カード再作成 As Boolean
        Dim ユラユラ() As Single '2021/04/30 new add 'カードのズーム比率 1.0 - 3.0
    End Structure
    Private mSSDT() As スイスイData
    '------------------------------------------------------------------
    Private mDoEventsCall As Boolean = False
    Private mDoLoopCount, mDebugCount As Integer
    Private mCount画像, mCount文字, mCount模様, mCounトータル As Integer
    '------------------------------------------------------------------
    Public WithEvents DlgFileスイスイ用 As 四frmDlgPctFilesList = Nothing
    Public WithEvents スイスイユラユラ設定Dlg As 四frmDlgスイスイユラユラ = Nothing
    '**************************************************************************************************************************************
    Private WithEvents イベントgAppEventMaker As 五clsEventMaker
    '**************************************************************************************************************************************
    Private mMvZm受け左, mMvZm受け上, mMvZm受け幅, mMvZm受け高, mMvZm送り左, mMvZm送り上, mMvZm送り幅, mMvZm送り高 As Integer
    '********************************************************************************
    Private mループの最初の呼び出し As Boolean
    '********************************************************************************
    Private mImgスイスイ現在のサイズ As Image = Nothing   '2022/0717
    Private mImgスイスイ原画のサイズ As Image = Nothing   '2022/0717

    Private m移動描画用BMPの作成エラー As Boolean = False
    Private mまとめ描画HDC As Integer = 0

#End Region

#Region "初期化と終了処理"

    Friend Function aa初期設定() As Boolean
        mImgスイスイ現在のサイズ = frmMain.pctCard.Image.Clone
        mImgスイスイ原画のサイズ = frmMain.pctCard.Image.Clone
        イベントgAppEventMaker = gAppEventMaker
        '----------------------------------------
        Dim hdc As Integer = GetDC(frmMain.Handle)
        If hdc <> 0 Then
            mまとめ描画HDC = CreateCompatibleDC(hdc)
        End If
        '----------------------------------------
        DlgFileスイスイ用 = New 四frmDlgPctFilesList
        gggbol = DlgFileスイスイ用.aa初期設定オブジェ設定("スイスイ用ファイルを設定", gmDlgFileスイスイ用, &HFFCACA&, gm使用するmn8スイスイ用カード型を設定) '
        '----------------------------------------
        Return True
    End Function

    Protected Overrides Sub Finalize()
        If mまとめ描画HDC <> 0 Then
            gggint = DeleteDC(mまとめ描画HDC) : mまとめ描画HDC = 0
        End If
        '----------------------------------------
        If mImgスイスイ現在のサイズ IsNot Nothing Then mImgスイスイ現在のサイズ.Dispose()
        If mImgスイスイ原画のサイズ IsNot Nothing Then mImgスイスイ原画のサイズ.Dispose()
        MyBase.Finalize()
    End Sub

#End Region

#Region "実行コード"

    Friend Function aaDlgFileスイスイ用_aaウインドウ初期化作成_After_Ini_Read() As String
        If DlgFileスイスイ用 Is Nothing Then Return ""
        Return DlgFileスイスイ用.aaウインドウ初期化作成()
    End Function

    Friend Function aaスイスイユラユラ設定Dlg_aaBtnOptStateSet(ByRef PropName As String) As Boolean
        Return スイスイユラユラ設定Dlg.aaBtnOptStateSet(PropName)
    End Function

    Friend Function aaファイル画像スイスイ用DlgShow(ByVal rOwner As Form) As Boolean
        Return DlgFileスイスイ用.aaファイル画像DlgShow(rOwner)
    End Function

    Friend Sub aaスイスイユラユラ設定Dlg_Load_1_Disposed_2(ByVal op As Integer, ByVal rOwner As Form)
        Try
            Select Case op
                Case 1 'New Load
                    If gmアプリ終了する Then Return
                    If 1 = GMCOM_ダイアログモードレス表示チェック(スイスイユラユラ設定Dlg) Then
                        スイスイユラユラ設定Dlg = New 四frmDlgスイスイユラユラ
                        スイスイユラユラ設定Dlg.Owner = rOwner
                        スイスイユラユラ設定Dlg.Show()
                    End If
                Case 2 'after Disposed
                    スイスイユラユラ設定Dlg = Nothing
            End Select
        Catch
            MsgBox(ErrorToString)
        End Try
    End Sub

    Private Function zzスイスイ用ファイル新規設定(ByVal ファイル As String) As String
        Static oldファイル As String, oldWD As Integer, oldHT As Integer, oldスイスイ背景画像明るさ As Single, oldFormWD As Integer, oldFormHT As Integer
        With frmMain
            '---------------------------------------------
            If mImgスイスイ原画のサイズ IsNot Nothing Then
                If oldファイル = ファイル And oldWD = mImgスイスイ原画のサイズ.Width And oldHT = mImgスイスイ原画のサイズ.Height And oldスイスイ背景画像明るさ = pスイスイ背景画像明るさ And oldFormWD = .ClientSize.Width And oldFormHT = .ClientSize.Height Then
                    'qqqqq("zzスイスイ用ファイル新規設定() @@@@@@@@ 変更なし")
                    Return ファイル
                End If
            End If
            '---------------------------------------------
            Dim wPctCurBmp縦横比率 As Single : Dim w使用中リストIDX As Integer
            Dim imf As Image = Nothing
            Dim OpenOKfile As String = DlgFileスイスイ用.aa画像ファイルオープン_into_ImageBox_IfError_SetNextFile_自動的に(ファイル, imf, wPctCurBmp縦横比率, w使用中リストIDX)
            '---------------------------------------------
            'qqqqq("zzスイスイ用ファイル新規設定()")
            gggbol = ⅩImage_Copy_or_Clone(mImgスイスイ現在のサイズ, imf)
            gggbol = ⅩImage_Copy_or_Clone(mImgスイスイ原画のサイズ, imf)
            '---------------------------------------------
            'グレーにする
            gggbol = ⅩグレーImageMake(imf, mImgスイスイ原画のサイズ, mImgスイスイ現在のサイズ, True, pスイスイ背景画像明るさ)
            gmスイスイ再スタート原因 = gc画像ファイル変更された
            imf.Dispose()
            '---------------------------------------------
            pスイスイ背景画像の切り替え_カレントカウント = 0
            Dim fff As String = DlgFileスイスイ用.aa画像ファイル新規設定後のリスト選択表示処理(OpenOKfile)
            '---------------------------------------------
            If mImgスイスイ原画のサイズ IsNot Nothing Then
                oldファイル = ファイル : oldWD = mImgスイスイ原画のサイズ.Width : oldHT = mImgスイスイ原画のサイズ.Height : oldスイスイ背景画像明るさ = pスイスイ背景画像明るさ : oldFormWD = .ClientSize.Width : oldFormHT = .ClientSize.Height
            End If
            '---------------------------------------------
            Return zz描画用_pctBoxs_セットImage(frmMain, ファイル)
        End With
    End Function

    Private Function zz描画用_pctBoxs_セットImage(ByRef fom As frmMain, ByVal rNewファイル As String) As Boolean
        Static Old使用画像名 As String = "" : Static OldWD As Integer : Static OldHT As Integer
        '2022/05/01
        'ウインドウサイズが１ピクセルでもずれると、描画エラーになる
        'かすかな背景のずれは、ここの　Ⅹサイズ計算_受けに合わせて_送りをトリミング　呼び出しでで発生する
        With fom
            If mImgスイスイ原画のサイズ Is Nothing Then Return False
            Dim YY As Integer = .mMenuHight
            Dim WD As Integer = Math.Max(100, .ClientSize.Width)
            Dim HT As Integer = Math.Max(100, .ClientSize.Height - .mMenuHight)
            Dim ファイル As String = IIf(rNewファイル = "", DlgFileスイスイ用.p画像ファイル現在使用, rNewファイル)
            If (Old使用画像名 <> ファイル) Or OldWD <> WD Or OldHT <> HT Or gmスイスイ画像を再設定すべし = True Then
                If Not ⅩImage_新規作成_再作成(mImgスイスイ現在のサイズ, WD, HT) Then Return False
                Dim sz As Size = mImgスイスイ原画のサイズ.Size
                Dim 送り幅 As Integer = sz.Width
                Dim 送り高 As Integer = sz.Height
                Dim wLeft, wTop, wWidth, wHeight As Integer
                gggbol = Ⅹサイズ計算_受けに合わせて_送りをトリミング(WD, HT, 送り幅, 送り高, wLeft, wTop, wWidth, wHeight)
                gggbol = Ⅹ受けImage全域に_送Imageの選択領域を_Copy(mImgスイスイ現在のサイズ, mImgスイスイ原画のサイズ, wLeft, wTop, wWidth, wHeight)

                'qqqqq("     aa描画用_pctBoxs_セットImage()")

                OldWD = WD : OldHT = HT : Old使用画像名 = ファイル
            End If
            gmスイスイ画像を再設定すべし = False
        End With
        Return True
    End Function
    '■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
    Private Sub イベントgAppEventMaker_ユラユラサイズ再設定データー求む(ByRef wDoLoopStop As Boolean, ByRef w受け左 As Integer, ByRef w受け上 As Integer, ByRef w受け幅 As Integer, ByRef w受け高 As Integer, ByRef w送り幅 As Integer, ByRef w送り高 As Integer) Handles イベントgAppEventMaker.ユラユラサイズ再設定データー求む
        w受け左 = 0
        w受け上 = 0
        With mImgスイスイ現在のサイズ
            w受け幅 = .Width
            w受け高 = .Height
            w送り幅 = .Width
            w送り高 = .Height
        End With
        Dim ユラユラ不要 As Boolean = Not (ppユラユラ実行中 Or ppスイスイandユラユラ実行中)
        wDoLoopStop = wDoLoopStop Or ユラユラ不要
        'If wDoLoopStop Then
        '    qqqqq("イベントgAppEventMaker_ユラユラサイズ再設定データー求む() wDoLoopStop")
        'End If
        'qqqqq("イベントgAppEventMaker_ユラユラサイズ再設定データー求む")
    End Sub
    Private Sub イベントgAppEventMaker_ユラユラ移動コピー用データーができました(ByRef r受け左 As Integer, ByRef r受け上 As Integer, ByRef r受け幅 As Integer, ByRef r受け高 As Integer, ByRef r送り左 As Integer, ByRef r送り上 As Integer, ByRef r送り幅 As Integer, ByRef r送り高 As Integer) Handles イベントgAppEventMaker.ユラユラ移動コピー用データーができました
        mMvZm受け左 = r受け左 : mMvZm受け上 = r受け上 : mMvZm受け幅 = r受け幅 : mMvZm受け高 = r受け高 : mMvZm送り左 = r送り左 : mMvZm送り上 = r送り上 : mMvZm送り幅 = r送り幅 : mMvZm送り高 = r送り高
        '------------------------------------------------------------------------------------------------------------------------------
        'Static mmm As Integer : mmm = mmm + 1 : If mmm Mod 200 = 0 Then qqqqq(Format(mmm, "00000") + "  イベントgAppEventMaker_ユラユラ移動コピー用データーができました")
        '------------------------------------------------------------------------------------------------------------------------------
    End Sub
    '■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
    Friend Function aaスイスイとユラユラ実行の開始と停止(ByRef rスイスイop1_ユラユラop2_すべてop3 As Integer, ByVal r実行true_停止false As Boolean) As Boolean
        '*************************************************************************************************************************************************************************************
        '2022/0705 特記事項　
        'カードや背景の切り替えに時間がかかるのは、BitMap 800 枚の作成が原因ではない。
        'フラフラモードのための、三角関数計算のためである。フラフラモードを停止すると、切り替えは1秒程度になる。
        '*************************************************************************************************************************************************************************************
        'qqqqq "in aaスイスイとユラユラ実行の開始と停止"
        '*************************************************************************************************************************************************************************************
        '**********************************************************
        'Public gmスイスイユラユラ実行中 As Integer = 0     '0 = なし　　　1 = スイスイのみ　　　2 = ユラユラのみ　　　3 = スイスイユラユラ両方
        '**********************************************************
        Dim op As Integer = rスイスイop1_ユラユラop2_すべてop3
        If True = r実行true_停止false Then  '追加
            If ppスイスイフラフラ_いずれも停止している Then
                Dim nnn As Integer = Ⅹ数値範囲Int(1, 3, op) 'この場合のみ、この関数内に入る。
                Select Case nnn
                    Case 1 : ppスイスイ実行中 = True
                    Case 2 : ppユラユラ実行中 = True
                    Case 3 : ppスイスイandユラユラ実行中 = True
                End Select
                'gmスイスイユラユラ実行中 = Ⅹ数値範囲Int(1, 3, op)  'この場合のみ、この関数内に入る。

            ElseIf ppスイスイ実行中 Or ppユラユラ実行中 Then  ' (gmスイスイユラユラ実行中 < 3 And op = 3) Then
                ppスイスイandユラユラ実行中 = True
                GoTo イベントgAppEventMake_スイスイとユラユラ開始と停止_を呼び出してExitFunction
            ElseIf ppスイスイ実行中 Then
                If op = 2 Then ppスイスイandユラユラ実行中 = True
                GoTo イベントgAppEventMake_スイスイとユラユラ開始と停止_を呼び出してExitFunction
            ElseIf ppユラユラ実行中 Then
                If op = 1 Then ppスイスイandユラユラ実行中 = True
                GoTo イベントgAppEventMake_スイスイとユラユラ開始と停止_を呼び出してExitFunction
            Else
                GoTo イベントgAppEventMake_スイスイとユラユラ開始と停止_を呼び出してExitFunction
            End If
        Else
            If ppスイスイフラフラ_いずれも停止している Then
                GoTo イベントgAppEventMake_スイスイとユラユラ開始と停止_を呼び出してExitFunction
            ElseIf op = 3 Then
                gmスイスイ再スタート原因 = gcスイスイユラユラ停止する
                GoTo イベントgAppEventMake_スイスイとユラユラ開始と停止_を呼び出してExitFunction
            ElseIf ppスイスイ実行中 Or ppユラユラ実行中 Then
                gmスイスイ再スタート原因 = gcスイスイユラユラ停止する
                GoTo イベントgAppEventMake_スイスイとユラユラ開始と停止_を呼び出してExitFunction
            ElseIf ppスイスイandユラユラ実行中 Then
                If op = 1 Then
                    ppユラユラ実行中 = True
                ElseIf op = 2 Then
                    ppスイスイ実行中 = True
                End If
                GoTo イベントgAppEventMake_スイスイとユラユラ開始と停止_を呼び出してExitFunction
            Else
                GoTo イベントgAppEventMake_スイスイとユラユラ開始と停止_を呼び出してExitFunction
            End If
        End If
        '**********************************************************
        If mDoEventsCall Then
            qqqqq("mDoEventsCall") : Return False
        End If
        If frmMain.mmLoading Then Return False
        If mまとめ描画HDC = 0 Then Return False
        '**********************************************************
        Static OLD全画幅 As Integer, OLD全画高 As Integer, OLDp画像ファイル現在使用 As String, OLDpスイスイ背景画像明るさ As Single
        '**********************************************************
        Dim 原因は_スイスイ再スタート_for_かなカナ As Boolean = False      '2023/06/03 add new
        '**********************************************************
        Dim rc全画面 As RECT : Dim 全画高, 全画幅, 最大全長 As Integer
        Dim Brush四本(4) As Integer : Dim BitBltマスク使用 As Boolean
        Dim LoopStopかなカナイメージ変更 As Boolean
        Dim sxx, xx, a, mmmm, yy, syy As Integer : Dim dddd, eeee As Boolean : Dim rc, rcCur As RECT
        Dim ズームモード, シンクロズームカウンタ, zoomWD, zoomHT As Integer '2021/04/30 - 05/30  add
        Dim カード枚数, カード枚数OLD, oldbmp As Integer
        Dim ssdidx As Integer
        Dim まとめ描画BMP As Integer = 0 : Dim まとめ描画BMP_old As Integer = 0
        Dim ghDC2BMP As Integer = 0 : Dim ghDC2BMP_old As Integer = 0
        '*************************************************************************************************************************************************************************************
        '◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
        'スイスイ実行中は、　pctメイン　は、非表示にしておく。
        Dim cc As Control
        For Each cc In frmMain.Controls
            If TypeOf cc Is PictureBox Then
                If cc IsNot frmMain.pctメイン Then cc.Visible = False
            ElseIf TypeOf cc Is Panel Then
                If cc Is frmMain.pnlゲーム結果 Then
                    'Show OK  pnlゲーム結果　は表示していてもよい
                Else
                    cc.Visible = False
                End If
            End If
        Next
        '◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
        '*************************************************************************************************************************************************************************************
        ReDim mSSDT(0)
        gggstr = イベントgAppEventMaker.MakeEventスイスイとユラユラ開始と停止()
        gggbol = イベントgAppEventMaker.MakeEventタイマーのオンオフonスイスイonff(gmDlgFileゲーム用, False)
        gggbol = イベントgAppEventMaker.MakeEventタイマーのオンオフonスイスイonff(gmDlgFileスイスイ用, (False = pスイスイ背景画像の切り替え_タイムカウントオーバー()))
        '*************************************************************************************************************************************************************************************
        mループの最初の呼び出し = True
        If cピタ1_コレ2_カナ3 = 3 Then
            gggbol = gmアプリ固有クラス.aaスイスイ_ショーカード_イメージ操作(100, frmMain.pスイスイカードイメージ, False, 0, 0, 0, 0, Brush四本, 0, 0, 0, 0, 0, 0, 0) 'Make bitmap image   模様　／　カナ文字　／　画像
            gggbol = frmMain.aaTimカード型変更_EnabledSet(True)
        End If
        '*************************************************************************************************************************************************************************************
        '◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
HDCと画像を再作成して再スタート:
        '◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
        'qqqqq("■■■１ループの始まり   ReDim mSSDT(カード枚数)")
        '*****************************************************
        '2023/04/16 add
        Dim 画像の変更だけ As Boolean = (まとめ描画BMP_old <> 0) And (gmスイスイ再スタート原因 = gc画像ファイル変更された Or gmスイスイ再スタート原因 = gc変更pスイスイ背景画像明るさ)
        '*****************************************************
        '*****************************************************
        gmスイスイ再スタート原因 = gcなし
        '*****************************************************
        '*****************************************************
        gggstr = zzスイスイ用ファイル新規設定(DlgFileスイスイ用.p画像ファイル現在使用)       'ここで、mImgスイスイ現在のサイズ　は現在のフォームサイズに設定済みである
        '*****************************************************
        '*****************************************************
        With mImgスイスイ現在のサイズ
            Call イベントgAppEventMaker_ユラユラ移動コピー用データーができました(0, 0, .Width, .Height, 0, 0, .Width, .Height)
        End With
        '*****************************************************
        With frmMain
            全画幅 = .ClientSize.Width
            全画高 = .ClientSize.Height - .mMenuHight
            最大全長 = System.Math.Sqrt(全画幅 * 全画高) * 2.0#  '配列の延長は、１．５から２倍になるので、その補正。
            gggint = SetRect(rc全画面, 0, 0, 全画幅, 全画高)     'リセット
            '*****************************************************
            '2023/05/31 add new 　背景画像切り替えの場合に、画面がクリアされてちらつくのを防止する
            If OLD全画幅 = 全画幅 Or OLD全画高 = 全画高 Then
                If まとめ描画BMP <> 0 And mまとめ描画HDC <> 0 Then
                    Dim HDCfrmMain As Integer = GetDC(frmMain.Handle)
                    If HDCfrmMain <> 0 Then
                        gggint = BitBlt(HDCfrmMain, 0, .mMenuHight, .ClientSize.Width, .ClientSize.Height - .mMenuHight, mまとめ描画HDC, 0, 0, SRCCOPY)
                        gggint = ReleaseDC(frmMain.Handle, HDCfrmMain)
                    End If
                End If
            End If
            '*****************************************************
            '複数回の描画操作をまとめるための BMP を用意する。
            If OLD全画幅 <> 全画幅 Or OLD全画高 <> 全画高 Or ghDC2BMP = 0 Or OLDpスイスイ背景画像明るさ <> pスイスイ背景画像明るさ Then
                gggbol = zz描画用BMP交換_mImgスイスイ現在のサイズ_をコピーして(mまとめ描画HDC, まとめ描画BMP_old, まとめ描画BMP)
                gggbol = zz描画用BMP交換_mImgスイスイ現在のサイズ_をコピーして(ghDC2, ghDC2BMP_old, ghDC2BMP)
                OLDp画像ファイル現在使用 = DlgFileスイスイ用.p画像ファイル現在使用
            End If
            If OLDp画像ファイル現在使用 <> DlgFileスイスイ用.p画像ファイル現在使用 Then
                gggbol = zz描画用BMP交換_mImgスイスイ現在のサイズ_をコピーして(ghDC2, ghDC2BMP_old, ghDC2BMP)
                OLDp画像ファイル現在使用 = DlgFileスイスイ用.p画像ファイル現在使用
            End If
            '*****************************************************
            OLD全画幅 = 全画幅 : OLD全画高 = 全画高 : OLDp画像ファイル現在使用 = DlgFileスイスイ用.p画像ファイル現在使用 : OLDpスイスイ背景画像明るさ = pスイスイ背景画像明るさ
            'qqqqq("■in スイスイユラユラ　HDC / BMP を再作成")
        End With
        '◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
HDCと画像はそのまま再スタート:
        '◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
        '------------------------------------------------------------------
        カード枚数 = pスイスイカード枚数現在VAL()
        'qqqqq CStr(カード枚数)
        '------------------------------------------------------------------
        '2023/06/19 new  画像の変更と枚数の変更が、同時に発生すると、配列サイズの不一致でエラーになる。
        画像の変更だけ = 画像の変更だけ And (カード枚数 = カード枚数OLD)
        '------------------------------------------------------------------
        With frmMain
            '------------------------------------------------------------------
            Select Case cピタ1_コレ2_カナ3
                Case 1, 2
                    For a = 1 To 4
                        Brush四本(a) = 0 'No Using
                    Next
                Case 3
                    For a = 1 To 4
                        If Brush四本(a) <> 0 Then gggint = DeleteObject(Brush四本(a))
                        Brush四本(a) = CreateSolidBrush(IIf(a = 1, ⅩColor構造体_to_色値(.BackColor), IIf(a = 2, ⅩColor構造体_to_色値(System.Drawing.Color.White), IIf(a = 3, gmアプリ固有クラス.pゲーム配色ひらがな, gmアプリ固有クラス.pゲーム配色カタカナ))))
                    Next
                    gggbol = gmアプリ固有クラス.aaスイスイ_ショーカード_イメージ操作(200, frmMain.pスイスイカードイメージ, False, 0, 0, 0, 0, Brush四本, 0, 0, 0, 0, 0, 0, 0) '現在の模様と画像インデックスをリセット
                    LoopStopかなカナイメージ変更 = False
            End Select
            '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
            If ppスイスイ実行中 Or ppスイスイandユラユラ実行中 Then   '1 = gmスイスイユラユラ実行中 Or 3 = gmスイスイユラユラ実行中 Then   '0 = なし　　　1 = スイスイのみ　　　2 = ユラユラのみ　　　3 = スイスイユラユラ両方
                If 画像の変更だけ Then
                    gggint = zzカード再作成フラッグ設定()
                    If Not zz新しい移動描画のデーターを作る(1, カード枚数, False, ghDC2, カード枚数, 全画高, 全画幅, 最大全長, ズームモード, Brush四本, 画像の変更だけ) Then
                        GoTo EXITLAST
                    End If
                End If
                '------------------------------------------------------------------
すべての場合でカードを作り直す_on_gmスイスイユラユラ実行中_CHANGED:
                '------------------------------------------------------------------
                If Not 画像の変更だけ Then
                    gggbol = zz移動描画用のBMPとRGNを削除_すべのメンバ()
                    'qqqqq("on start カード作成 start")
                    ズームモード = pスイスイズームモードDo
                    ReDim mSSDT(カード枚数)
                    Randomize()
                    gggint = zzカード再作成フラッグ設定()
                    '********************************************************************************
                    If Not zz新しい移動描画のデーターを作る(1, カード枚数, True, ghDC2, カード枚数, 全画高, 全画幅, 最大全長, ズームモード, Brush四本, 画像の変更だけ) Then
                        GoTo EXITLAST
                    End If
                    '********************************************************************************
                End If
                'qqqqq("on start カード作成 stop")
                mDoLoopCount = 0
            End If
            '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
            画像の変更だけ = False
            '------------------------------------------------------------------
            '------------------------------------------------------------------
            '2023/06/03 add new
            If 原因は_スイスイ再スタート_for_かなカナ Then
                原因は_スイスイ再スタート_for_かなカナ = False
            Else
                gmスイスイ再スタート原因 = gcなし
            End If
            '------------------------------------------------------------------
            '------------------------------------------------------------------
            ズームモード = pスイスイズームモードDo
            シンクロズームカウンタ = 1 '2021/05/30 add
            BitBltマスク使用 = (cピタ1_コレ2_カナ3 = 1)
            '**************************************************************************************
            '**************************************************************************************
            '**************************************************************************************
            '**************************************************************************************
            '**************************************************************************************
            Do
                カード枚数OLD = カード枚数
                '------------------------------------------------------------------
                ズームモード = pスイスイズームモードDo
                シンクロズームカウンタ = シンクロズームカウンタ + 1 '2021/05/30 add
                '------------------------------------------------------------------
                gggint = SetStretchBltMode(mまとめ描画HDC, COLORONCOLOR)
                '------------------------------------------------------------------
                If pスイスイ背景画像を表示 Then
                    If ppユラユラ実行中 Or ppスイスイandユラユラ実行中 Then    ' (gmスイスイユラユラ実行中 <> 1) Then
                        mループの最初の呼び出し = (カード枚数OLD <> カード枚数)
                        Call frmMain.ooユラユラ.aa描画の移動一ステップ(mループの最初の呼び出し, frmMain)
                        mループの最初の呼び出し = False '2019/10/19 add
                        gggint = StretchBlt(mまとめ描画HDC, 0, 0, mMvZm受け幅, mMvZm受け高, ghDC2, mMvZm送り左, mMvZm送り上, mMvZm送り幅, mMvZm送り高, SRCCOPY)
                    Else
                        gggint = BitBlt(mまとめ描画HDC, 0, 0, .ClientSize.Width, .ClientSize.Height - frmMain.mMenuHight, ghDC2, 0, 0, SRCCOPY)
                    End If
                Else
                    Dim rrcc As RECT
                    gggbol = ⅩRectDraw(mまとめ描画HDC, rrcc, pスイスイ背景の色, 0, 0, .ClientSize.Width, .ClientSize.Height - frmMain.mMenuHight, False)
                End If
                '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
                '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
                If ppスイスイ実行中 Or ppスイスイandユラユラ実行中 Then   '2 <> gmスイスイユラユラ実行中 Then
                    '-----------------------------------------------------
                    If UBound(mSSDT) = 0 Then
                        GoTo すべての場合でカードを作り直す_on_gmスイスイユラユラ実行中_CHANGED
                    End If
                    '-----------------------------------------------------
                    For ssdidx = 1 To カード枚数
                        With mSSDT(ssdidx)
                            '-----------------------------------------------------
                            .PostXYIDX = .PostXYIDX + 1 : xx = .PostXY(.PostXYIDX).X : yy = .PostXY(.PostXYIDX).Y
                            '-----------------------------------------------------
                            dddd = True
                            '-----------------------------------------------------
                            oldbmp = SelectObject(ghDC1, .bmp)
                            If oldbmp <> 0 Then
                                If ズームモード <> 1 Then
                                    If ズームモード = 2 Then '2021/05/30 chg add  'もしズームモードシンクロ
                                        gggint = GMCOMⅩユラユラデーター処理_05_to_15_シンクロ(シンクロズームカウンタ, .bmpWD, .bmpHT, zoomWD, zoomHT)
                                    ElseIf ズームモード = 3 Then  '2021/05/30 chg add  'もしズームモードランダム
                                        '2021/04/30 chg add
                                        gggint = GMCOMⅩユラユラデーター処理_05_to_15(3, .ユラユラ, mmmm, .PostXYIDX, .bmpWD, .bmpHT, zoomWD, zoomHT)
                                        '2021/04/30 chg add
                                    End If
                                    sxx = xx + ((.bmpWD - zoomWD) \ 2)
                                    syy = yy + ((.bmpHT - zoomHT) \ 2)
                                    gggint = SetRect(rcCur, sxx, syy, sxx + zoomWD, syy + zoomWD)
                                    dddd = (IntersectRect(rc, rc全画面, rcCur) <> 0)
                                    'qqqqq CStr(ssdidx) + "   " + CStr(.PostXYIDX) + "   " + CStr(mmmm)
                                    If dddd Then
                                        If BitBltマスク使用 Then
                                            gggint = StretchBlt(mまとめ描画HDC, sxx, syy, zoomWD, zoomHT, ghDC1, 0, 0, .bmpWD, .bmpHT, SRCPAINT)
                                            gggint = StretchBlt(mまとめ描画HDC, sxx, syy, zoomWD, zoomHT, ghDC1, .bmpWD, 0, .bmpWD, .bmpHT, SRCAND)
                                        Else
                                            gggint = StretchBlt(mまとめ描画HDC, sxx, syy, zoomWD, zoomHT, ghDC1, .bmpWD, 0, .bmpWD, .bmpHT, SRCCOPY)
                                        End If
                                    End If
                                Else
                                    gggint = SetRect(rcCur, xx, yy, xx + .bmpWD, yy + .bmpHT)
                                    dddd = (IntersectRect(rc, rc全画面, rcCur) <> 0)
                                    'qqqqq CStr(ssdidx) + "   " + CStr(.PostXYIDX) + "   " + CStr(mmmm)
                                    If dddd Then
                                        If BitBltマスク使用 Then
                                            gggint = BitBlt(mまとめ描画HDC, xx, yy, .bmpWD, .bmpHT, ghDC1, 0, 0, SRCPAINT)
                                            gggint = BitBlt(mまとめ描画HDC, xx, yy, .bmpWD, .bmpHT, ghDC1, .bmpWD, 0, SRCAND)
                                        Else
                                            gggint = BitBlt(mまとめ描画HDC, xx, yy, .bmpWD, .bmpHT, ghDC1, .bmpWD, 0, SRCCOPY)
                                        End If
                                    End If
                                End If
                                gggint = SelectObject(ghDC1, oldbmp)
                            End If
                            '-----------------------------------------------------
                            eeee = (.PostXYIDX < .PostXYmax) '配列の最大まで移動すればウィンドウ内であっても　False　を返す。
                            If eeee Then
                                If Not dddd Then
                                    If .PostXYIDX > (.PostXYmax \ 2) Then
                                        eeee = False
                                        'qqqqq(CStr(ssdidx) + "   " + CStr(.PostXYIDX) + "   " + CStr(mmmm))
                                    End If
                                End If
                            End If
                            If Not eeee Then
                                '********************************************************************************
                                If Not zz新しい移動描画のデーターを作る(ssdidx, ssdidx, False, ghDC2, カード枚数, 全画高, 全画幅, 最大全長, ズームモード, Brush四本, 画像の変更だけ) Then
                                    GoTo EXITLAST
                                End If
                                '********************************************************************************
                            End If
                        End With
                    Next
                End If
                '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
                '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
                If frmMain.pctメイン.Visible Then frmMain.pctメイン.Visible = False
                Dim HDCfrmMain As Integer = GetDC(frmMain.Handle)
                If HDCfrmMain <> 0 Then
                    gggint = BitBlt(HDCfrmMain, 0, frmMain.mMenuHight, .ClientSize.Width, .ClientSize.Height - frmMain.mMenuHight, mまとめ描画HDC, 0, 0, SRCCOPY)
                    gggint = ReleaseDC(frmMain.Handle, HDCfrmMain)
                End If
                '-----------------------------------------------------
                'ループ中断の条件をチェックして実行。もしそうであれば、、、
                '-----------------------------------------------------
                mDoLoopCount = mDoLoopCount + 1
                If mDoLoopCount Mod 10 = 0 Then
                    '************************************************
                    '重要'重要'重要'重要
                    mDoEventsCall = True : System.Windows.Forms.Application.DoEvents() : mDoEventsCall = False
                    '重要'重要'重要'重要
                    '************************************************
                    If gmアプリ終了する Then
                        GoTo gmアプリ終了する_ExitFunction
                    Else
                        '************************************************
                        '重要　ウインドウがアイコン化されているときは、このループの処理は中断する。
                        Do While .WindowState = System.Windows.Forms.FormWindowState.Minimized
                            Call Sleep(500)
                            mDoEventsCall = True : System.Windows.Forms.Application.DoEvents() : mDoEventsCall = False
                            If gmアプリ終了する Then
                                GoTo gmアプリ終了する_ExitFunction
                            ElseIf .WindowState <> System.Windows.Forms.FormWindowState.Minimized Then
                                Exit Do
                            End If
                        Loop
                        '--------------------------------------------------------------------------------------
                        If gmスイスイ再スタート_for_かなカナ Then    '2023/05/13 add new
                            gmスイスイ再スタート_for_かなカナ = False : 原因は_スイスイ再スタート_for_かなカナ = True
                            GoTo HDCと画像はそのまま再スタート
                        End If
                        '--------------------------------------------------------------------------------------
                        Select Case gmスイスイ再スタート原因
                            Case gc変更pスイスイカード枚数
                                GoTo HDCと画像はそのまま再スタート
                            Case gcなし
                                'No Op loop OK
                            Case gc画像ファイル存在しない
                                'No Op loop OK
                                '------------------------------------------------
                            Case gcFormResize, gc変更pスイスイ背景画像明るさ, gc画像ファイル変更された
                                '------------------------------------------------
                                '2023/08/31　再エラー修正　　　背景画像を表示しない場合でも、(cピタ1_コレ2_カナ3 = 3)以外では、カード用の画像は変更しなければならないので、GoTo HDCと画像を再作成して再スタート　が必要。
                                '------------------------------------------------
                                If (cピタ1_コレ2_カナ3 = 3) And (Not pスイスイ背景画像を表示) And (gmスイスイ再スタート原因 <> gcFormResize) Then
                                    gmスイスイ再スタート原因 = gcなし
                                Else
                                    GoTo HDCと画像を再作成して再スタート
                                End If
                                '------------------------------------------------
                            Case gcスイスイユラユラ停止する
                                Exit Do
                            Case Else
                                Exit Do
                        End Select
                        '************************************************
                    End If
                End If
            Loop
        End With
        '**************************************************************************************
        'qqqqq("スイスイ Exit Loop Done Del HDC / BMP")
        '************************************************
        If gmスイスイ再スタート_for_かなカナ Then    '2023/05/13 add new
            gmスイスイ再スタート_for_かなカナ = False : 原因は_スイスイ再スタート_for_かなカナ = True
            GoTo HDCと画像はそのまま再スタート
        End If
        Select Case gmスイスイ再スタート原因
            '------------------------------------------------
            '2023/08/31　再エラー修正　　　背景画像を表示しない場合でも、(cピタ1_コレ2_カナ3 = 3)以外では、カード用の画像は変更しなければならないので、GoTo HDCと画像を再作成して再スタート　が必要。
            '------------------------------------------------
            Case gcFormResize, gc変更pスイスイ背景画像明るさ, gc画像ファイル変更された
                If (cピタ1_コレ2_カナ3 = 3) And (Not pスイスイ背景画像を表示) And (gmスイスイ再スタート原因 <> gcFormResize) Then
                    gmスイスイ再スタート原因 = gcなし
                Else
                    GoTo HDCと画像を再作成して再スタート
                End If
            Case gcスイスイユラユラ停止する, gcなし
                'GoTo Exit_This_Function
        End Select
        '★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
Exit_This_Function:
        'qqqqq("Exit_This_Function")
        GoTo EXITLAST
        '★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
gmアプリ終了する_ExitFunction:
        'qqqqq("gmアプリ終了する_ExitFunction")
        GoTo EXITLAST
        '★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
        '★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
EXITLAST:
        '*****************************************************
        If まとめ描画BMP_old <> 0 Then
            SelectObject(mまとめ描画HDC, まとめ描画BMP_old) : まとめ描画BMP_old = 0
        End If
        If まとめ描画BMP <> 0 Then
            gggint = DeleteObject(まとめ描画BMP) : まとめ描画BMP = 0
        End If
        '*****************************************************
        If ghDC2BMP_old <> 0 Then
            SelectObject(ghDC2, ghDC2BMP_old) : ghDC2BMP_old = 0
        End If
        If ghDC2BMP <> 0 Then
            gggint = DeleteObject(ghDC2BMP) : ghDC2BMP = 0
        End If
        '*****************************************************
        mDoEventsCall = False
        gmスイスイ再スタート原因 = gcなし
        '--------------------------------------------------------------------------------------
        gggbol = zz移動描画用のBMPとRGNを削除_すべのメンバ()
        '--------------------------------------------------------------------------------------
        Select Case cピタ1_コレ2_カナ3
            Case 3
                For a = 1 To 4
                    If Brush四本(a) <> 0 Then
                        gggint = DeleteObject(Brush四本(a))
                        Brush四本(a) = 0
                    End If
                Next
        End Select
        '--------------------------------------------------------------------------------------
        If gmアプリ終了する Then Return True
        '--------------------------------------------------------------------------------------
        If cピタ1_コレ2_カナ3 = 3 Then
            gggbol = frmMain.aaTimカード型変更_EnabledSet(False)
        End If
        Call gmアプリ固有クラス.aaゲームクリア(False)
        gggbol = イベントgAppEventMaker.MakeEventタイマーのオンオフonスイスイonff(gmDlgFileスイスイ用, False)
        gggbol = イベントgAppEventMaker.MakeEventタイマーのオンオフonスイスイonff(gmDlgFileゲーム用, False)
        gggstr = イベントgAppEventMaker.MakeEventスイスイとユラユラ開始と停止()

        '現在の模様と画像インデックスをリセット  カードショーとスイスイで　共用しているから
        gggbol = gmアプリ固有クラス.aaスイスイ_ショーカード_イメージ操作(200, frmMain.pスイスイカードイメージ, False, 0, 0, 0, 0, Brush四本, 0, 0, 0, 0, 0, 0, 0) '現在の模様と画像インデックスをリセット
        '********************************************************************************
        '2022/10/24 
        If m移動描画用BMPの作成エラー Then
            MsgBox("■■■　重大なエラーが発生しました　■■■" & gggCR2 & "スイスイカード用の　ビットマップ　が作れなくなりました。" & gggCR2 & "このアプリをすぐに終了します。", MsgBoxStyle.OkOnly, frmMain.Text)
            Call frmMain.mn1gameこのアプリを終了_Click(Nothing, Nothing)
        End If
        '2022/10/24 
        '********************************************************************************
        Return True
        '********************************************************************************
        '★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
イベントgAppEventMake_スイスイとユラユラ開始と停止_を呼び出してExitFunction:
        If rスイスイop1_ユラユラop2_すべてop3 = 3 And r実行true_停止false = False Then
            'if すべて停止なら
            '現在の模様と画像インデックスをリセット  カードショーとスイスイで　共用しているから
            Dim tmpBrush四本(4) As Integer
            gggbol = gmアプリ固有クラス.aaスイスイ_ショーカード_イメージ操作(200, frmMain.pスイスイカードイメージ, False, 0, 0, 0, 0, tmpBrush四本, 0, 0, 0, 0, 0, 0, 0) '現在の模様と画像インデックスをリセット
        Else
            gggstr = イベントgAppEventMaker.MakeEventスイスイとユラユラ開始と停止()
        End If
        Return True
    End Function
    '■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
    Private Function zz描画用BMP交換_mImgスイスイ現在のサイズ_をコピーして(ByVal rHDC As Integer, ByRef rwOldBmp As Integer, ByRef rwCurUseingBmp As Integer) As Boolean
        If rwOldBmp <> 0 Then SelectObject(rHDC, rwOldBmp)
        If rwCurUseingBmp <> 0 Then gggint = DeleteObject(rwCurUseingBmp)
        rwCurUseingBmp = ⅩBmpMakeFromImage(mImgスイスイ現在のサイズ)
        rwOldBmp = SelectObject(rHDC, rwCurUseingBmp)
        gggint = SetStretchBltMode(rHDC, COLORONCOLOR)
        'qqqqq("zz描画用BMP交換_mImgスイスイ現在のサイズ_をコピーして()")
        Return True
    End Function
    '■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
    Private Function zz移動描画用のBMPとRGNを削除_すべのメンバ() As Boolean
        Dim ssdidx As Integer
        For ssdidx = 1 To UBound(mSSDT) : gggbol = zz移動描画用のBMPとRGNを削除(ssdidx) : Next
        ReDim mSSDT(0)
        Return True
    End Function
    '■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
    Private Function zz移動描画用のBMPとRGNを削除(ByVal ssdidx As Integer) As Boolean
        With mSSDT(ssdidx)
            If .bmp <> 0 Then gggint = DeleteObject(.bmp)
            .bmp = 0
            If .Rgn画 <> 0 Then gggint = DeleteObject(.Rgn画)
            .Rgn画 = 0
            If .Rgn枠 <> 0 Then gggint = DeleteObject(.Rgn枠)
            .Rgn枠 = 0
        End With
        'Static mDebugCount As Integer : mDebugCount = mDebugCount + 1 : If mDebugCount Mod 100 = 0 Then qqqqq(CStr(mDebugCount) + "  回目 mSSDT()の BMPとRGNを削除")
        Return True
    End Function
    '■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
    Private Function zz新しい移動描画のデーターを作る(ByVal stt As Integer, ByVal stp As Integer, ByRef 最初のデーター作成 As Boolean, _
                                    ByRef HDCghDC2 As Integer, ByRef カード枚数 As Integer, ByRef 全画高 As Integer, ByRef 全画幅 As Integer, _
                                    ByRef 最大全長 As Integer, ByRef ズームモード As Integer, ByRef Brush四本() As Integer, ByVal 画像の変更だけ As Boolean) As Boolean
        ''-----------------------------------------------------
        'Static mmmBmpMakeCount As Integer : Static mmmChkMaxWD As Integer
        ''-----------------------------------------------------
        Dim a As Integer, n As Integer, xx As Integer, yy As Integer, mmmm As Integer
        Dim rc As RECT
        Dim StartX, PichX, PichY, StartY As Single : Dim bbb, radone, bai波の数, bai波の高さ半径, aaa, ccc As Single
        '-----------------------------------------------------
        Const ランダムサイズに設定 As Boolean = True : Const std波の数 As Single = 3.5 : Const min波の数 As Single = 2.0# : Const max波の数 As Single = 5.0#
        Const std波の高さ半径 As Single = 0.15 : Const min波の高さ半径 As Single = 0.1 : Const max波の高さ半径 As Single = 0.2
        '-----------------------------------------------------
        Dim スイスイ枠の色はランダム As Boolean = pスイスイ枠の色はランダム
        Dim スイスイ大中小モード As Boolean = pスイスイ大中小モード
        '-----------------------------------------------------
        Dim 画高 As Integer, 画幅 As Integer, 全長 As Integer, スイスイスピード As Integer
        Dim 正方形にする As Boolean, 画rctを設定する As Boolean, スイスイフラフラモード As Boolean, 右上がり As Boolean
        Dim 枠幅実寸用の倍数 As Single, 特別な倍数 As Single, スイスイサイズ As Single, スピード倍数 As Single, メイン倍数 As Single, bai As Single
        'Dim Brsh線 As Integer, Brsh枠 As Integer
        Dim 外枠幅実寸 As Integer
        Dim curindex As Integer
        '********************************************************************************
        m移動描画用BMPの作成エラー = False
        '********************************************************************************
        '********************************************************************************
        '********************************************************************************
        '********************************************************************************
        If 画像の変更だけ Then GoTo 画像の変更だけ_実行
        '********************************************************************************
        '********************************************************************************
        '********************************************************************************
        '********************************************************************************
        Select Case cピタ1_コレ2_カナ3
            Case 1
                スピード倍数 = 2.0 : 正方形にする = True : 特別な倍数 = 0.8 : スイスイサイズ = System.Math.Sqrt(pスイスイサイズ) * 3.0#
                If スイスイサイズ > 8 Then スイスイサイズ = 8
            Case 2
                スピード倍数 = 1.5 : 正方形にする = False : 特別な倍数 = 0.9 : スイスイサイズ = pスイスイサイズ
            Case 3
                スピード倍数 = 1.5 : スイスイサイズ = pスイスイサイズ
            Case Else
                スピード倍数 = 1.0 : スイスイサイズ = pスイスイサイズ
        End Select
        スイスイスピード = pスイスイスピード
        スイスイフラフラモード = pスイスイフラフラモード
        '-----------------------------------------------------
        Select Case cピタ1_コレ2_カナ3
            Case 1, 2
                枠幅実寸用の倍数 = (pスイスイ枠サイズ * 0.0075)
            Case 3
                Dim Brsh線 As Integer
                gggbol = gmアプリ固有クラス.aaスイスイ_ショーカード_イメージ操作(300, frmMain.pスイスイカードイメージ, 正方形にする, 枠幅実寸用の倍数, 特別な倍数, curindex, Brsh線, Brush四本, 0, 0, 0, 0, 0, 0, 0)
        End Select
        '-----------------------------------------------------
        外枠幅実寸 = IIf(ズームモード <> 1, 0, 1)        '2022/06/28  change  外枠幅実寸 = 1
        '-----------------------------------------------------
        メイン倍数 = 0.075 * Math.Sqrt(Math.Sqrt(Math.Sqrt(スイスイサイズ * スイスイサイズ * スイスイサイズ))) 'スイスイサイズ 1, 2, 3, 4, 5, 6   で変更
        '-----------------------------------------------------
        For curindex = stt To stp
            If mSSDT(curindex).カード再作成 Then
                '-----------------------------------------------------
                画幅 = 全画幅 * メイン倍数
                画高 = 全画高 * メイン倍数
                '-----------------------------------------------------
                If スイスイ大中小モード Then
                    bai = 0.6 + (Rnd() * 0.7) : 画幅 = 画幅 * bai : 画高 = 画高 * bai '1.3  or  '0.6 to 1.3
                End If
                n = System.Math.Sqrt(画幅 * 画高) * 0.9
                If 正方形にする Then
                    画幅 = n : 画高 = n 'カードイメージ　　文字  /　模様  /  ピタペタ用サイズ
                End If
                '-----------------------------------------------------
                bai = 7 / System.Math.Sqrt(カード枚数 ^ 0.8) '枚数比でサイズ変更 (100, 200, 400, 800, 1600)   2017/11/30
                'mDebugCount = mDebugCount + 1
                'If mDebugCount Mod 100 = 0 Then qqqqq CStr(bai)
                '-----------------------------------------------------
                画幅 = 画幅 * bai : 画高 = 画高 * bai
                '-----------------------------------------------------
                画幅 = Math.Min(画幅, 全画幅 \ 2) : 画高 = Math.Min(画高, 全画高 \ 2)
                画幅 = ((画幅 * 特別な倍数) \ 2) * 2 : 画高 = ((画高 * 特別な倍数) \ 2) * 2
                With mSSDT(curindex)
                    gggint = SetRect(.全範囲, -画幅, -画高, 全画幅, 全画高)
                    .枠幅実寸 = Math.Max(3, (画幅 + 画高) * 枠幅実寸用の倍数)
                    .外枠幅実寸 = 外枠幅実寸
                End With
                '-----------------------------------------------------
                '-----------------------------------------------------
                '移動描画用のBMPとRGNを削除と次の全サイズ設定
                gggbol = zz移動描画用のBMPとRGNを削除(curindex)
                '-----------------------------------------------------
                With mSSDT(curindex)
                    .外枠幅実寸 = 外枠幅実寸
                    Select Case cピタ1_コレ2_カナ3
                        Case 1
                            Call frmMain.pスイスイカード型リージョンを作る(0, 画幅, 画高, .枠幅実寸, .Rgn画, .Rgn枠)
                            If .Rgn画 <> 0 Then '2015/10/27   この方式で作られたリージョンの、左上原点は、0, 0, である保証はないので、0, 0, に補正する。
                                gggint = GetRgnBox(.Rgn画, rc)
                                gggint = OffsetRgn(.Rgn画, -rc.lll, -rc.ttt)
                                画幅 = ⅩRect幅(rc)
                                画高 = ⅩRect高(rc)
                            End If
                            If .Rgn枠 <> 0 Then '2015/10/27   この方式で作られたリージョンの、左上原点は、0, 0, である保証はないので、0, 0, に補正する。
                                gggint = GetRgnBox(.Rgn枠, rc)
                                gggint = OffsetRgn(.Rgn枠, -rc.lll, -rc.ttt)
                            End If
                        Case 2
                            .Rgn画 = CreateRectRgn(0, 0, 画幅, 画高)
                            .Rgn枠 = 0
                        Case 3
                            gggbol = gmアプリ固有クラス.aaスイスイ_ショーカード_イメージ操作(350, frmMain.pスイスイカードイメージ, False, 0, 0, 0, 0, Brush四本, .外枠幅実寸, .枠幅実寸, 画幅, 画高, .Rgn画, .Rgn枠, 0)
                    End Select
                    '-----------------------------------------------------
                    'リージョンと全範囲RECTと枠幅実寸を再設定
                    gggint = SetRect(.全範囲, -画幅, -画高, 全画幅, 全画高)
                    .枠幅実寸 = Math.Max(3, (画幅 + 画高) * 枠幅実寸用の倍数)
                End With
                '-----------------------------------------------------
                Select Case cピタ1_コレ2_カナ3
                    Case 1, 2 : 画rctを設定する = True
                    Case Else : 画rctを設定する = False
                End Select
                '-----------------------------------------------------
                '移動描画用の画像をコピー作成し座標配列データーを作る
                '-----------------------------------------------------
                If HDCghDC2 <> 0 Then
                    With mSSDT(curindex)
                        If 画rctを設定する Then
                            xx = (全画幅 - 画幅) * Rnd() : yy = (全画高 - 画高) * Rnd() : gggint = SetRect(.画rct, xx, yy, xx + 画幅, yy + 画高)
                        End If
                        '-----------------------------------------------------
                        '移動描画用の転写元画像を作成
                        If .bmp <> 0 Then
                            gggint = DeleteObject(.bmp) : .bmp = 0
                        End If
                        '-----------------------------------------------------
                        If .Rgn画 <> 0 Then
                            gggint = GetRgnBox(.Rgn画, rc)
                            xx = ⅩRect幅(rc) : yy = ⅩRect高(rc)
                            '-----------------------------------------------------
                            '*************************************************************************************************************************************************************************************
                            '2022/0705 特記事項　
                            'カードや背景の切り替えに時間がかかるのは、BitMap 800 枚の作成が原因ではない。
                            'フラフラモードのための、三角関数計算のためである。フラフラモードを停止すると、切り替えは1秒程度になる。
                            '*************************************************************************************************************************************************************************************
                            ''-----------------------------------------------------
                            ''2022/07/05 カードサイズの最大値の検査コード
                            'mmmBmpMakeCount = mmmBmpMakeCount + 1
                            'If xx > mmmChkMaxWD Then
                            '    mmmChkMaxWD = xx : qqqqq(Format(mmmBmpMakeCount, "00000") + " mmmChkMaxWD = " + CStr(mmmChkMaxWD))
                            'End If
                            '-----------------------------------------------------
                            n = ⅩBmpMakeMaskBackColorSet(HDCghDC2, xx, yy)
                            If n <> 0 Then
                                .bmp = n : .bmpWD = xx : .bmpHT = yy
                                gggint = ⅩBmpDrawMakeMask(HDCghDC2, .bmp, .Rgn画, 0, 0, True)
                                '-----------------------------------------------------
                                '最初の描画時にだけ、オフセットする。
                                gggint = OffsetRgn(.Rgn画, .bmpWD, 0)
                                If .Rgn枠 <> 0 Then gggint = OffsetRgn(.Rgn枠, .bmpWD, 0)
                                '最初の描画時にだけ、オフセットする。
                                '-----------------------------------------------------
                                If cピタ1_コレ2_カナ3 = 3 Then
                                    '2022/10/25 ghDC1 と ghDC2　を使用している
                                    gggbol = gmアプリ固有クラス.aaスイスイ_ショーカード_イメージ操作(500, frmMain.pスイスイカードイメージ, False, 0, 0, 0, 0, Brush四本, .外枠幅実寸, .枠幅実寸, 0, 0, .Rgn画, .Rgn枠, .bmp)
                                Else
                                    Dim BRSH As Integer = CreateSolidBrush(IIf(スイスイ枠の色はランダム, Ⅹ色RndColor(), pスイスイカード枠の色(2)))
                                    Dim BRSH外枠 As Integer = CreateSolidBrush(pスイスイカード枠の色(1))
                                    Dim ret As Boolean = ⅩBmpDrawStretchBlt(ghDC1, .bmp, .Rgn画, .Rgn枠, .bmpWD, 0, .bmpWD, .bmpHT, HDCghDC2, .画rct.lll, .画rct.ttt, .bmpWD, .bmpHT, BRSH, .枠幅実寸, BRSH外枠, .外枠幅実寸)
                                    If BRSH <> 0 Then gggint = DeleteObject(BRSH)
                                    If BRSH外枠 <> 0 Then gggint = DeleteObject(BRSH外枠)
                                    If ret = False Then
                                        MsgBox("zz新しい移動描画のデーターを作る() でエラーが発生。" & gggCR2 & "このアプリケーションを終了してください。")
                                    End If
                                End If
                            Else
                                Debug.Print("移動描画用BMPの作成に失敗  " & CStr(xx) & ", " & CStr(yy))
                                '2021/05/02 add
                                'MsgBox("移動描画用BMPの作成に失敗しました。")
                                '********************************************************************************
                                m移動描画用BMPの作成エラー = True
                                Exit For
                                '********************************************************************************
                            End If
                        End If
                        .カード再作成 = False
                    End With
                End If
                '-----------------------------------------------------
            End If
            '********************************************************************************
            '********************************************************************************
            '移動座標の配列データーを作る
            '********************************************************************************
            '********************************************************************************
            With mSSDT(curindex)
                bai = IIf(スイスイフラフラモード, 0.2, 0.4) * スピード倍数
                PichX = Math.Max(0.1, bai * (1 + Rnd()) * スイスイスピード * 全画幅 / 4000)
                PichY = Math.Max(0.1, bai * (1 + Rnd()) * スイスイスピード * 全画高 / 4000)
                '-----------------------------------------------------
                If Rnd() < 0.5 Then PichX = -PichX
                If Rnd() < 0.5 Then PichY = -PichY
                '-----------------------------------------------------
                If Rnd() > 0.5 Then 'x 方向優先で全体の位置を決める
                    xx = Rnd() * ⅩRect幅(.全範囲) \ 2
                    If PichX > 0 Then StartX = .全範囲.lll + xx Else StartX = .全範囲.rrr - xx
                    If PichY > 0 Then StartY = .全範囲.ttt Else StartY = .全範囲.bbb
                Else
                    yy = Rnd() * ⅩRect高(.全範囲) \ 2
                    If PichY > 0 Then StartY = .全範囲.ttt + yy Else StartY = .全範囲.bbb - yy
                    If PichX > 0 Then StartX = .全範囲.lll Else StartX = .全範囲.rrr
                End If
                mmmm = 10 + Math.Max(ⅩRect幅(.全範囲) / System.Math.Abs(PichX), ⅩRect高(.全範囲) / System.Math.Abs(PichY))
                'If mmmm > 10000 Then qqqqq(CStr(bai))
                'chkmmmmmm = chkmmmmmm + 1 : If chkmmmmmm Mod 50 = 0 Then qqqqq(CStr(mmmm))
                '-----------------------------------------------------
                '2020/05/30 add new  ズームモードでサイズが大きい場合に、画面内で消えるエラーの対策
                If ズームモード <> 1 Then
                    mmmm = mmmm * 1.1
                    If StartX < 0 Then StartX = StartX - .bmpWD Else StartX = StartX + .bmpWD
                    If StartY < 0 Then StartY = StartY - .bmpHT Else StartY = StartY + .bmpHT
                End If
                '-----------------------------------------------------
                '2015/10/17 add new
                If スイスイフラフラモード Then
                    mmmm = mmmm * 1.3 'フラフラさせる場合は、描画範囲を拡大する
                End If
                ReDim .PostXY(mmmm)
                .PostXY(1).X = StartX : .PostXY(1).Y = StartY
                '-----------------------------------------------------
                For a = 2 To mmmm
                    n = a - 1 : .PostXY(a).X = StartX + CInt(PichX * n) : .PostXY(a).Y = StartY + CInt(PichY * n)
                Next
                If a > mmmm Then a = mmmm
                ReDim Preserve .PostXY(a)
                .PostXYmax = UBound(.PostXY)
                'qqqqq(CStr(a) + "  " + CStr(PichX))
                '---------------------------------------------------------------
                '2021/04/30 new add
                gggint = GMCOMⅩユラユラデーター処理_05_to_15(1, .ユラユラ, .PostXYmax, 0, 0, 0, 0, 0, 全画幅, 全画高, 0.2, 0.4, 2)
                '---------------------------------------------------------------
                '-----------------------------------------------------
                '直線をサイン曲線に変換
                '-----------------------------------------------------
                If スイスイフラフラモード Then
                    '---------------------------------------------------------------
                    '.PostXY()              は　配列の ( 1 ～ UBound ) が有効であるとする
                    '最大全長             は  使用するウインドウの　対角線サイズのピクセル値
                    '波の数　               は              min波の数       ～  max波の数         の間に補正される
                    '波の高さ半径　         は  直線全長の  min波の高さ半径 ～  max波の高さ半径　 の間に補正される
                    'ランダムサイズに設定　 を  指定すれば、この関数が呼び出されるごとに、異なった割合で、波の数／波の高さ半径を設定する。
                    '---------------------------------------------------------------
                    bai波の数 = Ⅹ数値範囲Sng(min波の数, max波の数, IIf(ランダムサイズに設定, std波の数 + ((max波の数 - min波の数) * (Rnd() - 0.5)), std波の数))
                    'qqqqq CStr(bai波の数)
                    bai波の高さ半径 = Ⅹ数値範囲Sng(min波の高さ半径, max波の高さ半径, IIf(ランダムサイズに設定, std波の高さ半径 + ((max波の高さ半径 - min波の高さ半径) * (Rnd() - 0.5)), std波の高さ半径))
                    'qqqqq CStr(bai波の高さ半径 * 100)
                    '---------------------------------------------------------------
                    mmmm = .PostXYmax
                    If mmmm > 10 Then
                        xx = (.PostXY(mmmm).X - .PostXY(1).X)
                        yy = (.PostXY(mmmm).Y - .PostXY(1).Y)
                        全長 = System.Math.Sqrt(xx * xx + yy * yy)
                        bai波の高さ半径 = (全長 * bai波の高さ半径) * (全長 / 最大全長)
                        radone = (6.28 * bai波の数) / mmmm
                        aaa = System.Math.Abs(.PostXY(mmmm).X - .PostXY(1).X)
                        bbb = System.Math.Abs(.PostXY(mmmm).Y - .PostXY(1).Y)
                        ccc = System.Math.Sqrt(aaa * aaa + bbb * bbb)
                        右上がり = .PostXY(mmmm).X >= .PostXY(1).X And .PostXY(1).Y >= .PostXY(mmmm).Y
                        右上がり = 右上がり Or (.PostXY(mmmm).X < .PostXY(1).X And .PostXY(1).Y < .PostXY(mmmm).Y)
                        For a = 1 To mmmm
                            n = System.Math.Sin(radone * a) * bai波の高さ半径
                            If 右上がり Then
                                .PostXY(a).X = .PostXY(a).X + (n * bbb / ccc) : .PostXY(a).Y = .PostXY(a).Y + (n * aaa / ccc)
                            Else
                                .PostXY(a).X = .PostXY(a).X - (n * bbb / ccc) : .PostXY(a).Y = .PostXY(a).Y + (n * aaa / ccc)
                            End If
                        Next
                    End If
                End If
                '-----------------------------------------------------
                If 最初のデーター作成 Then
                    .PostXYIDX = .PostXYmax * Ⅹ数値範囲Sng(0.1, 0.9, Rnd())
                Else
                    .PostXYIDX = 1
                End If
            End With
        Next
        'qqqqq("zz新しいデーター curindex = " + CStr(curindex))
        '********************************************************************************
        Return (m移動描画用BMPの作成エラー = False)
        '********************************************************************************
        '********************************************************************************
        '********************************************************************************
        '********************************************************************************
        '********************************************************************************
画像の変更だけ_実行:
        '-----------------------------------------------------
        '2023/06/19  ダメ　頻繁にストップする　画像の切り替えと枚数の変化が同時に発生した場合に．．．
        'Static mSSDT_前回の枚数 As Integer
        'Dim mmmmm As Integer = UBound(mSSDT)
        'If mSSDT_前回の枚数 <> 0 And mSSDT_前回の枚数 <> mmmmm Then
        '    Return False
        'End If
        'mSSDT_前回の枚数 = mmmmm
        '2023/06/19  ダメ　頻繁にストップする　画像の切り替えと枚数の変化が同時に発生した場合に．．．
        '-----------------------------------------------------
        Try
            For curindex = stt To stp
                With mSSDT(curindex)
                    '-----------------------------------------------------
                    '最初の描画時に、オフセットしたままになっている。
                    'gggint = OffsetRgn(.Rgn画, .bmpWD, 0)
                    'If .Rgn枠 <> 0 Then gggint = OffsetRgn(.Rgn枠, .bmpWD, 0)
                    '最初の描画時に、オフセットしたままになっている。
                    '-----------------------------------------------------
                    .外枠幅実寸 = IIf(ズームモード <> 1, 0, 1)
                    If cピタ1_コレ2_カナ3 = 3 Then
                        '2022/10/25 ghDC1 と ghDC2　を使用している
                        'gggbol = gmアプリ固有クラス.aaスイスイ操作(500, False, 0, 0, 0, 0, Brush四本, .外枠幅実寸, .枠幅実寸, 0, 0, .Rgn画, .Rgn枠, .bmp)
                        'かなカナの場合、画像の変更だけでは、何もしないで戻る。
                    Else
                        Dim BRSH00 As Integer = CreateSolidBrush(IIf(スイスイ枠の色はランダム, Ⅹ色RndColor(), pスイスイカード枠の色(2)))
                        Dim BRSH外枠00 As Integer = CreateSolidBrush(pスイスイカード枠の色(1))
                        Dim ret As Boolean = ⅩBmpDrawStretchBlt(ghDC1, .bmp, .Rgn画, .Rgn枠, .bmpWD, 0, .bmpWD, .bmpHT, HDCghDC2, .画rct.lll, .画rct.ttt, .bmpWD, .bmpHT, BRSH00, .枠幅実寸, BRSH外枠00, .外枠幅実寸)
                        If BRSH00 <> 0 Then gggint = DeleteObject(BRSH00)
                        If BRSH外枠00 <> 0 Then gggint = DeleteObject(BRSH外枠00)
                        If ret = False Then
                            MsgBox("zz新しい移動描画のデーターを作る() でエラーが発生。" & gggCR2 & "このアプリケーションを終了してください。")
                        End If
                    End If
                    .カード再作成 = False
                End With
            Next
            Return True
        Catch ex As Exception
            MsgBox(ex.ToString)
            Return False
        End Try
    End Function
    '■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
    Friend Function zzカード再作成フラッグ設定() As Boolean
        Dim a As Integer
        If ppスイスイフラフラ_いずれも停止している Then Return False
        For a = 1 To UBound(mSSDT) : mSSDT(a).カード再作成 = True : Next
    End Function
    '■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
#End Region

#Region "プロパティ　共通"
    '■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
    Friend Function pスイスイカード枚数現在VAL() As Integer
        Return CInt(pスイスイカード枚数_RW(3))
    End Function
    Friend Property pスイスイカード枚数() As Integer
        Get
            Return CInt(pスイスイカード枚数_RW(gcoプロパGet))
        End Get
        Set(ByVal Value As Integer)
            Call pスイスイカード枚数_RW(gcoプロパLet, CStr(Value))
        End Set
    End Property
    Friend Function pスイスイカード枚数_RW(ByRef プロパコマンド As Integer, Optional ByRef s As String = "") As String
        Const PropName As String = "pスイスイカード枚数" : Const 値DEF As Integer = 3 : Static 値 As Integer : Dim 旧値 As Integer : Dim a As Integer
        Const 下 As Integer = 1 : Const 上 As Integer = 4
        旧値 = 値
        Select Case プロパコマンド
            Case gcoプロパ名
                Return PropName
            Case gcoプロパ初期化
                値 = 値DEF
            Case gcoプロパGet
                Return CStr(値)
            Case gcoプロパLet, gcoプロパMenuClick
                値 = Ⅹ数値範囲Int(下, 上, Val(s))
            Case gcoプロパiniWR
                Return ⅩIniデーター文_RW(gcoプロパiniWR, PropName, CStr(値))
            Case gcoプロパiniRD
                値 = Ⅹ数値範囲Int(下, 上, CInt(ⅩIniデーター文_RW(gcoプロパiniRD, PropName, s)))
            Case 3 'from pスイスイカード枚数現在VAL() : 
                Select Case 値 : Case 4 : a = 800 : Case 3 : a = 400 : Case 2 : a = 200 : Case Else : a = 100 : End Select
                Return CStr(a)
        End Select
        Select Case プロパコマンド
            Case gcoプロパ初期化, gcoプロパLet, gcoプロパiniRD, gcoプロパMenuClick
                Try
                    If スイスイユラユラ設定Dlg IsNot Nothing Then Call スイスイユラユラ設定Dlg.aaBtnOptStateSet(PropName)
                Finally : End Try
        End Select
        If (ppスイスイ実行中 Or ppスイスイandユラユラ実行中) And 旧値 <> 値 Then  'If (gmスイスイユラユラ実行中 = 1 Or gmスイスイユラユラ実行中 = 3) And 旧値 <> 値 Then
            Select Case プロパコマンド
                Case gcoプロパMenuClick, gcoプロパLet
                    gmスイスイ再スタート原因 = gc変更pスイスイカード枚数
            End Select
        End If
        Return CStr(値)
    End Function
    '■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
    Friend Property pスイスイズームモードDo() As Integer
        Get
            Return CInt(pスイスイズームモードDo_RW(gcoプロパGet))
        End Get
        Set(ByVal Value As Integer)
            Call pスイスイズームモードDo_RW(gcoプロパLet, CStr(Value))
        End Set
    End Property
    Friend Function pスイスイズームモードDo_RW(ByRef プロパコマンド As Integer, Optional ByRef s As String = "") As String
        Const PropName As String = "pスイスイズームモードDo" : Const 値DEF As Integer = 2 : Static 値 As Integer : Dim 旧値 As Integer
        Const 下 As Integer = 1 : Const 上 As Integer = 3
        旧値 = 値
        Select Case プロパコマンド
            Case gcoプロパ名
                Return PropName
            Case gcoプロパ初期化
                値 = 値DEF
            Case gcoプロパGet
                Return CStr(値)
            Case gcoプロパLet, gcoプロパMenuClick
                値 = Ⅹ数値範囲Int(下, 上, Val(s))
            Case gcoプロパiniWR
                Return ⅩIniデーター文_RW(gcoプロパiniWR, PropName, CStr(値))
            Case gcoプロパiniRD
                値 = Ⅹ数値範囲Int(下, 上, CInt(ⅩIniデーター文_RW(gcoプロパiniRD, PropName, s)))
        End Select
        Select Case プロパコマンド
            Case gcoプロパ初期化, gcoプロパLet, gcoプロパiniRD, gcoプロパMenuClick
                Try
                    If スイスイユラユラ設定Dlg IsNot Nothing Then Call スイスイユラユラ設定Dlg.aaBtnOptStateSet(PropName)
                Finally : End Try
        End Select
        If (ppスイスイ実行中 Or ppスイスイandユラユラ実行中) And 旧値 <> 値 Then  'If (gmスイスイユラユラ実行中 = 1 Or gmスイスイユラユラ実行中 = 3) And 旧値 <> 値 Then
            Select Case プロパコマンド : Case gcoプロパMenuClick, gcoプロパLet : gggint = zzカード再作成フラッグ設定() : End Select
        End If
        Return CStr(値)
    End Function
    '■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
    Friend Property pスイスイ大中小モードListBoxIndex() As Integer
        Get
            Return IIf(CBool(pスイスイ大中小モード_RW(gcoプロパGet)), 0, 1)
        End Get
        Set(ByVal Value As Integer)
            Call pスイスイ大中小モード_RW(gcoプロパLet, CStr(IIf(Value = 0, True, False)))
        End Set
    End Property
    Friend Property pスイスイ大中小モード() As Boolean
        Get
            Return CBool(pスイスイ大中小モード_RW(gcoプロパGet))
        End Get
        Set(ByVal Value As Boolean)
            Call pスイスイ大中小モード_RW(gcoプロパLet, CStr(Value))
        End Set
    End Property
    Friend Function pスイスイ大中小モード_RW(ByRef プロパコマンド As Integer, Optional ByRef s As String = "") As String
        Const PropName As String = "pスイスイ大中小モード" : Const 値DEF As Boolean = True : Static 値 As Boolean : Dim 旧値 As Boolean
        Return pスイスイ_RW_COM_BOOL(PropName, 値DEF, 値, 旧値, プロパコマンド, s, True)
    End Function
    '■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
    Friend Property pスイスイフラフラモードListBoxIndex() As Integer
        Get
            Return IIf(CBool(pスイスイフラフラモード_RW(gcoプロパGet)), 0, 1)
        End Get
        Set(ByVal Value As Integer)
            Call pスイスイフラフラモード_RW(gcoプロパLet, CStr(IIf(Value = 0, True, False)))
        End Set
    End Property
    Friend Property pスイスイフラフラモード() As Boolean
        Get
            Return CBool(pスイスイフラフラモード_RW(gcoプロパGet))
        End Get
        Set(ByVal Value As Boolean)
            Call pスイスイフラフラモード_RW(gcoプロパLet, CStr(Value))
        End Set
    End Property
    Friend Function pスイスイフラフラモード_RW(ByRef プロパコマンド As Integer, Optional ByRef s As String = "") As String
        Const PropName As String = "pスイスイフラフラモード" : Const 値DEF As Boolean = True : Static 値 As Boolean : Dim 旧値 As Boolean
        Return pスイスイ_RW_COM_BOOL(PropName, 値DEF, 値, 旧値, プロパコマンド, s, True)
    End Function
    '■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
    Friend Property pスイスイ枠の色はランダム() As Boolean
        Get
            Return CBool(pスイスイ枠の色はランダム_RW(gcoプロパGet))
        End Get
        Set(ByVal Value As Boolean)
            Call pスイスイ枠の色はランダム_RW(gcoプロパLet, CStr(Value))
        End Set
    End Property
    Friend Function pスイスイ枠の色はランダム_RW(ByRef プロパコマンド As Integer, Optional ByRef s As String = "") As String
        Const PropName As String = "pスイスイ枠の色はランダム" : Const 値DEF As Boolean = True : Static 値 As Boolean : Dim 旧値 As Boolean
        Return pスイスイ_RW_COM_BOOL(PropName, 値DEF, 値, 旧値, プロパコマンド, s, False)
    End Function
    '■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
    Private Function pスイスイ_RW_COM_BOOL(ByRef PropName As String, ByRef 値DEF As Boolean, ByRef 値 As Boolean, ByRef 旧値 As Boolean, ByRef プロパコマンド As Integer, ByRef s As String, ByRef カードループ停止原因設定 As Boolean) As String
        旧値 = 値
        Select Case プロパコマンド
            Case gcoプロパ名
                Return PropName
            Case gcoプロパ初期化 : 値 = 値DEF
            Case gcoプロパGet : Return CStr(値)
            Case gcoプロパLet : 値 = CBool(s)
            Case gcoプロパMenuClick : 値 = Not 値
            Case gcoプロパiniWR : Return ⅩIniデーター文_RW(gcoプロパiniWR, PropName, CStr(値))
            Case gcoプロパiniRD : 値 = CBool(ⅩIniデーター文_RW(gcoプロパiniRD, PropName, s))
        End Select
        Select Case プロパコマンド
            Case gcoプロパ初期化, gcoプロパLet, gcoプロパiniRD, gcoプロパMenuClick
                Try
                    If スイスイユラユラ設定Dlg IsNot Nothing Then Call スイスイユラユラ設定Dlg.aaBtnOptStateSet(PropName)
                Catch
                End Try
        End Select
        If (ppスイスイ実行中 Or ppスイスイandユラユラ実行中) And 旧値 <> 値 Then  'If (gmスイスイユラユラ実行中 = 1 Or gmスイスイユラユラ実行中 = 3) And 旧値 <> 値 Then
            Select Case プロパコマンド : Case gcoプロパMenuClick, gcoプロパLet : gggint = zzカード再作成フラッグ設定() : End Select
        End If
        Return CStr(値)
    End Function
    '■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
    Friend Property pスイスイ背景画像明るさListIndex_0_5() As Integer
        Get
            Return CInt(pスイスイ背景画像明るさ_RW(13895))
        End Get
        Set(ByVal value As Integer)
            Call pスイスイ背景画像明るさ_RW(13889, CStr(value))
        End Set
    End Property
    Friend Property pスイスイ背景画像明るさ() As Single
        Get
            Return CSng(pスイスイ背景画像明るさ_RW(gcoプロパGet))
        End Get
        Set(ByVal Value As Single)
            Call pスイスイ背景画像明るさ_RW(gcoプロパLet, CStr(Value))
        End Set
    End Property
    Friend Function pスイスイ背景画像明るさ_RW(ByRef プロパコマンド As Integer, Optional ByRef s As String = "") As String
        Const PropName As String = "pスイスイ背景画像明るさ" : Const 値DEF As Single = 1.2 : Static 値 As Single : Dim 旧値 As Single : Dim a As Integer
        旧値 = 値
        Select Case プロパコマンド
            Case gcoプロパ名
                Return PropName
            Case gcoプロパ初期化
                値 = 値DEF
            Case gcoプロパGet
                Return CStr(値)
            Case gcoプロパLet
                値 = Math.Max(0.6, Math.Min(1.6, Val(s)))   '値 = Ⅹ数値大小範囲Single(0.6, 1.6, Val(s))
            Case gcoプロパMenuClick
                Call pスイスイ背景画像明るさ_RW(gcoプロパLet, s)
            Case gcoプロパiniWR
                Return ⅩIniデーター文_RW(gcoプロパiniWR, PropName, CStr(値))
            Case gcoプロパiniRD
                値 = Math.Max(0.6, Math.Min(1.6, CSng(ⅩIniデーター文_RW(gcoプロパiniRD, PropName, s))))

            Case 13895 'Get pスイスイ背景画像明るさListIndex() :
                Select Case 値 : Case Is <= 0.6 : a = 0 : Case Is <= 0.8 : a = 1 : Case Is <= 1.0 : a = 2 : Case Is <= 1.2 : a = 3 : Case Is <= 1.4 : a = 4 : Case Else : a = 5 : End Select
                Return CStr(a)
            Case 13889 'Let pスイスイ背景画像明るさListIndex()
                a = Ⅹ数値範囲Int(0, 5, Val(s))
                Select Case a : Case Is <= 0 : 値 = 0.6 : Case 1 : 値 = 0.8 : Case 2 : 値 = 1.0 : Case 3 : 値 = 1.2 : Case 4 : 値 = 1.4 : Case Else : 値 = 1.6 : End Select
                If 旧値 <> 値 Then
                    プロパコマンド = gcoプロパLet '13889 = gcoプロパLet 代入
                End If
        End Select
        Select Case プロパコマンド
            Case gcoプロパ初期化, gcoプロパLet, gcoプロパiniRD
                Try
                    If スイスイユラユラ設定Dlg IsNot Nothing Then Call スイスイユラユラ設定Dlg.aaBtnOptStateSet(PropName)
                    If ppスイスイフラフラ_いずれかあるいは両方_を実行中 Then  'If (gmスイスイユラユラ実行中 <> 0) Then
                        gmスイスイ再スタート原因 = gc変更pスイスイ背景画像明るさ
                        gmスイスイ画像を再設定すべし = True
                    End If
                Catch : End Try
        End Select
        Return CStr(値)
    End Function
    '■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
    Friend Function pスイスイ背景画像を表示_By_CurListBoxIndex(ByVal CurListBoxIndex As Integer) As Boolean
        Return (CurListBoxIndex = 0)
    End Function
    Friend Property pスイスイ背景画像を表示ListBoxIndex() As Integer
        Get
            Return IIf(CBool(pスイスイ背景画像を表示_RW(gcoプロパGet)), 0, 1)
        End Get
        Set(ByVal Value As Integer)
            Dim bol As Boolean = IIf(Value = 0, True, False)
            Call pスイスイ背景画像を表示_RW(gcoプロパLet, CStr(bol))
            gggbol = gAppEventMaker.MakeEventスイスイユラユラ画像表示ONOFF(bol)
        End Set
    End Property
    Friend Property pスイスイ背景画像を表示() As Boolean
        Get
            Return CBool(pスイスイ背景画像を表示_RW(gcoプロパGet))
        End Get
        Set(ByVal Value As Boolean)
            Call pスイスイ背景画像を表示_RW(gcoプロパLet, CStr(Value))
            gggbol = gAppEventMaker.MakeEventスイスイユラユラ画像表示ONOFF(Value)
        End Set
    End Property
    Friend Function pスイスイ背景画像を表示_RW(ByRef プロパコマンド As Integer, Optional ByRef s As String = "") As String
        Const PropName As String = "pスイスイ背景画像を表示" : Const 値DEF As Boolean = True : Static 値 As Boolean : Dim 旧値 As Boolean
        Dim リタン As String = pスイスイ_RW_COM_BOOL(PropName, 値DEF, 値, 旧値, プロパコマンド, s, False)
        Return リタン
    End Function
    '■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
    Friend Function pスイスイ背景画像リストボックス操作(ByRef lst As ListBox) As Boolean
        If lst Is Nothing Then Return False
        Dim a, m As Integer, sss() As String = {""}, w As String
        w = pスイスイ背景画像の切り替えピッチ_RW(32698, "")
        m = Ⅹ文をカットして配列にする(w, Right(w, 1), sss, False)
        With lst.Items
            .Clear() : For a = 1 To m : .Add(sss(a)) : Next
        End With
        'qqqqq("pスイスイ背景画像リストボックス操作(1) Done")
        Return True
    End Function
    Friend Function pスイスイ背景画像の切り替え_タイムカウントオーバー() As Boolean
        Return CBool(pスイスイ背景画像の切り替えピッチ_RW(67021))
    End Function
    Friend Function pスイスイ背景画像の自動切り替え_ChkStart_On_AppStart() As Boolean
        Call pスイスイ背景画像の切り替えピッチ_RW(78950)
        Return True
    End Function
    Friend Function pスイスイ背景画像の切り替え_次の画像に_強制的に() As Boolean
        pスイスイ背景画像の切り替え_カレントカウント = 10000000
        Call DlgFileスイスイ用.tim切り替えタイマー_Tick(Nothing, Nothing)
        Return True
    End Function
    Friend Property pスイスイ背景画像の切り替え_カレントカウント_満期() As Boolean
        Get
            Return CBool(pスイスイ背景画像の切り替えピッチ_RW(20050, ""))
        End Get
        Set(ByVal Value As Boolean)
            Call pスイスイ背景画像の切り替えピッチ_RW(200100, CStr(Value))
        End Set
    End Property
    Friend Property pスイスイ背景画像の切り替え_カレントカウント() As Integer
        Get
            Return CInt(pスイスイ背景画像の切り替えピッチ_RW(123400, ""))
        End Get
        Set(ByVal Value As Integer)
            Call pスイスイ背景画像の切り替えピッチ_RW(123500, CStr(Value))
        End Set
    End Property
    Friend Property pスイスイ背景画像の切り替えピッチMenuIndex() As Integer
        Get
            Return CInt(pスイスイ背景画像の切り替えピッチ_RW(13895))
        End Get
        Set(ByVal Value As Integer)
            Call pスイスイ背景画像の切り替えピッチ_RW(13889, CStr(Value))
        End Set
    End Property
    Friend Property pスイスイ背景画像の切り替えピッチ() As Integer
        Get
            Return CInt(pスイスイ背景画像の切り替えピッチ_RW(gcoプロパGet))
        End Get
        Set(ByVal Value As Integer)
            Call pスイスイ背景画像の切り替えピッチ_RW(gcoプロパLet, CStr(Value))
        End Set
    End Property
    Friend Function pスイスイ背景画像の切り替えピッチ_RW(ByRef プロパコマンド As Integer, Optional ByRef s As String = "") As String
        Const PropName As String = "pスイスイ背景画像の切り替えピッチ" : Const 値DEF As Integer = 60 : Const 値DEF無し間隔 As Integer = 100000 : Static 値 As Integer : Dim 旧値 As Integer
        Const 下 As Integer = 1 : Const 上 As Integer = 6 : Const cut As String = ","
        '--------------------------------------------------------------------------------------------
        Static 切替カウント秒数現在 As Integer = 0
        '--------------------------------------------------------------------------------------------
        Dim a As Integer
        旧値 = 値
        Select Case プロパコマンド
            Case gcoプロパ名 : Return PropName
            Case gcoプロパ初期化 : 値 = 値DEF
            Case gcoプロパGet : Return CStr(値)
            Case gcoプロパLet, gcoプロパMenuClick 'Set By Val(s) : 
                Select Case Val(s) : Case Is <= 5 : 値 = 5 : Case Is <= 10 : 値 = 10 : Case Is <= 20 : 値 = 20 : Case Is <= 60 : 値 = 60 : Case Is <= 180 : 値 = 180 : Case Else : 値 = 値DEF無し間隔 : End Select

            Case gcoプロパiniWR
                Return ⅩIniデーター文_RW(gcoプロパiniWR, PropName, CStr(値))
            Case gcoプロパiniRD
                a = Ⅹ数値範囲Int(5, 100000, CInt(ⅩIniデーター文_RW(gcoプロパiniRD, PropName, s)))
                Select Case a : Case Is <= 5 : 値 = 5 : Case Is <= 10 : 値 = 10 : Case Is <= 20 : 値 = 20 : Case Is <= 60 : 値 = 60 : Case Is <= 180 : 値 = 180 : Case Else : 値 = 値DEF無し間隔 : End Select

            Case 78950 'pタイマーでの画像自動切り替え_ChkStart_On_AppStart
                'no op timer on IF ....
                '-----------------------------------------------------
            Case 123400 'GET   pスイスイ背景画像の切り替え_カレントカウント
                Return CStr(切替カウント秒数現在)
            Case 123500 'SET   pスイスイ背景画像の切り替え_カレントカウント
                切替カウント秒数現在 = CInt(s)
                '-----------------------------------------------------
            Case 20050  'GET   pスイスイ背景画像の切り替え_カレントカウント_満期() As Boolean
                切替カウント秒数現在 = 切替カウント秒数現在 + 1
                Dim bol As Boolean = (切替カウント秒数現在 >= 値)
                If bol Then 切替カウント秒数現在 = 0
                Return CStr(bol)
            Case 200100 'SET   pスイスイ背景画像の切り替え_カレントカウント_満期() As Boolean
                切替カウント秒数現在 = 値 + 10
                '-----------------------------------------------------
            Case 13895 'Get pスイスイ背景画像の切り替えピッチMenuIndex() :
                Select Case Val(CStr(値)) : Case Is <= 5 : a = 1 : Case Is <= 10 : a = 2 : Case Is <= 20 : a = 3 : Case Is <= 60 : a = 4 : Case Is <= 180 : a = 5 : Case Else : a = 6 : End Select
                Return CStr(a)
            Case 13889 'Let pスイスイ背景画像の切り替えピッチMenuIndex()
                a = Ⅹ数値範囲Int(下, 上, Val(s))
                Select Case a : Case Is <= 1 : 値 = 5 : Case 2 : 値 = 10 : Case 3 : 値 = 20 : Case 4 : 値 = 60 : Case 5 : 値 = 180 : Case Else : 値 = 値DEF無し間隔 : End Select
                If 旧値 <> 値 Then
                    プロパコマンド = gcoプロパLet '13889 = gcoプロパLet 代入
                End If
            Case 67021 '
                Return CStr(値 > 1000)
                '-----------------------------------------------------
            Case 32698 '
                Return ("５　　秒" + cut + "１０　秒" + cut + "２０　秒" + cut + "１　　分" + cut + "３　　分" + cut + "切り替えしない" + cut)
        End Select
        Select Case プロパコマンド
            Case gcoプロパ初期化, gcoプロパLet, gcoプロパiniRD, gcoプロパMenuClick  '13889 = gcoプロパLet
                Try
                    If スイスイユラユラ設定Dlg IsNot Nothing Then Call スイスイユラユラ設定Dlg.aaBtnOptStateSet(PropName)
                Finally : End Try
        End Select
        '--------------------------------------------------------------------------------------------
        Select Case プロパコマンド
            Case gcoプロパLet, gcoプロパMenuClick   ', 78950 'ppタイマーでの画像自動切り替え_ChkStart_On_AppStart
                If 旧値 <> 値 Then
                    Dim ret As Boolean = False
                    gggbol = イベントgAppEventMaker.MakeEvent画像切り替えタイマーのオンオフ(gmDlgFileスイスイ用, (値 < 値DEF無し間隔), ret)
                End If
        End Select
        '--------------------------------------------------------------------------------------------
        Return CStr(値)
    End Function
    '■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
    Friend Property pスイスイサイズ() As Integer
        Get
            Return CInt(pスイスイサイズ_RW(gcoプロパGet))
        End Get
        Set(ByVal Value As Integer)
            Call pスイスイサイズ_RW(gcoプロパLet, CStr(Value))
        End Set
    End Property
    Friend Function pスイスイサイズ_RW(ByRef プロパコマンド As Integer, Optional ByRef s As String = "") As String
        Const PropName As String = "pスイスイサイズ" : Const 値DEF As Integer = 3 : Static 値 As Integer : Dim 旧値 As Integer : Const 下 As Integer = 1 : Const 上 As Integer = 5
        Return pスイスイ_RW_COM_INT(PropName, 値DEF, 値, 旧値, 下, 上, プロパコマンド, s, True)
    End Function
    '■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
    Friend Property pスイスイスピード() As Integer
        Get
            Return CInt(pスイスイスピード_RW(gcoプロパGet))
        End Get
        Set(ByVal Value As Integer)
            Call pスイスイスピード_RW(gcoプロパLet, CStr(Value))
        End Set
    End Property
    Friend Function pスイスイスピード_RW(ByRef プロパコマンド As Integer, Optional ByRef s As String = "") As String
        Const PropName As String = "pスイスイスピード" : Const 値DEF As Integer = 3 : Static 値 As Integer : Dim 旧値 As Integer : Const 下 As Integer = 1 : Const 上 As Integer = 5
        Return pスイスイ_RW_COM_INT(PropName, 値DEF, 値, 旧値, 下, 上, プロパコマンド, s, True)
    End Function
    '■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
    Friend Property pスイスイ枠サイズ() As Integer
        Get
            Return CInt(pスイスイ枠サイズ_RW(gcoプロパGet))
        End Get
        Set(ByVal Value As Integer)
            Call pスイスイ枠サイズ_RW(gcoプロパLet, CStr(Value))
        End Set
    End Property
    Friend Function pスイスイ枠サイズ_RW(ByRef プロパコマンド As Integer, Optional ByRef s As String = "") As String
        Const PropName As String = "pスイスイ枠サイズ" : Const 値DEF As Integer = 3 : Static 値 As Integer : Dim 旧値 As Integer : Const 下 As Integer = 1 : Const 上 As Integer = 5
        Return pスイスイ_RW_COM_INT(PropName, 値DEF, 値, 旧値, 下, 上, プロパコマンド, s, True)
    End Function
    '■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
    Private Function pスイスイ_RW_COM_INT(ByRef PropName As String, ByRef 値DEF As Integer, ByRef 値 As Integer, ByRef 旧値 As Integer, ByRef 下 As Integer, ByRef 上 As Integer, _
                                          ByRef プロパコマンド As Integer, ByRef s As String, ByRef カードループ停止原因設定 As Boolean) As String
        旧値 = 値
        Select Case プロパコマンド
            Case gcoプロパ名
                Return PropName
            Case gcoプロパ初期化
                値 = 値DEF
            Case gcoプロパGet
                Return CStr(値)
            Case gcoプロパLet, gcoプロパMenuClick
                値 = Ⅹ数値範囲Int(下, 上, Val(s))
            Case gcoプロパiniWR
                Return ⅩIniデーター文_RW(gcoプロパiniWR, PropName, CStr(値))
            Case gcoプロパiniRD
                値 = Ⅹ数値範囲Int(下, 上, Val(ⅩIniデーター文_RW(gcoプロパiniRD, PropName, s)))
        End Select
        Select Case プロパコマンド
            Case gcoプロパ初期化, gcoプロパLet, gcoプロパiniRD, gcoプロパMenuClick
                Try
                    If スイスイユラユラ設定Dlg IsNot Nothing Then Call スイスイユラユラ設定Dlg.aaBtnOptStateSet(PropName)
                Finally : End Try
        End Select
        If カードループ停止原因設定 Then
            If (ppスイスイ実行中 Or ppスイスイandユラユラ実行中) Then  'If (gmスイスイユラユラ実行中 = 1 Or gmスイスイユラユラ実行中 = 3) Then
                Select Case プロパコマンド
                    Case gcoプロパLet
                        Select Case PropName
                            Case "pスイスイ枠サイズ", "pスイスイサイズ"
                                gggint = zzカード再作成フラッグ設定()
                        End Select
                End Select
            End If
        End If
        Return CStr(値)
    End Function
    '■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
    Friend Property pスイスイカード枠の色(ByVal typIDX As Integer) As Integer
        Get
            Return CInt(pスイスイカード枠の色_RW(gcoプロパGet, typIDX))
        End Get
        Set(ByVal Value As Integer)
            Call pスイスイカード枠の色_RW(gcoプロパLet, typIDX, CStr(Value))
            If typIDX = 2 Then
                If ppスイスイ実行中 Or ppスイスイandユラユラ実行中 Then   ' If (gmスイスイユラユラ実行中 = 1 Or gmスイスイユラユラ実行中 = 3) Then
                    gggint = zzカード再作成フラッグ設定()
                End If
            End If
        End Set
    End Property
    Friend Function pスイスイカード枠の色_RW(ByRef プロパコマンド As Integer, Optional ByVal typIDX As Integer = 0, Optional ByRef s As String = "") As String
        Const PropName As String = "pスイスイカード枠の色" : Const cut As String = "," : Static 規定値() As Integer = {0, &H0&, &HA04000&, &HFF&, &HFF0000&}
        Const stt As Integer = 1 : Const stp As Integer = 4 : Static 値(stp) As Integer
        '--------------------------------------------------------
        Dim typ As Integer = Ⅹ数値範囲Int(stt, stp, Val(typIDX))
        '--------------------------------------------------------
        Select Case プロパコマンド
            Case gcoプロパ名 : Return PropName
                '--------------------------------------------------------
            Case gcoプロパ初期化
                For a As Integer = stt To stp
                    値(a) = 規定値(a)
                Next
                '--------------------------------------------------------
            Case gcoプロパ規定値 : Return CStr(規定値(typ))
            Case gcoプロパGet : Return CStr(値(typ))
            Case gcoプロパLet : 値(typ) = CInt(Ⅹ色の値の検査修正値(Val(s)))
                '--------------------------------------------------------
            Case gcoプロパiniWR
                Dim ww As String = CStr(値(stt)) & cut & CStr(値(stt + 1)) & cut & CStr(値(stt + 2)) & cut & CStr(値(stt + 3)) & cut
                Return ⅩIniデーター文_RW(gcoプロパiniWR, PropName, ww)
                '--------------------------------------------------------
            Case gcoプロパiniRD
                Dim ary() As String = {""}
                Dim m As Integer = Ⅹ文をカットして配列にする(ⅩIniデーター文_RW(gcoプロパiniRD, PropName, s), cut, ary, False)
                If m = stp Then
                    For a As Integer = stt To stp
                        値(a) = CInt(Ⅹ色の値の検査修正値(Val(ary(a))))
                    Next
                End If
        End Select
        Return "0"
    End Function
    '■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
    Friend Property pスイスイ背景の色() As Integer
        Get
            Return CInt(pスイスイ背景の色_RW(gcoプロパGet))
        End Get
        Set(ByVal Value As Integer)
            Call pスイスイ背景の色_RW(gcoプロパLet, CStr(Value))
        End Set
    End Property
    Friend Function pスイスイ背景の色_RW(ByRef プロパコマンド As Integer, Optional ByRef s As String = "") As String
        Const PropName As String = "pスイスイ背景の色" : Const 値DEF As Integer = &HFFBFCF& : Static 値 As Integer
        Select Case プロパコマンド
            Case gcoプロパ名 : Return PropName
            Case gcoプロパ初期化 : 値 = 値DEF
            Case gcoプロパ規定値 : Return CStr(値DEF)
            Case gcoプロパGet : Return CStr(値)
            Case gcoプロパLet : 値 = CInt(Ⅹ色の値の検査修正値(Val(s)))
            Case gcoプロパiniWR : Return ⅩIniデーター文_RW(gcoプロパiniWR, PropName, CStr(値))
            Case gcoプロパiniRD : 値 = CInt(ⅩIniデーター文_RW(gcoプロパiniRD, PropName, s))
        End Select
        Select Case プロパコマンド
            Case gcoプロパLet

        End Select
        Return "0"
    End Function
    '■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
    Friend Property pスイスイを自動実行() As Boolean
        Get
            Return CBool(pスイスイを自動実行_RW(gcoプロパGet))
        End Get
        Set(ByVal Value As Boolean)
            Call pスイスイを自動実行_RW(gcoプロパLet, CStr(Value))
        End Set
    End Property
    Friend Function pスイスイを自動実行_RW(ByRef プロパコマンド As Integer, Optional ByRef s As String = "") As String
        'frmMain のメニューにある
        Const PropName As String = "pスイスイを自動実行" : Const 値DEF As Boolean = True : Static 値 As Boolean
        Static 下, 上 As Integer : Static メヌ() As ToolStripMenuItem
        Select Case プロパコマンド
            Case gcoプロパ名
                Return PropName
            Case gcoプロパ初期化
                値 = 値DEF : Call frmMain.aaメニューオブジェ設定(PropName, メヌ, 下, 上)
            Case gcoプロパGet
                Return CStr(値)
            Case gcoプロパLet
                値 = CBool(s)
            Case gcoプロパMenuClick
                値 = Not 値
            Case gcoプロパiniWR
                Return ⅩIniデーター文_RW(gcoプロパiniWR, PropName, CStr(値))
            Case gcoプロパiniRD
                値 = CBool(ⅩIniデーター文_RW(gcoプロパiniRD, PropName, s))
        End Select
        Select Case プロパコマンド
            Case gcoプロパ初期化, gcoプロパLet, gcoプロパiniRD, gcoプロパMenuClick
                Try
                    メヌ(下).Checked = 値
                Catch : End Try
        End Select
        Return CStr(値)
    End Function
    '■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
#End Region

#Region "プロパティ追加　かなカナ　専用"
    '2022/0623  このプロパ　は　かなカナ　専用
    '2022/0623  このプロパ　は　かなカナ　専用
    Friend Function pスイスイカードイメージの自動切り替え間隔_is_無し間隔() As Boolean
        Return CBool(pスイスイカードイメージの切り替えピッチ_RW(67021))
    End Function
    Friend Function pスイスイカードイメージの自動切り替え_ChkStart_On_AppStart() As Boolean
        Call pスイスイカードイメージの切り替えピッチ_RW(78950)
        Return True
    End Function
    Friend Function pスイスイカードイメージの自動切り替え_次の画像に切り替え() As Boolean
        pスイスイカードイメージの切り替え_カレントカウント = 10000000
        Call DlgFileスイスイ用.tim切り替えタイマー_Tick(Nothing, Nothing)
        Return True
    End Function
    Friend Property pスイスイカードイメージの切り替え_カレントカウント_満期() As Boolean
        Get
            Return CBool(pスイスイカードイメージの切り替えピッチ_RW(20050, ""))
        End Get
        Set(ByVal Value As Boolean)
            Call pスイスイカードイメージの切り替えピッチ_RW(200100, CStr(Value))
        End Set
    End Property
    Friend Property pスイスイカードイメージの切り替え_カレントカウント() As Integer
        Get
            Return CInt(pスイスイカードイメージの切り替えピッチ_RW(123400, ""))
        End Get
        Set(ByVal Value As Integer)
            Call pスイスイカードイメージの切り替えピッチ_RW(123500, CStr(Value))
        End Set
    End Property
    Friend Property pスイスイカードイメージの切り替えピッチMenuIndex() As Integer
        Get
            Return CInt(pスイスイカードイメージの切り替えピッチ_RW(13895))
        End Get
        Set(ByVal Value As Integer)
            Call pスイスイカードイメージの切り替えピッチ_RW(13889, CStr(Value))
        End Set
    End Property
    Friend Property pスイスイカードイメージの切り替えピッチ() As Integer
        Get
            Return CInt(pスイスイカードイメージの切り替えピッチ_RW(gcoプロパGet))
        End Get
        Set(ByVal Value As Integer)
            Call pスイスイカードイメージの切り替えピッチ_RW(gcoプロパLet, CStr(Value))
        End Set
    End Property
    Friend Function pスイスイカードイメージの切り替えピッチ_RW(ByRef プロパコマンド As Integer, Optional ByRef s As String = "") As String
        '2022/0623  このプロパ　は　かなカナ　専用
        '2022/0623  このプロパ　は　かなカナ　専用
        Const PropName As String = "pスイスイカードイメージの切り替えピッチ" : Const 値DEF As Integer = 60 : Const 値DEF無し間隔 As Integer = 100000 : Static 値 As Integer : Dim 旧値 As Integer
        Const 下 As Integer = 1 : Const 上 As Integer = 6
        '--------------------------------------------------------------------------------------------
        Static 切替カウント秒数現在 As Integer = 0
        '--------------------------------------------------------------------------------------------
        Dim a As Integer
        旧値 = 値
        Select Case プロパコマンド
            Case gcoプロパ名
                Return PropName
            Case gcoプロパ初期化
                値 = 値DEF
            Case gcoプロパGet
                Return CStr(値)
            Case gcoプロパLet, gcoプロパMenuClick 'Set By Val(s) : 
                Select Case Val(s) : Case Is <= 5 : 値 = 5 : Case Is <= 10 : 値 = 10 : Case Is <= 20 : 値 = 20 : Case Is <= 60 : 値 = 60 : Case Is <= 180 : 値 = 180 : Case Else : 値 = 値DEF無し間隔 : End Select
                切替カウント秒数現在 = 0 ' if timer on reset 0

            Case gcoプロパiniWR
                Return ⅩIniデーター文_RW(gcoプロパiniWR, PropName, CStr(値))
            Case gcoプロパiniRD
                a = Ⅹ数値範囲Int(5, 100000, CInt(ⅩIniデーター文_RW(gcoプロパiniRD, PropName, s)))
                Select Case a : Case Is <= 5 : 値 = 5 : Case Is <= 10 : 値 = 10 : Case Is <= 20 : 値 = 20 : Case Is <= 60 : 値 = 60 : Case Is <= 180 : 値 = 180 : Case Else : 値 = 値DEF無し間隔 : End Select

            Case 78950 'pタイマーでの画像自動切り替え_ChkStart_On_AppStart
                'no op timer on IF ....
                '-----------------------------------------------------
            Case 123400 'GET   pスイスイカードイメージの切り替え_カレントカウント
                Return CStr(切替カウント秒数現在)
            Case 123500 'SET   pスイスイカードイメージの切り替え_カレントカウント
                切替カウント秒数現在 = CInt(s)
                '-----------------------------------------------------
            Case 20050  'GET   pスイスイカードイメージの切り替え_カレントカウント_満期() As Boolean
                切替カウント秒数現在 = 切替カウント秒数現在 + 1
                Dim bol As Boolean = (切替カウント秒数現在 >= 値)
                If bol Then 切替カウント秒数現在 = 0
                Return CStr(bol)
            Case 200100 'SET   pスイスイカードイメージの切り替え_カレントカウント_満期() As Boolean
                切替カウント秒数現在 = 値 + 10
                '-----------------------------------------------------
            Case 13895 'Get pスイスイカードイメージの切り替えピッチMenuIndex() :
                Select Case Val(CStr(値)) : Case Is <= 5 : a = 1 : Case Is <= 10 : a = 2 : Case Is <= 20 : a = 3 : Case Is <= 60 : a = 4 : Case Is <= 180 : a = 5 : Case Else : a = 6 : End Select
                Return CStr(a)
            Case 13889 'Let pスイスイカードイメージの切り替えピッチMenuIndex()
                a = Ⅹ数値範囲Int(下, 上, Val(s))
                Select Case a : Case Is <= 1 : 値 = 5 : Case 2 : 値 = 10 : Case 3 : 値 = 20 : Case 4 : 値 = 60 : Case 5 : 値 = 180 : Case Else : 値 = 値DEF無し間隔 : End Select
                If 旧値 <> 値 Then
                    プロパコマンド = gcoプロパLet '13889 = gcoプロパLet 代入
                End If
            Case 67021 'pスイスイカードイメージの自動切り替え間隔_is_無し間隔
                Return CStr(値 > 1000)

        End Select
        Select Case プロパコマンド
            Case gcoプロパ初期化, gcoプロパLet, gcoプロパiniRD, gcoプロパMenuClick  '13889 = gcoプロパLet
                Try
                    If スイスイユラユラ設定Dlg IsNot Nothing Then スイスイユラユラ設定Dlg.aaBtnOptStateSet(PropName)
                Finally : End Try
        End Select
        '--------------------------------------------------------------------------------------------
        Select Case プロパコマンド
            Case gcoプロパLet, gcoプロパMenuClick   ', 78950 'ppタイマーでの画像自動切り替え_ChkStart_On_AppStart
                If ppスイスイ実行中 Or ppスイスイandユラユラ実行中 Then   'If (gmスイスイユラユラ実行中 = 1 Or gmスイスイユラユラ実行中 = 3) Then
                    'no op
                End If
        End Select
        '--------------------------------------------------------------------------------------------
        Return CStr(値)
        '2022/0623  このプロパ　は　かなカナ　専用
        '2022/0623  このプロパ　は　かなカナ　専用
    End Function

#End Region

    Friend Function aaプロパティ初期化_INI読出し書込みsub(ByRef プロパコマンド As Integer, ByRef ini配列() As String, ByRef CurIDX As Integer) As Boolean
        Dim AryMax As Integer = UBound(ini配列) : Dim ssss As String, hedend As String = "*********************" + "スイスイデーター" + "*********************"
        Select Case プロパコマンド
            Case gcoプロパ初期化
                Call pスイスイカード枚数_RW(プロパコマンド)
                Call pスイスイズームモードDo_RW(プロパコマンド)
                Call pスイスイ大中小モード_RW(プロパコマンド)
                Call pスイスイフラフラモード_RW(プロパコマンド)
                Call pスイスイ枠の色はランダム_RW(プロパコマンド)
                Call pスイスイ背景画像を表示_RW(プロパコマンド)
                Call pスイスイ背景画像明るさ_RW(プロパコマンド)
                Call pスイスイ背景画像の切り替えピッチ_RW(プロパコマンド)
                Call pスイスイカードイメージの切り替えピッチ_RW(プロパコマンド)
                Call pスイスイサイズ_RW(プロパコマンド)
                Call pスイスイスピード_RW(プロパコマンド)
                Call pスイスイ枠サイズ_RW(プロパコマンド)
                Call pスイスイカード枠の色_RW(プロパコマンド)
                Call pスイスイ背景の色_RW(プロパコマンド)
                Call pスイスイを自動実行_RW(プロパコマンド)
            Case gcoプロパiniRD
                Const ads As String = "="
                Dim Hedpスイスイカード枚数_RW As String = pスイスイカード枚数_RW(gcoプロパ名) + ads '2022/0525  重要　Instr() で検索するので、前方から同じ部分を一部分として持つものでは、混同する可能性がある。"=" を追加する。
                Dim HedpスイスイズームモードDo_RW As String = pスイスイズームモードDo_RW(gcoプロパ名) + ads
                Dim Hedpスイスイ大中小モード_RW As String = pスイスイ大中小モード_RW(gcoプロパ名) + ads
                Dim Hedpスイスイフラフラモード_RW As String = pスイスイフラフラモード_RW(gcoプロパ名) + ads
                Dim Hedpスイスイ枠の色はランダム_RW As String = pスイスイ枠の色はランダム_RW(gcoプロパ名) + ads
                Dim Hedpスイスイ背景画像を表示_RW As String = pスイスイ背景画像を表示_RW(gcoプロパ名) + ads
                Dim Hedpスイスイ背景画像明るさ_RW As String = pスイスイ背景画像明るさ_RW(gcoプロパ名) + ads
                Dim Hedpスイスイ背景画像の切り替えピッチ_RW As String = pスイスイ背景画像の切り替えピッチ_RW(gcoプロパ名) + ads
                Dim Hedpスイスイカードイメージの切り替えピッチ_RW As String = pスイスイカードイメージの切り替えピッチ_RW(gcoプロパ名) + ads
                Dim Hedpスイスイサイズ_RW As String = pスイスイサイズ_RW(gcoプロパ名) + ads
                Dim Hedpスイスイスピード_RW As String = pスイスイスピード_RW(gcoプロパ名) + ads
                Dim Hedpスイスイ枠サイズ_RW As String = pスイスイ枠サイズ_RW(gcoプロパ名) + ads
                Dim Hedpスイスイカード枠の色_RW As String = pスイスイカード枠の色_RW(gcoプロパ名) + ads
                Dim Hedpスイスイ背景の色_RW As String = pスイスイ背景の色_RW(gcoプロパ名) + ads
                Dim Hedpスイスイを自動実行_RW As String = pスイスイを自動実行_RW(gcoプロパ名) + ads
                For CurIDX = 1 To UBound(ini配列)
                    ssss = ini配列(CurIDX)
                    If InStr(ssss, Hedpスイスイカード枚数_RW) = 1 Then
                        Call pスイスイカード枚数_RW(プロパコマンド, ssss)
                    ElseIf InStr(ssss, HedpスイスイズームモードDo_RW) = 1 Then
                        Call pスイスイズームモードDo_RW(プロパコマンド, ssss)
                    ElseIf InStr(ssss, Hedpスイスイ大中小モード_RW) = 1 Then
                        Call pスイスイ大中小モード_RW(プロパコマンド, ssss)
                    ElseIf InStr(ssss, Hedpスイスイフラフラモード_RW) = 1 Then
                        Call pスイスイフラフラモード_RW(プロパコマンド, ssss)
                    ElseIf InStr(ssss, Hedpスイスイ枠の色はランダム_RW) = 1 Then
                        Call pスイスイ枠の色はランダム_RW(プロパコマンド, ssss)
                    ElseIf InStr(ssss, Hedpスイスイ背景画像を表示_RW) = 1 Then
                        Call pスイスイ背景画像を表示_RW(プロパコマンド, ssss)
                    ElseIf InStr(ssss, Hedpスイスイ背景画像明るさ_RW) = 1 Then
                        Call pスイスイ背景画像明るさ_RW(プロパコマンド, ssss)
                    ElseIf InStr(ssss, Hedpスイスイ背景画像の切り替えピッチ_RW) = 1 Then
                        Call pスイスイ背景画像の切り替えピッチ_RW(プロパコマンド, ssss)
                    ElseIf InStr(ssss, Hedpスイスイカードイメージの切り替えピッチ_RW) = 1 Then
                        Call pスイスイカードイメージの切り替えピッチ_RW(プロパコマンド, ssss)
                    ElseIf InStr(ssss, Hedpスイスイサイズ_RW) = 1 Then
                        Call pスイスイサイズ_RW(プロパコマンド, ssss)
                    ElseIf InStr(ssss, Hedpスイスイスピード_RW) = 1 Then
                        Call pスイスイスピード_RW(プロパコマンド, ssss)
                    ElseIf InStr(ssss, Hedpスイスイ枠サイズ_RW) = 1 Then
                        Call pスイスイ枠サイズ_RW(プロパコマンド, ssss)
                    ElseIf InStr(ssss, Hedpスイスイカード枠の色_RW) = 1 Then
                        Call pスイスイカード枠の色_RW(プロパコマンド, 0, ssss)
                    ElseIf InStr(ssss, Hedpスイスイ背景の色_RW) = 1 Then
                        Call pスイスイ背景の色_RW(プロパコマンド, ssss)
                    ElseIf InStr(ssss, Hedpスイスイを自動実行_RW) = 1 Then
                        Call pスイスイを自動実行_RW(プロパコマンド, ssss)
                    End If
                Next
            Case gcoプロパiniWR
                CurIDX = CurIDX + 1 : If CurIDX <= AryMax Then ini配列(CurIDX) = hedend Else Return True
                CurIDX = CurIDX + 1 : If CurIDX <= AryMax Then ini配列(CurIDX) = pスイスイカード枚数_RW(プロパコマンド) Else Return True
                CurIDX = CurIDX + 1 : If CurIDX <= AryMax Then ini配列(CurIDX) = pスイスイズームモードDo_RW(プロパコマンド) Else Return True
                CurIDX = CurIDX + 1 : If CurIDX <= AryMax Then ini配列(CurIDX) = pスイスイ大中小モード_RW(プロパコマンド) Else Return True
                CurIDX = CurIDX + 1 : If CurIDX <= AryMax Then ini配列(CurIDX) = pスイスイフラフラモード_RW(プロパコマンド) Else Return True
                CurIDX = CurIDX + 1 : If CurIDX <= AryMax Then ini配列(CurIDX) = pスイスイ枠の色はランダム_RW(プロパコマンド) Else Return True
                CurIDX = CurIDX + 1 : If CurIDX <= AryMax Then ini配列(CurIDX) = pスイスイ背景画像を表示_RW(プロパコマンド) Else Return True
                CurIDX = CurIDX + 1 : If CurIDX <= AryMax Then ini配列(CurIDX) = pスイスイ背景画像明るさ_RW(プロパコマンド) Else Return True
                CurIDX = CurIDX + 1 : If CurIDX <= AryMax Then ini配列(CurIDX) = pスイスイ背景画像の切り替えピッチ_RW(プロパコマンド) Else Return True
                CurIDX = CurIDX + 1 : If CurIDX <= AryMax Then ini配列(CurIDX) = pスイスイカードイメージの切り替えピッチ_RW(プロパコマンド) Else Return True
                CurIDX = CurIDX + 1 : If CurIDX <= AryMax Then ini配列(CurIDX) = pスイスイサイズ_RW(プロパコマンド) Else Return True
                CurIDX = CurIDX + 1 : If CurIDX <= AryMax Then ini配列(CurIDX) = pスイスイスピード_RW(プロパコマンド) Else Return True
                CurIDX = CurIDX + 1 : If CurIDX <= AryMax Then ini配列(CurIDX) = pスイスイ枠サイズ_RW(プロパコマンド) Else Return True
                CurIDX = CurIDX + 1 : If CurIDX <= AryMax Then ini配列(CurIDX) = pスイスイカード枠の色_RW(プロパコマンド) Else Return True
                CurIDX = CurIDX + 1 : If CurIDX <= AryMax Then ini配列(CurIDX) = pスイスイ背景の色_RW(プロパコマンド) Else Return True
                CurIDX = CurIDX + 1 : If CurIDX <= AryMax Then ini配列(CurIDX) = pスイスイを自動実行_RW(プロパコマンド) Else Return True
                CurIDX = CurIDX + 1 : If CurIDX <= AryMax Then ini配列(CurIDX) = hedend Else Return True
        End Select
        gggbol = DlgFileスイスイ用.aaプロパティ初期化_INI読出し書込みsub(プロパコマンド, ini配列, CurIDX)
        Return True
    End Function

#Region "イベント from DlgFileスイスイ用"

    Private Sub DlgFileスイスイ用_画像ファイルの切替タイマー(ByVal rCurファイル As String, ByVal rNextファイル As String, ByRef wChangeDone As Boolean) Handles DlgFileスイスイ用.画像ファイルの切替タイマー
        wChangeDone = ("" <> zzスイスイ用ファイル新規設定(rNextファイル))
        'qqqqq("DlgFileスイスイ用_スイスイ用画像ファイルの切替タイマー")
        'qqqqq(rCurファイル)
        'qqqqq(rNextファイル)
    End Sub

    Private Sub DlgFileスイスイ用_画像ファイルの切替タイマー一秒ごとの通知(ByRef wIs満期 As Boolean) Handles DlgFileスイスイ用.画像ファイルの切替タイマー一秒ごとの通知
        wIs満期 = pスイスイ背景画像の切り替え_カレントカウント_満期
        'qqqqq("DlgFileスイスイ用_スイスイ用画像ファイルの切替タイマー一秒ごとの通知")
    End Sub

    Private Sub DlgFileスイスイ用_画像ファイルの選択が実行された(ByVal rNewファイル As String, ByRef wChangeDone As Boolean) Handles DlgFileスイスイ用.画像ファイルの選択が実行された
        wChangeDone = ("" <> zzスイスイ用ファイル新規設定(rNewファイル))
        'qqqqq("DlgFileスイスイ用_スイスイ用画像ファイルの選択が実行された")
    End Sub

#End Region

#Region "イベント from スイスイユラユラ設定Dlg"

    Private Sub スイスイユラユラ設定Dlg_スイスイユラユラ設定Dlgの初期化をしてください(ByRef wIsOK As Boolean, ByRef wMe_gmDlgID As Integer) Handles スイスイユラユラ設定Dlg.スイスイユラユラ設定Dlgの初期化をしてください
        wIsOK = True
        wMe_gmDlgID = gmDlgスイスイユラユラ
    End Sub

    Private Sub スイスイユラユラ設定Dlg_他のウインドウが表示あるいは非表示になりました(ByVal rMe_gmDlgID As Integer, ByVal r表示変更ウインドウID As Integer, ByVal r表示True消去False As Boolean, ByRef wRet_rMe_gmDlgIDウインドウを消去しなさい As Boolean) Handles スイスイユラユラ設定Dlg.他のウインドウが表示あるいは非表示になりました
        wRet_rMe_gmDlgIDウインドウを消去しなさい = GMCOM_Dlgs他のウインドウの表示_非表示イベントで_rMe_ウインドウを消去しなさい(rMe_gmDlgID, r表示変更ウインドウID, r表示True消去False)
    End Sub

#End Region

#Region "イベント from イベントgAppEventMaker"

    Private Sub イベントgAppEventMaker_スイスイユラユラ画像表示ONOFF(ByVal r画像表示OnOff As Boolean) Handles イベントgAppEventMaker.スイスイユラユラ画像表示ONOFF
        If ppユラユラ実行中 Or ppスイスイandユラユラ実行中 Then
            If Not r画像表示OnOff Then
                gggbol = aaスイスイとユラユラ実行の開始と停止(2, False)
            Else
                'Call frmMain.ooユラユラ.aa描画の移動一ステップ(True, frmMain)  '2023/05/25 ???????????????????????
            End If
        End If
    End Sub

    Private Sub イベントgAppEventMaker_タイマーのオンオフonスイスイonff(ByRef rEventOwner As Integer, ByRef rTimerオン As Boolean) Handles イベントgAppEventMaker.タイマーのオンオフonスイスイonff
        If rEventOwner = gmDlgFileスイスイ用 Then
            If DlgFileスイスイ用 Is Nothing Then Return
            Dim eee As Boolean = (Not DlgFileスイスイ用.Visible)
            If rTimerオン Then
                eee = eee And (Not pスイスイ背景画像の切り替え_タイムカウントオーバー())
            Else
                eee = False
            End If
            DlgFileスイスイ用.tim切り替えタイマー.Enabled = eee
        Else

        End If
    End Sub

#End Region

End Class



