掲示板

BBS
アイコン設定
投稿者さん使い方
掲示板の主旨に反する投稿は掲載されません。掲載の是非は管理者が判断いたします。予めご了承願います。
K
KoYamaさん (8o4hkr6m)2024/2/14 03:39 (No.95081)削除
0170.月末月初処理(3)。
 新設「/Cmd(177)」で、月末月初に限り「SkipFile.flg(スキップしないフラグファイル)」を生成するコマンドを組込みました。
 実質「CEdCommon::SkipTopProc」で組込みましたが、バッチから、月末月初に、有った方が、エラーが出た場合などに、回復しやすいだろう処理を、行う為に、追加しました。
 まずは、「28.朝一まとめバッチ.bat」と「41.献立・当日パスcsv、自動生成表示.bat」から利用するように、しました。
 「動作環境.ini」が「次月準備処理 = 済」の場合だけ、スキップしない為のフラグファイルとして「SkipFile.flg」を生成するようにしました。
 と言っても、実際には、「Ed.exe」本体を起動した時、初期化で、「動作環境.ini」の内容を全てメモリー中「CEdDtP::BasePath」にLoadしており、その中の「CEdDtP::BasePath」を判定してるだけです。
 そして、毎月月末26日過ぎには、「30.月末次月準備処理.bat」を行っており、これで「動作環境.ini」が「次月準備処理 = 済」となり、「06.月初に1回だけ行う処理.bat」を翌月になって行う迄は、そのままなので、「月末月初処理」として実行出来る訳です。
返信
K
KoYamaさん (8o4hkr6m)2024/2/13 03:41 (No.94977)削除
0169.MyメッセージBox(3)。
 また、「CEdCommon::MyMessageBox」を拡張しました。
 今度は、「nType == 2」の場合として、「CMyBox」クラスの「IDOK」のメッセージ・ハンドラを追加しておき、「OWN_TIMER_72」を追加して、Dialog初期化「CMyBox::OnInitDialog」で、1秒タイマー起動で、「CMyBox::OnOK」を呼び出すようにです。
 それで、毎朝の朝一バッチ「28.朝一まとめバッチ.bat」運用で、下記行から、利用している所の動作が、一々「OK」ボタンを、マウス・クリックしないで、自動的に進められるように、なりました。
 「記」「C:\Utl\EdZ\Ed.exe /Cmd(164) C:\Data\TopMenu\8.毎日\2.日課確認.lnk」。
 他に「3.歩数計記録編集.lnk、5.日月出入干満潮.lnk、6.主要全パス一覧.lnk」も有ります。
 これ実は、以前は「エクスプローラ」起動の行だったのですが、その行を追加する前は、ときどき「エラー停止」する事があり、何か処理が競合するような、ファイルアクセスが有り、事前に、問題の出ないアクセスをしておくと、「エラー停止」しにくい様子だったので、追加した行だったので、その代替行が、「/Cmd(164)」による「ファイル確認」だったのです。
 進歩、進歩、です。
返信
K
KoYamaさん (8o4hkr6m)2024/2/12 03:47 (No.94810)削除
0168.第2クリップボード(2)。
 普通の「クリップボード」は、設定関数が、「CEdCommon::SetToClipboard」で実装してあり、取出し貼付関数が、「CEdCommon::GetFmClipboard」で実装してあります。
 「第2クリップボード」は、設定関数が「CEdCommon::SetToMyClip2」で実装してあり、取出し貼付関数が「CEdCommon::GetFmMyClip2」で実装してあります。
 勿論中で、「MFC」標準関数の「CEdit::Copy」「CEdit::Paste」を使っていますが、ほんど変わりの無いインターフェースで実装してあり、「コピペ」の操作も、前者が「Ctrl+C」と、「Ctrl+V」に対し、後者がCtrl+Alt+N」と「Ctrl+Alt+Shift+N」と、解りやすく、機能も、全く遜色無く、便利に使えます。
 勿論、画像類のコピペに使う事は出来ませんが、リソースにTextファイルを使っている事が、何の問題も無い事に、少しおどろいています。
返信
K
KoYamaさん (8o4hkr6m)2024/2/11 03:42 (No.94593)削除
0167.どこでも「PopUp」(5)。
 「PopUp単語貼付(Ctrl+Alt+Y)」での、単語抽出PopUpを、カーソル行の、前後合計40行に、制限を更新しました。
 「KoYamaDB拡張.txt」のような、大きなText編集で使うと、単語抽出PopUpに時間がかかり過ぎ、使いずらかったのが、すぐPopUpするようになり、便利になりました。
 使えます。
返信
K
KoYamaさん (8o4hkr6m)2024/2/10 03:41 (No.94476)削除
0166.アクセラレータ。
 いよいよ、「アクセラレータ」が足りなくなりそうです。
 「Ctrl」や「Alt」、「Shift」との組み合わせでも、所詮アルファベット26文字、ファンクションキーや、数字、それに英記号類と、やはり限りはあるので、今後、同じような機能や、類似した情況からのシリーズ物など、同一の「アクセラレータ」で対応した方が都合が良いものは、そのように、改善を計って行こうと思います。
 それでも、「Alt+F8」など、多数の場面や、多数の機能に、対応している「アクセラレータ」も有り、これなどのように、「打ち止め」にしたいものも有るので、まあ、所詮は、思い付くままでは、ありますが。
