We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
文字コードの指定ダイアログでCPのチェックが効かない事が有る
必ず
サクラエディタ v2.4.0.0 64bit dev Alpha Version (GitHash 91aaed7a6454aa4ff04803a086bb119fbf85a620) (GitURL [email protected]:sakura-editor/sakura.git) Compile Info: V_A641916 WPR WIN601/I800/C000/N601 Last Modified: 2019/9/14 00:41:15
The text was updated successfully, but these errors were encountered:
イベントハンドラの途中で Windows API を呼んで、 画面状態を変えてるのが敗因なんじゃないかと思っています。
本来のサクラエディタのダイアログプロシージャの構造は、 基本的にはMFCを模倣した ダイアログデータエクスチェンジ っぽい実装です。 (CDialog::GetData()の使われ方を見たら構造がわかるはず。)
DDXの利点は、データと画面表示の整合性を集中管理できることだと思います。
イベント処理の前に「画面⇒データ」して、 終わったら「データ⇒画面」することで、 データの整合性は保たれます。
「画面⇒データ」が失敗したときに処理を止めるようにすれば、 変なデータ入力に悩まされることもありません。
コード選択ダイアログの他にも、タイプ別設定一覧とプロファイルマネージャが似た感じの構造になっていて、たぶん「問題アリ」です。
DDX風に組むことのデメリットは、 Windows API を使ってコントロールのデータを微調整するような、ゴリゴリ系のプログラムをする必要がなくなることだと思います。実装の傾向を見た感じ、過去の開発者は「あえてゴリゴリ書くのが好き」な人が多かった感じなのでしかたないんかな、と思っています。
Sorry, something went wrong.
ちなみに、直し方は超簡単なのでコメントで共有しときます。
sakura/sakura_core/dlg/CDlgSetCharSet.cpp
Lines 40 to 47 in 4014723
ここに m_bCP をリセットするコードを追加してやれば良いです。
m_pbBom = pbBom; // BOM m_bCP = false; return (int)CDialog::DoModal( hInstance, hwndParent, IDD_SETCHARSET, (LPARAM)NULL );
Successfully merging a pull request may close this issue.
問題内容
文字コードの指定ダイアログでCPのチェックが効かない事が有る
再現手順
再現頻度
必ず
問題のカテゴリ
環境情報
The text was updated successfully, but these errors were encountered: