-
Notifications
You must be signed in to change notification settings - Fork 165
New issue
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
エディト領域のウィンドウの透過表示 #691
Comments
Layered Window について情報源として解説ページへのリンクを列挙します。 DirectComposition についてhttps://qiita.com/Pctg-x8/items/98a67d7c3bd747afad70 サクラエディタのコードについてCEditView のインスタンスが5つというのは、上下左右分割の分が4つ、MiniMapの分が1つ。 さて、CEditWnd, CSplitterWnd, CEditView という階層構造という事を説明して頂きましたが、ウィンドウの透過実装をするとなるとウィンドウ自体は1つにまとめてしまうのが良いかと思います。元から自前描画でエディタ表示が実現されているので理論的には全然不可能ではない筈。。ただ実際にやろうとすると結構な大改造になりそうな気が…。 |
エディトのウィンドウを1つにまとめる改造を行うとなると必然的にスクロールバーの描画も自前でやる事になります。Visual Studio や Visual Studio Code は検索でヒットした箇所がスクロールバー上でもハイライトされるのでそういう表示を行おうと思ったら結局スクロールバーを自前描画しないといけません。 準備として先にスクロールバーの自前描画を実装するべきかも? |
ウィンドウを任意のカタチ(矩形でないカタチ)に見せる技術は昔からあって、 ウインドウを1つにまとめる提案についてですが、慎重に行きたいと思っています。 ぼくがそれをやるとしたら、まずツールバーの廃止することから考えると思うんですが、 ツールバーやステータスバーのようなレガシーコントロールを活用するには、 ビューをモノリス化する試み自体は賛成です。 現在よりもさらに細かい区分けの描画単位を作って、 |
Windows 2000 からの機能です。内部でやってる事はOSが新しくになるにしたがって色々変わってそうです。色々と説明を書いたんですがブラウザのタブを閉じて消えてしまいました。。
それはGDIのウィンドウリージョンの機能ですね。なおこの方法だとウィンドウの縁がギザギザになります。
エディタ本体は機能を満たすために自作されていますが、その他のパーツに関してはレガシーなコモンコントロールに結構頼っている部分もあるので、それらを少しずつ自前のものに置き換えが必要ですね。 berryzplus さんが懸念している通り、自前でとにかく同等っぽい描画とかイベント処理が記述出来るからと言って分割統治をさぼってしまうとカオスなコードになってメンテの苦しみが増大しそうです。 |
なお最近 WPF, Windows Forms, WinUI がオープンソース化されましたが WPF と Windows Forms は .NET 用、Windows UI は Universal Windows Platform (UWP) 向けで Windows 10 向けという事で、現状ではサクラエディタはどちらにも移行し難いかと思います。 ダイアログリソースの量も多いし、このまま枯れた gdi32, user32 と心中路線かもしれないですね。 |
Gdiと心中させる気はないです。もっとも、win32が滅びる未来をぼくは想定していませんが。 大雑把な話ですが、この先「ビジネスロジック」とwin32を切り離す作業をしたいと考えています。この試みは従来のサクラエディタでも行われていて、cviewcommanderクラスなどにその片鱗を見ることができます。現状は何のためにあるかよく分からないクラスですが、当初はwin32依存を減らす目的だったと考えると、高度な設計検討の結果作られたものとも取れます。 遠い未来の話は置いといて、ビューの統合には基本賛成なことは改めて書いときます。 |
#665 から分離します。
ちょっと長いですが関連する comments を引用します。
#659 (comment)
#665 (comment)
#665 (comment)
The text was updated successfully, but these errors were encountered: