DWT

Browser上でScriptを実行する

DWTのBrowserクラスには、SWT3.Xのexecute()が存在しないので、CBrowserというカスタムコントロールをつくり、SWTからスクリプト実行メソッドを移植しました。ほぼ、SWTそのままです。 /* IBM Corporation - initial API and implementation */ // スクリプ…

「お気に入りの追加」「お気に入りの整理」ダイアログを表示させる

通常、IEでは、 external.AddFavorite(document.URL, document.title); を実行することで、「お気に入りの追加」のダイアログを表示させることができます。 しかし、「external.AddFavorite」はIEの機能であって、IEコンポーネントの機能ではないので、IEコ…

ブラウザ側で実行されたScriptの結果を取得する

DWT

Snippet160 execute()でスクリプトを実行し、結果をwindow.statusへセットすることで、StatusTextEventを発生させて、そこで取得できるらしいですけど・・。 ステータスバーを普通に使っていると使えないです。テキストが「javascript_result=」から始まると結…

「お気に入りの追加」「お気に入りの整理」ダイアログを表示させる (2)

結局、Shell.UIHelperをやめて、Windowsの「DoAddToFavDlg」、「DoOrganizeFavDlg」で実装しました。 理由は、Windows標準の「お気に入りフォルダ」以外をルートにすることで、IEのお気に入り管理機能をHoven側の更新に使って楽をしようと思ったからです。好…

また文字コード

// Java String s = "ねこ"; // D char[] s = "ねこ"; で、 s.length は、Javaなら「2」で、Dなら「6」なので、それを意識せずにトランスレートしていると、やはり問題多いです。 たとえば、Converter.substringのあとに、Converter.StrToTCHARsを呼び出すよ…

マルチバイト文字

FontData#setName TextLayout#さまざま にマルチバイト文字関係のバグがあってArrayBoundsErrorなど。 StyledTextのStyleRangeも範囲にマルチバイト文字があると適用範囲が狭かったり、文字数によってUtfExceptionが出たりする。微妙に直そうとしてたんだけど、…

OLEのイベントリスナーが動いた

まだ、完成していないということだったけど、待ちきれないので自分で修正した。とりあえず、OLEのイベントリスナーが正常に動くようになって、ThinBrowserでコメントアウトされていたTitleChangeイベントでShellのタイトルを随時変更する例を実行することが…

dwt-win32-0.36-20060421でOLEのExampleが動かない件

dwt/packages/dwt/examples/ole_com配下のサンプルが、dwt-win32-0.36-20060228.rarだと動くが、dwt-win32-0.36-20060421.rarだとolecontrolsite.d内でのエラーで動かない。 variantの変更?と思ってしまうが、実はコンパイル時に最適化オプションをつけてい…

Tableのスクロールが重い件 (3)

結局、グラフィック(GCクラス)を使ってプログレスバーを描画することにした。TableEditorは、セルの位置にコントロールを描画しているだけで、スクロールするたびに移動させなければならならず、この処理がかなり重いので、もうどうせ棒グラフ書きたいだけだ…

Comboクラスで表示できない文字がある

Textクラス、CComboクラスでは問題ないが、Comboクラスでは、「ポエム」と入力すると、最後の「ム」が消える(入力できない)。マルチバイト文字が欠ける感じ?DWTのバグくさいけど、とりあえず、Comoboの代わりにCComboを使うことにする。 ただ、CComboはXPス…

Tableのスクロールが重い件

Tableでレコード件数が1000を超えると、スクロールが重すぎる。なんだこれは・・。 セルにProgressBarを埋め込んでいるので、さらに重い。 これはもうどうしようもない感じ・・、Canvasで自分でグラフを描画すれば少しは軽いかもと考えて、とりあえずCanvasに置…

Tableのスクロールが重い件 (2)

解決。ControlEditorとTableEditorをコピペで改造。 内容は、各クラスごとでコントロールにListenerを設定するのをやめて、代表で1つだけ設定するようにして、かつリサイズ、スクロールのイベント発生時にTableのクライアントエリアを取得して、表示中のセ…

Tableクラス 覚え書

チラつかないように更新する方法。 1. setRedraw(false) 2. 更新 3. setRedraw(true)BeginUpdate/EndUpdateと同じ感じでOK。 setRedraw(false); scope(exit) setReadaw(true); ....update proc.... なんてしてもいいかも。 セル上にコントロールを表示する T…

TableクラスsetHeaderVisibleの動作条件

はまったメモ。TableクラスのsetHeaderVisible(bool )は、コンパイル時に「 -L/SUBSYSTEM:windows:5 」オプションを指定しないと、正常に動作しない(trueにしても、テーブルのヘッダが表示されない)。その他(setLinesVisible(bool)など)は、正常に動作する。…

XPスタイルのコントロールを表示する

packages/dwt/examples/controlexample/controlexample.exe.manifest DWTに付属のcontrolexampleでは、このファイルによりXPスタイルを実現している。 見た目だけの話なら、このファイルを「実行ファイル.exe.manifest」と名前を変えて、実行ファイルと同じ…