最近触ってないD情報を求めて本家行ったらVersion D 2.049 Sep 13, 2010なる一文が。
先月かよ!
NeGuiコンパイル通んねーよ!
いつもどーりだくそったれーい!
このブログを検索
2010年6月14日
2010年5月16日
髪切った
NeGuiを1.110にバージョンアップ。
今回からバージョン表記変更、一番最後がetc.negui.system.literal.VER.EXに対応するように。
今回試験的に統合アーカイバのラッパークラスを追加。
DLLから動的に呼び出すことを前提にUnlha32を元に設計。
仕様の理解が甘いので微妙なところだけどうまく使えればいいなぁと考えながらコーディング。
一応それぞれのAPIは実行可能のはず。
ラップしたのは単純なものだけでOpenArchiveは未ラップ。
あぁ明日仕事鬱だなぁ。
今回からバージョン表記変更、一番最後がetc.negui.system.literal.VER.EXに対応するように。
今回試験的に統合アーカイバのラッパークラスを追加。
DLLから動的に呼び出すことを前提にUnlha32を元に設計。
仕様の理解が甘いので微妙なところだけどうまく使えればいいなぁと考えながらコーディング。
一応それぞれのAPIは実行可能のはず。
ラップしたのは単純なものだけでOpenArchiveは未ラップ。
あぁ明日仕事鬱だなぁ。
2010年5月4日
ちょっと風邪が治ってきた!
NeGuiを1.101にバージョンアップ。
プログラム的な部分に大きな修正は無いけどnegui.ddocを大幅書き換え。
今現在はNeGuiの基盤部分であるetc.negui.system.text, etc.negui.system.time等々をちまちま改造中。
DateTime.MODE.FLEXIBLEの挙動が謎過ぎてちょっと面白い。
進むか戻るか適当すぎる。
あとD言語 Part24に書き込んだらDと全然関係ない話題でスレを消費していた。
ほんと申し訳ないなぁ。
もう書き込まない方がいいかもしれんので大人しくROMっとこう。
プログラム的な部分に大きな修正は無いけどnegui.ddocを大幅書き換え。
今現在はNeGuiの基盤部分であるetc.negui.system.text, etc.negui.system.time等々をちまちま改造中。
DateTime.MODE.FLEXIBLEの挙動が謎過ぎてちょっと面白い。
進むか戻るか適当すぎる。
あとD言語 Part24に書き込んだらDと全然関係ない話題でスレを消費していた。
ほんと申し訳ないなぁ。
もう書き込まない方がいいかもしれんので大人しくROMっとこう。
2010年5月2日
2010年4月10日
2010年3月12日
2010年1月6日
2009年11月9日
マシュマロってあんましおいしくないと思った
立て続けにネムぃのバージョンアップ。
1.010にアイテムのメモが保持されないバグがあったので1.020もパッケージにて公開。
最近はネムぃの機能からNeGuiに引越しできそうなmoduleを引越し中。
正直GUI以外のmoduleはあんまし移動させたくなかったんですけど今後NeGuiを使用して別ソフトを作る可能性も考えたらpackageまとめておいたほうがいいかと考え決行。
とはいってもNeGuiはネムぃがつくれりゃそれでいいライブラリという位置づけなんで本当に快適に使用できるかは不明なまま一応検証用としてtest.dを作って実行してみた結果がこの画像。
とまぁこんなかんじ。所要時間は10分くらい。
一応ほかのソフトも作れなくもないかなーと思う今日この頃。
下記がそのソース↓
1.010にアイテムのメモが保持されないバグがあったので1.020もパッケージにて公開。
最近はネムぃの機能からNeGuiに引越しできそうなmoduleを引越し中。
正直GUI以外のmoduleはあんまし移動させたくなかったんですけど今後NeGuiを使用して別ソフトを作る可能性も考えたらpackageまとめておいたほうがいいかと考え決行。
とはいってもNeGuiはネムぃがつくれりゃそれでいいライブラリという位置づけなんで本当に快適に使用できるかは不明なまま一応検証用としてtest.dを作って実行してみた結果がこの画像。
とまぁこんなかんじ。所要時間は10分くらい。
一応ほかのソフトも作れなくもないかなーと思う今日この頃。
下記がそのソース↓
/**
*/
module nemuxi.negui.test;
import nemuxi.negui.allimport;
version(build) {
pragma(build_def, "EXETYPE NT");
pragma(build_def, "SUBSYSTEM WINDOWS,5.0");
}
void main() {
auto aaa=new TestNeGui;
aaa.execute;
}
class TestNeGui: MainWindow {
enum CTRL: ITEM_ID {
HELLO=1,
EDIT,
MSGBOX
}
private {
TextLabel label;
MultiEdit edit;
Push button;
Font CtrlFont, EditFont;
}
this() {
GUIINFO g;
super(&g);
}
protected override {
void OnCreate() {
// メインウィンドウ処理 -------------------------------
// タイトルバーあり
caption = true;
// システムメニューあり
systemMenu = true;
// サイズ変更用境界線あり
frameSize = true;
// 表示状態
setShow(SHOW.SHOWNORMAL);
// 位置とサイズの設定
move(0, 0, 200, 200);
// メインウィンドウを親としてラベル作成 ---------------
label = new TextLabel(this, CTRL.HELLO);
// 水平位置設定
label.horizonAlign = HORIZON_ALIGN.CENTER;
// 縦位置
label.verticalCenter = true;
// 文字設定
label.text = Text("はろー わーるど");
// メインウィンドウを親としてエディットボックス作成 ---
edit = new MultiEdit(this, CTRL.EDIT);
// 空白にしておく
edit.text = Text.emptyText;
// メインウィンドウを親としてボタン作成 ---------------
button = new Push(this, CTRL.MSGBOX);
// 文字設定
button.text = Text("メッセージ表示");
// フォント生成 ---------------------------------------
CtrlFont = new Font(Font.STOCK.MESSAGE);
EditFont = new Font(Font.STOCK.SYSTEM);
EditFont.pitchAndFamily(Font.PITCH_FAMILY.MODERN);
// 一括してフォントの設定 -----------------------------
auto ctrls = new ControlGroup(label, edit, button);
ctrls.font = CtrlFont;
// エディットボックスは等幅
edit.font = EditFont;
// パネルの設定 ---------------------------------------
auto panel = new Line(DIRECTION.VERTICAL);
// ラベルの設定、 あまりの領域
panel += label;
panel.sizeInfo(0).absolute = -1;
// エディットボックスの設定、50%
panel += edit;
panel.sizeInfo(1).percent = 50;
// ボタンの設定、最低限の高さ
panel += button;
panel.sizeInfo(2).absolute = button.minContentHeight;
// それぞれをウィンドウのパネルに設定
layoutManager.basePanel = panel;
}
bool OnCommand(ITEM_ID Id, MESSAGETYPE MessageType, NeGui Sender) {
if(Sender is button) {
if(MessageType == Button.EVENT.CLICKED) {
// メッセージボックス表示
ShowMessage();
return true;
}
}
return false;
}
}
private void ShowMessage() {
// エディットボックスの文字列取得
auto EditText = edit.text;
// エディットボックスの改行数取得
auto LineCount = edit.lineCount-1;
// 取得文字列から文字列長取得
auto TextLength = edit.textLength;
// ダイアログ生成
auto dialog = new MessageDialog();
// 表示メッセージを書式付で
dialog.message = Text(
"文字列%s%s%s", Text.newline, EditText, Text.newline,
"%s%s\n", Text.repeat(Text('-'), 40), Text.newline,
"改行数 = %s\n", LineCount,
"文字数 = %s\n", TextLength
);
// タイトルバーを日時に
auto time = new DateTime();
time.format = "[YY]/[M]/[D], [hh]:[mm]:[ss]";
dialog.text = Text(time);
// 表示アイコン
dialog.icon = MessageDialog.ICON.INFORMATION;
// ボタンの種類
dialog.button = MessageDialog.BUTTON.OK;
// 表示
dialog.show;
}
}
一応全部で140行くらいでした。
2009年11月3日
2009年10月27日
2009年10月7日
2009年10月5日
2009年9月18日
2009年9月17日
マウスフックがバグってたー
謎が多すぎる。
コマンド型を実装してからマウスフックでネムぃがサヨナラする事象が発生中。
コマンド型で入力補完的なコンボボックスのリスト部分的なものを表示させてからマウスフックを使用すると
Hooker.dllを使用していなければ大丈夫。
非常に意味が分からない。
DDBGで動きを見る感じでは
コマンド型を実装してからマウスフックでネムぃがサヨナラする事象が発生中。
コマンド型で入力補完的なコンボボックスのリスト部分的なものを表示させてからマウスフックを使用すると
Unhandled Exception: EXCEPTION_ACCESS_VIOLATION(0xc0000005) at HOOKER.DLL (0x012b8127) thread(6100)が発生。
Hooker.dllを使用していなければ大丈夫。
非常に意味が分からない。
DDBGで動きを見る感じでは
- ネムぃ起動
- 起動の最後にHooker.dllがロードされる
No symbols available from HOOKER.DLL HOOKER.DLL loaded at 0x012b0000
- コマンド入力ウィンドウを表示
- 何か入力するとリストが表示され以下がロードされる
No symbols available from IMJPSQM.dll IMJPSQM.dll loaded at 0x3ac70000 No symbols available from IMJPCD.DIC IMJPCD.DIC loaded at 0x3ae00000
- ここで分岐。
- ①このままリストからアイテムを選択して実行すると以下がロードされて何事も無く動く。
No symbols available from NETAPI32.dll NETAPI32.dll loaded at 0x59250000 No symbols available from urlmon.dll urlmon.dll loaded at 0x442a0000 No symbols available from iertutil.dll iertutil.dll loaded at 0x40930000
②リストを無視してデスクトップでホイールクリックすると
EXCEPTION_ACCESS_VIOLATION
2009年9月16日
いやいやいやいや
Access Violationが発生中。
場所がわかんねー。
DDBG使ってもわけわからん。
せめて変数名だけでも分からないもんだろうか。
場所がわかんねー。
DDBG使ってもわけわからん。
Unhandled D Exception (std.contracts.ErrnoException "C:\dmd\dmd\src\phobos\std\stdio.d(896): (Bad file descriptor)") at KERNEL32.dll (0x7c812afb) thread(2632) ->;us #1 0x004bd728 in __d_throw@4 () from deh #2 0x004bd538 in extern (C) int rt.dmain2.main(int, char**) . void runMain(void*) () from dmain2 #3 0x004bd575 in extern (C) int rt.dmain2.main(int, char**) . void runAll(void*) () from dmain2 #4 0x004bd2e8 in _main () from dmain2 #5 0x00521695 in _mainCRTStartup () from constart #6 0x7c817077 in ?? () from KERNEL32.dll #0 Access Violation
せめて変数名だけでも分からないもんだろうか。
2009年9月12日
2009年9月9日
電波時計の電池が意外と長持ちでびっくり
ネムぃがバージョンアップした感じです。
ソースがあまりにも汚くなったので次バージョンは機能の追加はせずに整理に重点を置きたいなぁ。
今回の主な変更点はアイテム選択時のコンボボックスやリストボックスに対象アイテムのアイコンを描画するようにしたこと。
今まではアイコン読み込みに掛かる時間等を考えるとあんましやりたくなかったのですが適当にファイルを30個くらい読ませてみたら意外と速く処理できたのでじゃあ実装してみよう、といった感じで進んでいきました。
まぁそのおかげでソースが凄く凄く読み難くなってしまいましたが、、、てか、あれだ、書いてて気付いたけどイメージリストのkill忘れてるわ今回。
他にも色々やったけどアイコン描画がいろんなところに影響しすぎて修正しまくってその過程でなにやったか忘れた。
ソースがあまりにも汚くなったので次バージョンは機能の追加はせずに整理に重点を置きたいなぁ。
今回の主な変更点はアイテム選択時のコンボボックスやリストボックスに対象アイテムのアイコンを描画するようにしたこと。
今まではアイコン読み込みに掛かる時間等を考えるとあんましやりたくなかったのですが適当にファイルを30個くらい読ませてみたら意外と速く処理できたのでじゃあ実装してみよう、といった感じで進んでいきました。
まぁそのおかげでソースが凄く凄く読み難くなってしまいましたが、、、てか、あれだ、書いてて気付いたけどイメージリストのkill忘れてるわ今回。
他にも色々やったけどアイコン描画がいろんなところに影響しすぎて修正しまくってその過程でなにやったか忘れた。
2009年9月6日
最近コーラがやたらうまい
DMD2.032のtoで泣いたけどD言語 Part22の839氏も死んでたっぽい。
修正パッチへのリンクもあったのでそれを参考にtoで泣かなくてよくなりました。
ネムぃの設定画面で多用しているアイテム一覧のコントロールをそろそろ綺麗にしようと思いコンボボックス→拡張コンボボックスに変更しようと思いましてコード実装してみたらすごく変。
STANDARDなら大丈夫なんですけどDROPDOWNとかを指定すると途端に動かない。
いや、動いてんだけどリスト部分が表示されない。
あっれ~ってなりながらGoogle大冒険した結果MSDNのUsing ComboBoxEx Controlsにあんましよろしくない文が。
英語わかんないなりに訳してみるとイメージリスト設定後にリサイズできないの?
とりあえずよく分からんけど適当に実装してみた。
以上、同じ問題で誰かが悩まないようにメモ書きです。
←実装した結果。
修正パッチへのリンクもあったのでそれを参考にtoで泣かなくてよくなりました。
ネムぃの設定画面で多用しているアイテム一覧のコントロールをそろそろ綺麗にしようと思いコンボボックス→拡張コンボボックスに変更しようと思いましてコード実装してみたらすごく変。
STANDARDなら大丈夫なんですけどDROPDOWNとかを指定すると途端に動かない。
いや、動いてんだけどリスト部分が表示されない。
あっれ~ってなりながらGoogle大冒険した結果MSDNのUsing ComboBoxEx Controlsにあんましよろしくない文が。
hwnd = CreateWindowEx(0, WC_COMBOBOXEX, NULL,
WS_BORDER | WS_VISIBLE |
WS_CHILD | CBS_DROPDOWN,
// No size yet--resize after setting image list.
0, // Vertical position of Combobox
0, // Horizontal position of Combobox
0, // Sets the width of Combobox
100, // Sets the height of Combobox
g_hwndMain,
NULL,
g_hinst,
NULL);
英語わかんないなりに訳してみるとイメージリスト設定後にリサイズできないの?
とりあえずよく分からんけど適当に実装してみた。
以上、同じ問題で誰かが悩まないようにメモ書きです。
←実装した結果。
登録:
投稿 (Atom)





