gcj/baygui/ログ


Top / gcj / baygui / ログ

JHelloから余計な枠を消した例

caption.pngno-caption.png

パッチ

【注意】このパッチだけでは使い物になりません。(問題点は後述)

--- SimpleCanvas-Win32.cpp.orig
+++ SimpleCanvas-Win32.cpp
@@ -111,7 +111,7 @@
 	bmpInfo.bmiHeader.biCompression   = BI_RGB;
 	bmpInfo.bmiHeader.biBitCount      = 32;
 
-	DWORD dwStyle = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU;
+	DWORD dwStyle = WS_POPUP | WS_SYSMENU;
 	RECT r = { 0, 0, w, h };
 	AdjustWindowRect(&r, dwStyle, false);
 	char* t = get_string(title);

問題点

  1. すべてのアプリが枠なしになるので、SimpleCanvas#createの引数などで枠の有無を選択できるようにしないと使い物にならない。
  2. ウィンドウがまともに動かせない。
    • 動かす方法はないわけではない。タスクバーのアプリを右クリックして「移動」を選ぶとマウスカーソルが移動マークになるので、カーソルキーを押すと動く。一度カーソルキーを押すとマウスに追随して動くが、マウスだけでは動かせない。
      • 正直言ってなぜマウスだけで操作できないような仕様になっているのか意味不明。
    • まともにするには、SimpleCanvasにウィンドウを動かすメソッドを追加して(MoveWindow使用)、BayGUIライブラリからドラッグを検知して呼び出す必要がある。
  3. ウィンドウがまともに閉じられない。
    • 閉じる方法がないわけではない。[Alt]+[F4]を押すか、タスクバーのアプリを右クリックして「閉じる」を選択する。
    • まともにするには、SimpleCanvasにウィンドウを閉じるメソッドを追加して(DestroyWindow使用)、BayGUIライブラリから閉じるボタンのクリックを検知して呼び出す必要がある。

gcj-20051018についての所感

  1. パーミッションで実行属性が付いているソースがあります。
    • WindowsのExplorerからコピーしたファイルは自動的にそうなってしまいます。カレントで./xxx.exeとしようとしたとき./まで打って[Tab]で補完しようとすると、実行できないソースまで拾ってしまいます。とりあえずmake cleanした上でfind . -type f | xargs chmod 666とすれば一括で直ります。
  2. JHelloが常にCPU占有率100%になっています。
    • JAVAde3Dのような常に動くものなら仕方ないですが、イベントドリブンでアイドリングするものはMain#mainの以下の部分を単にSimpleCanvas.run();にしてしまうとOKです。
      	while(SimpleCanvas.doEvents()) {
      		SimpleCanvas.invalidate();
      	}
    • invalidate()は無効化(=再描画要求)で、doEvents()というのは再描画を含めたイベントをキューが空になるまで実行して戻ってくる関数なので、イベントを拾いながら延々と再描画を繰り返すためCPU占有率が100%になります。
  3. JHelloのフォントファイルをbinにコピーした方が良いです。
    • binフォルダのバイナリは切り離して配布することを想定していますので、Explorerからクリックしてそのまま実行するのにフォントが必要だからです。
    • JAVAde3Dでもbyte[]にデータを詰め込むのをやめて、そろそろFileInputStreamを実装する頃ですかね^^

MENU

now: 5

リンク


最新の20件
2017-09-29 2017-04-25 2017-01-10 2016-12-11 2016-12-09 2016-10-04 2016-08-14 2016-06-05 2016-05-29 2016-04-15 2015-12-28 2013-02-25 2013-02-21 2013-02-20 2013-02-12 2013-02-11 2013-02-10
最新の20件
2010-02-01 2010-01-31 2010-01-30 2010-01-29 2010-01-16

Counter: 1634, today: 1, yesterday: 0

リロード   新規 編集 凍結 差分 添付 複製 改名   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS

Last-modified: 2008-03-28 (金) 15:48:00 (3678d);  Modified by mona
PukiWiki 1.4.6 Copyright © 2001-2005 PukiWiki Developers Team. License is GPL.
Based on "PukiWiki" 1.3 by yu-ji
Powered by PHP 5.2.17
HTML convert time to 0.057 sec.