返信
K
KoYamaさん (8o4hkr6m)2024/2/9 03:39 (No.94389)削除
0165.第2クリップボード。
 いつも、「主要フォルダ.txt」と「KoYamaDB拡張.txt」を同時に開いて、これらを編集しながら、色々アイデアを練ったり、設計したり、確認したりしているのですが、これを開いた時に、「KoYamaDB拡張.txt」の「当日サーチ」が機能するので、クリップボードには、その日の日付が設定されています。
 つまり、開く前に、検討していて、見付けた文言、特に「クラス::関数」名などを、すぐに利用出来ない状態で、開きます。
 それが不便で、「第2クリップボード」を組込もうと用意しました。
 文言を範囲指定し、「Ctrl+Alt+N」で、「第2クリップボード」に設定出来ます。
 また、既に開いた、Text子フレームの、任意の編集位置に、「Ctrl+Alt+Shift+N」で貼付けられます。
 リソースとしては、「動作環境.ini」に「第2クリップボード」として設定したフル・パスのTextファイルを使っているので、通常のクリップボードには、何の影響もありません。独自に、機能します。その上で、Textファイルなので、結構大きなファイルの中身そっくりそのままでも、コピペ出来ます。
 実装は、「CEdCommon::SetToMyClip2」「CEdCommon::GetFmMyClip2」で行っています。中では、MFC標準の「CEdit::Copy」「CEdit::Paste」も、使っています。
返信
K
KoYamaさん (8o4hkr6m)2024/2/8 03:46 (No.94291)削除
0164.子フレームOpenエラー。
 通常子フレームを開く場合、関数「CCmdLine::SelOrOpen」から、実行しているのですが、これが、汎用の「CEdCommon::CldFrameOpn」を利用しており、これが、引数のパスによって、「実行」したり、「開いたり」するので、戻値にbool値で、そのどちらかを返していて、Openエラーを起こした場合、「CEdCommon::DspSetClipMes」によって、「下記パスは不正です。開けません。中断します。」と、エラーとなったファイルのフル・パスを、表示しクリップボードに設定するかどうか、確認をしています。
 それで、エラーを起こしたかどうか、上位関数で、判定がしづらく、これを連絡する為に新規変数「CComFlg::m_nOpnErCode」を組込みました。
 それで、Openエラーが発生した場合、「インスタンスを終了します。よろしいですか?」とのメッセージを出し、「はい」なら、インスタンスを終了し、「いいえ」なら、「空」の親フレームだけ開いた状態にしました。
 まあ、エラー中断した場合の、終わり方が、選べるようになっただけの、話ですが。
返信
K
KoYamaさん (8o4hkr6m)2024/2/4 03:25 (No.93629)削除
0163.ドライブ[E][F]専用USBチェック(3)。
 バッチからも「/Cmd(176)」で、「CEdCommon::CheckDriveEF」を利用出来るようにしました。
 バッチからなので、当然、また例の「SkipFile.flg(スキップしない時のフラグファイル)」を、生成して、バッチで判定出来るようにしてあります。
 幸い既に利用している「CEdCommon::CrtSkipFile」「CEdCommon::GetSkipFileFlgPth」も利用出来たので、バグは無く、すぐ作れました。
 が、バッチファイルは、ほとんど全て「E:\E_Bat」直下に配置してあり、ドライブ[C]に作成した、実験バッチからは、正しく動作したのですが、まず、出番は無いようです。
 そのうち、役に立つかも知れません。
 落語の「落ち」のような話でした。
返信
K
KoYamaさん (8o4hkr6m)2024/2/3 03:36 (No.93458)削除
0162.ドライブ[E][F]専用USBチェック(2)。
 sw付きUSBハブを常に使うようになり、USBメモリーを切り忘れたり、接続し間違えたり、する事が、増えました。
 そこで、ショートカット「PopUp」と「KoYamaDB」の入口「CMainFrame::OnOpnManFdrKoYDBEx」を呼び出す前と、「CCmdLine::OpenPath」の中で、「CEdCommon::CheckDriveEF」を利用して、ドライブ[E][F]専用のUSBメモリーが接続されていない場合は、何もせずに中断するように、改善しました。
返信
K
KoYamaさん (8o4hkr6m)2024/2/2 03:45 (No.93304)削除
0161.面白いバグ(2)。
 メッセージマップ「ON_UPDATE_COMMAND_UI(ID_FILE_NEW, OnUpdateFileNew)」を、追加しました。このメッセージ・ハンドラは「CMainFrame::OnUpdateFileNew」です。
 これは、メインフレームメニュー「01.新規作成(N)」の対応コードで、メニューが開く直前に実行されるコードで、通常ここで、このメニュー項目に「チェックマーク」を付けたり、メニュー項目を使用可能にしたり、使用不可能にしたり、します。
 それで、当Myアプリを「/Open_2,8,9,10 C:\Data\その他\メモ\当面の話題.txt」のような起動オプションで起動すると、後半のフル・パスが示すText中、記述されている、複数のフル・パスのうちの、「2,8,9,10」番目のファイルを、一括して開くのですが、この開く動作が完全に完了する迄の間に、新たに手動で、新規Textを開くと、コードが競合して、エラー停止になる。というバグを、長年かかえていたのですが、このバグが、今回解決しました。
 つまり、この一括Openの最初に「CComFlg::m_bOpnCldStr」を「on」にしてあり、最後に「CComFlg::m_bOpnCldEnd」を「on」にしてあって、これらが、共に「off」か、またはともに「on」の場合に限り、「CMainFrame::OnUpdateFileNew」にて「01.新規作成(N)」を利用可能にしたのです。
 これは、随分要約した記述なのですが、つまりは、もっと込み入った事情が多数有り、バグの現象がはっきりした事も、バグの原因がはっきりした事も、対応フラグが2つ有る事も、色々なコード構成と関連が有っての事ですが、つまりは、こういう事です。
返信