コンテンツ

Activity

リンク

Notes

このページは内部リンク用雑記ファイルです。外部からの雑記へのリンクは note{yy}_{mm}.php に張ることを推奨します。

以前の
2003 : 5 6 7 8 9 10 11 12
2004 : 1 2 3

最新

最近のコメント

コメント機能は暫定実装なため予告なく投稿が削除される可能性があります。

2004/01/31(土)

何か方向性を間違えていると思います。

 北九州市の末吉興一市長は二十八日、市職員から募ったソフト政策「明るい話題」のアイデアのうち、実現に向けて検討する主なものを発表した。実物大の「ガンダム」ロボットを作って街を歩かせ、ロボット先進都市をアピールする、といったユニークなアイデアも盛り込まれた。

ガンダムは、同市内のどこかを「スーパーロボット特区」とし、十八メートルの実物大ロボットを定期的に歩かせ、「ガンダムが歩く街」にしようというもの。

Dキャンセラーさん、もう老後は北九州に住むしかっ。

コメントを追加

2004/01/30(金)

逆P/Invoke時の型変換

現在わかっているマネージ→アンマネージ型対応を列挙しておきます。HWNDやHDCなどはすべてHANDLEで。

C/C++/WIN32.NET
boolSystem.Boolean
char不明(System.Char?)
unsigned char不明(System.Byte?)
char *System.Text.StringBuilder
const char *System.String
shortSystem.Int16
unsigned shortSystem.UInt16
intSystem.Int32
long int
int *(1配列)ref System.Int32
int *(2配列以上)不明
int *(要素数不明)System.IntPtr
unsigned intSystem.UInt32
unsigned long int
floatSystem.Single
doubleSystem.Double
long double
struct不明(各メンバを分解?)
struct *ref struct
const struct *struct
class不明(多分無理)
class *不明(多分無理)
関数ポインタ不明
WORDSystem.UInt16
DWORDSystem.UInt32
CHAR不明(System.Char?)
LPSTRSystem.Text.StringBuilder
LPCSTRSystem.String
WCHAR不明(System.Char?)
LPWSTRSystem.Text.StringBuilder(要 MarshalAs 属性)
LPCWSTRSystem.String(要 MarshalAs 属性)
HANDLESystem.IntPtr
FARPROC(C言語)不明
FARPROC(C++)不明

VC7.1のbool型は1バイト以降にごみがつくのでSystem.Booleanでは取れないかもしれません。

配列サイズが不明な場合System.Runtime.InteropServices.Marshalクラスを用いて読み書きします。固定の場合System.Runtime.InteropServices.MarshalAs 属性で何とかできる思うのですが、うまくいかないので不明としています。


public static void ExportFunc( IntPtr ptr ) {
    Marshal.WriteInt32( ptr, 0, 1 );
    Marshal.WriteInt32( ptr, 4, 2 );
}

Unicode 文字列を渡す際は、System.Runtime.InteropServices.MarshalAs属性を付加して Unicode 文字列であることを明示します。C#は標準でAnsi文字列にマーシャリングするためSystem.Runtime.InteropServices.MarshalAs属性は必要ありませんが、他言語では明示的なマーシャリングが必要になるかもしれません。


public static void ExportFunc(
    [MarshalAs(UnmanagedType.LPWStr )]
    string str )

char が不明となっているのは単に調べてないからです。

コメントを追加

2004/01/29(木)

Product ページ

前回の模様替えのときPHPがiniを扱えるのを見つけたので作ってみました。Framework のほうでUSKさんが汎用アンケートシステムが欲しいといっていたのでそのための習作。他の問題が山積みなので実際に作るかわかりませんが。

コメントを追加

2004/01/28(水)

プラネットガーディアン[4]

最終巻。この終わりかたは打ち切り?まぁ確かに一般にはうけない内容だと思いますけど。絵的にはどうかなと思う部分がありましたが、内容自体は好きだったので残念。

コメントを追加

2004/01/27(火)

サイトメンテナンス

下のほうの回転座標を求める説明で、三角定理じゃなくて三平方の定理だったのを修正。後、微妙にnote.phpとcomment.phpを強化。

コメント(2)

2004/01/26(月)

MailChecker(仮称)β6

スクリーンショット久々の更新。ダウンロード

Office メニューの選択色の作り方がわからないため、選択色周りは投げやりな処理をしてます。

今後しばらくは投げやりな内部実装の修正なので、機能追加予定はありません。

コメントを追加

メモメモ

よく考えればすぐにわかることですが、MailChecker(仮称)に使っていてなかなか原因に気がつかなかったのでメモ。

ArrayListを使っている際、forループ内で特定のindexを削除する場合、


ArrayList array = new ArrayList();

// 何らかの処理

for( int i=0; i<array.Count; i++ )
    if( [判定式] )
        array.RemoveAt( i );

とするとArrayList.RemoveAt()を呼んだ時点で、ArrayList.Countがデクリメントされます。ということで、


for( int i=0; i<array.Count; i++ )
    if( [判定式] )
        array.RemoveAt( i-- );

このようにカウンタもデクリメントする必要があります。

コメントを追加

2004/01/25(日)

1月も後1週間

ということでそろそろ余裕がなくなってきたり。

コメントを追加

2004/01/24(土)

2、ブログって何?

どーでもいいですけど、連続文字を略すとき何でn乗なんでしょ。
それはともかくよーやく納得のいく資料を発見。

 日本にも似たような形式のサイトが数多くあり、「個人ニュースサイト」または単に「日記サイト」などと呼ばれているが、これはアメリカで産まれたWeblogを導入したものではなく、独自に発生・進化してきたものである。日本の一部のネットコミュニティでは、アメリカでWeblogが注目される以前から個人ニュースサイトが定着していたこともあり、「Weblog」と呼ばれることを嫌うサイトオーナーもいる。

やはりテキスト系サイト全般が含まれるみたいですね。しかし一般的に使われているブログとはブログツールにより自動生成されたものみたいです。なんというかブログって言ってる人の大半は、「これはC#で書いたプログラムだからオブジェクト指向のプログラムだ」とか言ってる人みたいな気が多々するのですが。「日記」と「ブログ」を併設してるとこもありますし。

で、どこかで聞いたなと思って調べてみるとGoogle 検索「東大 mesh blog」でした。この辺りからですかブログという「言葉」がはやり始めたの。

関連

カテゴリ機能を実装したほうがいいかも。ただ現在は月ごとにファイルを区切ってるので、カテゴリ機能を実装すると非常に重たくなりそうな予感。

コメントを追加

2004/01/23(金)

模様替え

とりあえず見切り発車の仮バージョン。理由としましては色々と変更点が多く(includeファイル名の変更)、ある程度まとまったところで出しとかないとFramework ページが弄れないからです。
主な変更点としては、概要の廃止と雑記デザインを夢幻泡影のものを使用できるように。ただ、デザインを少し弄ったら、みすじらさんに非常に似てしまったのでそのうち何とかする予定。

コメント(1)

コメントシステムのバグ修正


if( getenv("HTTP_REFERER") == "" ) {
    // Form 設置
}

なことをやっていてリファラがあるとコメント書き込みFormが設置されない阿呆なバグを修正。

コメント(1)

続、ブログって何?

Webを使って公開する日記、もしくはそのような形式で綴った(Webページ制作者の)所感などを述べたWebサイトのこと。

Web日記はブログに入り、別にサイト全体ではなくても良いみたいですね。ということはここはブログといってよいようです。しかし、Web日記がありなら殆どのサイトはブログといってよいわけで。大体ブログなんて新しい言葉使わなくても昔からある(と思う)Web日記でよいと思うのですが。

コメントを追加

2004/01/22(木)

正n角形を描く

サトシさんの掲示板に投げた正多角形を書くコード。全部のっけられなかったのでここで公開。やってることはある1点から 360/n角 回転して座標を求めてます。多分もっとよいアルゴリズムがあると思いますけど。回転に相変わらず複素数平面つかってますが、これは下で a さんが提示した行列変換の原理がいまいちわからないため。


using System;
using System.Drawing;
using System.Windows.Forms;

class a : Form {
    // 角の数
    private const int m_nPolygon = 5;
    // 外接円の直径
    private const int m_diameter = 180;

    protected override void OnPaint(  PaintEventArgs e ) {
        PointF[] pt = new PointF[ m_nPolygon ];
        double ang = 360/m_nPolygon;
        // 座標初期化
        for( int i=0; i<m_nPolygon; i++ )
            pt[i] = CalcRotatePos( 0, -(m_diameter/2), ang*i );

        using( Pen pen = new Pen( ForeColor )) {
            // 外接円描画
            e.Graphics.DrawEllipse( pen, 0, 0, m_diameter, m_diameter );
            // (m_diameter/2, m_diameter/2) を原点におく
            e.Graphics.TranslateTransform( m_diameter/2, m_diameter/2 );
            // 正多角形描画
            e.Graphics.DrawPolygon( pen, pt );
            // とりあえずリセット
            e.Graphics.ResetTransform();
        }
        base.OnPaint( e );
    }

    PointF CalcRotatePos( double x, double y, double angle ) {
        double tx = (x < y) ? y : x;
        double ty = (x < y) ? x : y;
        double ang;
        if( x == 0 ) {
            ang = (y < 0) ? 270 : 90;
        } else {
            ang = System.Math.Atan2(tx, ty) * (180.0/Math.PI);
        }
        double rad = (ang+angle) * (Math.PI/180.0);
        double r   = Math.Pow( Math.Pow(x, 2)+Math.Pow(y, 2), 0.5 );

        double xx = r * Math.Cos(rad);
        double yy = r * Math.Sin(rad);

        return new System.Drawing.PointF(
            (float)xx, (float)yy );
    }

    public static void Main() {
        Application.Run( new a() );
    }
}

コメントを追加

ブログって何?

あずまや。って、あれブログですか?という質問を受けたのですが、ブログの定義ってよくわからないのですよね。

 ブログはWebLog(ウェブログ)の略語で、個人が日々の出来事や社会的な事象に関する記録や記事を時系列で書き連ねるWebサイトのこと。

という説明があるので、「Webサイト」全体を指すと思うのですが、最近は日記システムと等価になってる気もしますし。日本語になると「ホームページ」と同じく元の意味なんて、、、ってことですか?

コメントを追加

2004/01/21(水)

自作メニューコンポーネント

ネタもそろそろ尽きてきたので製作中のものでも。とりあえず問題だったアイコンサイズ16x16が固定と、ショートカットキーの表示の問題をクリアしたので大体完成。残る問題は\tの処理を行ってない点ですが、実装方法がさっぱりわからず、しばらく保留。

スクリーンショットこんな感じ。ちなみにこれはアイコンメニューのベースクラスで件のOfficeメニューもどきはこれから派生します。

コメントを追加

スパラジ

復活だそうで。角川がスポンサーから消えたのでゲストコーナーが平凡。他は相変わらず。

コメントを追加

雑記システムのバグ

最近のコメント、投稿に失敗しても登録されますね。現在手元のものは模様替え中なのでそれが終わってから。

コメントを追加

2004/01/20(火)

さてどうしたものか

Timing Is Everything

HWND に変更を加えるとありますね。これはシステムネイティブなのか、Avalonを用いた場合だけなのかわかりませんが、後者だと既存のコードが殆ど使い物にならなくなる気が。HSP3.0では時期的に対応するのはまず無理なので、ここでもう一度大規模なバージョンアップですかね。

コメントを追加

2004/01/19(月)

Graphics.RotateTransform メソッドの回転先座標を求める。

Graphics.RotateTransformメソッドの回転先座標を求めます。hsGdiplus.hpiのマニュアル用に用意したものもHSP3.0待ちで腐らせておくのもアレなので公開。何の参考になるのかまったくわかりませんが。

まず例として点p(120, 120)が原点O(0, 0)を中心に30度回転した(xx, yy)位置の求め方を考えます。

回転を扱うため複素数平面を用いる。
複素数a = r * (cos(45) + isin(45));

原点を中心に30度回転するため
複素数wa = r * (cos(45)+isin(45)) * (cos(30)+isin(30))
== wa = r*(cos(75)+isin(75));

r は原点Oから点pの距離である。点pとx軸が垂直に交わる点qをとると三角形opqは直角三角形になるため、三平方の定理より、
傾き r = (1202 + 1202)(1/2)
== r = 120*2(1/2);

求める値は x, y 座標なので
xx = 120*2(1/2) * cos(75);
yy = 120*2(1/2) * sin(75);

これを解くと
int(xx) = 43, int(yy) = 163 //

複素数平面がわかれば何のことはない式ですね。これをそのままC#のコードに落とすと次のようになります。Cも似たようなものなので説明は要らないと思います。HSPの標準命令で求めることは出来ません。


System.Drawing.PointF CalcRotatePos( int x, int y, int angle ) {
    double ang = System.Math.Atan2(x, y) * (180.0/Math.PI);
    double rad = (ang+angle) * (Math.PI/180.0);
    double r   = Math.Pow( Math.Pow(x, 2)+Math.Pow(y, 2), 0.5 );

    double xx = r * Math.Cos(rad);
    double yy = r * Math.Sin(rad);

    return new System.Drawing.PointF(
        (float)xx, (float)yy );
}

コメント(3)

2004/01/18(日)

センター試験::英語

英語の試験でYumi and Gerry are making a homepageはいけないと思います。

コメントを追加

2004/01/17(土)

モジュールの設計に関するきわめて個人的な見解

モジュールを名前空間ととるかクラスととるかでUSKさんと議論になったのでここに長々と書いておきます。

私はモジュールは名前空間でも、クラス(構造体)でもなく、あくまでモジュールであり、それらの代わりとしては働かないと考えます。ただ、この2つで比べた場合クラス側の立場をとります。モジュール定義命令はpublic staticであり、その他はprivate staticです。なぜ名前空間ではないかというと、名前空間は文字通り名前空間を用いシンボルの競合を避けるためのものです。しかしモジュール定義命令は global に定義され名前の競合に対してはなんら役に立ちません。モジュールをあくまで名前空間とするのならモジュール定義命令は実装せずラベルによるサブルーチンのみ提供すべきです。が、これはモジュール定義命令というインタフェースが用意されている以上、コードの可読性を考えあえてこれを採用するのは現実的ではありません。(モジュール命令呼び出しよりgosubで呼んだほうが速いのでその辺りにこだわる人は好きなように。ここでは一般論です。)

で、結局モジュールとは何と考えるかというと、モジュールは内部で使用されるシンボルに明示/暗黙的に接尾語をつけることにより競合を避け(競合を避けるためには暗黙的につけられることが望ましく、このあたりから無意味にモジュールに名前をつけるのは嫌い)処理を隠蔽するサブルーチンであり、それを利用するためのインタフェースがモジュール定義命令だと考えます。モジュール内部で定義される変数、ラベルはモジュール利用者側からは隠蔽されるべきであり、モジュール変数にアクセスする場合マクロにより抽象化するかget/setアクセサをモジュール定義命令として実装すべきです。(そもそもモジュール内に値が保持される変数を持つこと自体好きではないのですが、現状ここは仕方がない面もあります。)つまりモジュール利用者はモジュールが中でどのような処理を行ってるか、どのような変数を使っているのかなどは知る必要はなく、公開されるモジュール定義命令が利用者にとって全てだと考えます。

なおこれは今存在するモジュールをどのように運用するかについての考えでありモジュールはこうなって欲しいなどの類のものではありません。

コメントを追加

2004/01/16(金)

HSPのデバッグウィンドウ

使いづらいので何とかならないかと考えてみる。

  1. デバッグウィンドウは単なるウィンドウなのでこれに対し適切なメッセージを送りEditに表示させ、それを取得する。
  2. C/C++等でDllとして作成。これは同じメモリ空間にいたほうが何かと都合がいいため。
  3. デバッグウィンドウは単なるHSPウィンドウ(ID2以降と等価)で何か特徴があるわけではないため、HSP側からデバッグウィンドウのハンドルを得て起動。ハンドルはgsel 32としてデバッグウィンドウをカレントにした後BMSCR構造体から得ることが可能。

実装としてはこの程度でたいした手間もかかりそうにないのですが、時間がないし3.0で仕様も変わるだろうからあまりやる気がなかったり。そもそも3.0の予定にデバッグモードを外部アプリケーションからリモートコントロールとかありますし。

コメントを追加

サイトメンテナンス

コメントがない場合表示を「コメントの追加」に変更。放置していた li のスタイルを設定。

コメントを追加

2004/01/15(木)

6000hit

ありがとうございます。夢幻泡影側は雑記がなくなってまともな更新をしていないのではやいところ移行したいのですが、時間が取れないので春になりそうです。

コメントを追加

マウス直下の色を表示するアプリ

所用で作ったマウス直下の色を取得するツール。何かの参考になれば幸いです。


#include "Proj.API.as"
#include "Proj.API/winapi/gdi.as"

#define GetDC DeclBasicProc1 hUser, "GetDC",
#define ReleaseDC DeclBasicProc2 hUser, "ReleaseDC",
#define GetPixel DeclBasicProc3 hGdi, "GetPixel",

screen 0, 240, 240
gsel 0, 2

// TODO: Windows 2000 以降ではコメントをはずしてください
//#define _WIN32_WINNT 0x500
#ifdef _WIN32_WINNT
#if 0x500 <= _WIN32_WINNT
#const global WS_EX_LAYERED 0x00080000
#const global ULW_ALPHA 2
#define SetLayeredWindowAttributes \
    DeclBasicProc4 hUser, "SetLayeredWindowAttributes",

// レイヤードウィンドウは無視されるため自分をレイヤードウィンドウにする
GetHspWindow : hwnd = stat;
GetWindowLong ptr_t(hwnd), int_t(GWL_EXSTYLE);
exStyle = WS_EX_LAYERED | iResult;
SetWindowLong ptr_t(hwnd), int_t(GWL_EXSTYLE), int_t(exStyle);
SetLayeredWindowAttributes ptr_t(hwnd), int_t(0), int_t(160), int_t(ULW_ALPHA);
#endif /* 0x500 <= WINNT */
#endif /* def(WINNT) */

repeat
    await 0, 1;
    ginfo 0;
    if( (tx != prmx) | (ty != prmy) ) {
        tx = prmx : ty = prmy;

        GetDC ptr_t(0);
        hDC = iResult;

        GetPixel ptr_t(hDC), int_t(tx), int_t(ty);
        r = GetRValue(iResult);
        g = GetGValue(iResult);
        b = GetBValue(iResult);

        redraw 0
            pos 0, 0;
            color 255, 255, 255 : boxf;
            color;
            mes "R彩度 : "+ r;
            mes "G彩度 : "+ g;
            mes "B彩度 : "+ b;
        redraw 1
        ReleaseDC ptr_t(0), ptr_t(hDC);
    }
loop

コメントを追加

2004/01/14(水)

トリビア

某書店で「あったかトリビア発見」とかいうスローガンを掲げていたのでひとつ。
トリビアの泉は本にすると電車の中で暇しない本系のマメチ本と大差ない。
だめですか?

コメントを追加

2004/01/13(火)

Enterでボタンを押す

HSP関連の掲示板ででよく"他のアプリケーションと同じく"Enterでボタンを押すには〜ってのがありますが、あれはダイアログの機能でウィンドウは(標準で)持っていません。また、このボタンは BS_DEFPUSHBUTTON スタイルを持ち、他のボタンとは別のものです。(クラシックスタイルで黒い淵を持つボタン)普通のボタンをEnterで押す動作は操作系の共通化といった観点からみると、どうかなと思います。
※.NETはウィンドウとダイアログの区別がないためこの際おいておきます。

コメントを追加

2004/01/12(月)

今日の逸般

地方紙の1ページの4/1のを使ってヲタ文化として海洋堂を上げたり、萌えを連呼するのは伺かと思います。

コメントを追加

2004/01/10(土)

1月も半分過ぎたので

流石に時期はずれかと思い、トップ絵削除。代わりを書いてないのでしばらくトップ絵はありません。素直にメイド服にしておくべきでしたか?

コメントを追加

2004/01/09(金)

777

Framework ページのほうで 777 のキリ番を踏みました。だからどーしたって話ですが。

コメントを追加

試行錯誤

1日だけだと、雑記が少ないときにさびしいので3日に戻してみる。問題は月またぎのことをまったく考慮していない点。よーやく雑記のほうも月単位に対応したところなのでぼちぼち対応していきますが、2月までの対応は多忙のため厳しいかも。

コメントを追加

2004/01/08(木)

いろいろと。

コメントのURIを変更して2月以降も対応できるように。新着コメント通知機能実装。

コメント(1)

C# でHSPプラグインを作る

参考815065 - [INFO] DLL とは

まず、普通にDllのコードを書きます。


// dll.cs
class a {
    // HSP Dll なので int * 4
    public static System.Int32 HspFunc(
        System.Int32 p1, System.Int32 p2,
        System.Int32 p3,  System.Int32 p4 )
    {
        // 渡された引数をメッセージボックスで表示
        System.Windows.Forms.MessageBox.Show(
            ""+ p1 +"\r\n" + p2 +"\r\n"
            + p3 +"\r\n" + p4 );
        return 0;
    }
}

普通にコンパイル(csc /t:libraty dll.cs)してDllを作り、それを逆アセンブル(ildasm dll.dll /out:dll.il)してILを修正します。

まず、アセンブリのマニフェストを編集します。マニフェストはclass宣言の前にあります。(編集部分は ins でマークアップ)


.module dll.dll
// MVID: {99A2C801-A191-4158-B0C9-DB3DA3C6A7BF}
.imagebase 0x00400000
.subsystem 0x00000003
.file alignment 512
.corflags 0x00000002
.data VT_01 = int32[1]
.vtfixup [1] int32 fromunmanaged at VT_01

.corflagsが0x1だとWindowsXPで読み込めないので0x2を指定、メソッドをエクスポートするためのvtfixupを定義します。[]に指定する値はエクスポートするメソッドの数です。

メソッドのILを修正します。(編集部分は ins でマークアップ)


.method public hidebysig static int32  HspFunc(
    int32 p1, int32 p2,
    int32 p3, int32 p4) cil managed
{
    // コード サイズ       93 (0x5d)
    .maxstack  3
    .vtentry 1:1
    .export [1] as _HspFunc@16

    .locals init (int32 V_0,
             object[] V_1)

.vtentry 1:n/.export [n]のnはエクスポートするメソッドの1から始まる通し番号です。_HspFunc@16がエクスポートされる関数名となります。編集が終わるとこれを再アセンブル(ilasm /Dll dll.il /out:dll.hpi)します。ちゃんとメソッドが出力されているか確認してください。

Dllに渡された文字列はstringでとることが出来ます。文字コードは変換されるようなので気にする必要はありません。ただし[In]のみで[Out]には対応していません。文字列を返す場合、System.Text.StringBuilderを使用します。配列数値変数は固定ならば構造体を定義してrefで渡すことで対処できます。可変個の数値変数と文字列配列変数の操作はunsafeコードを使用すれば可能です、safeコードではわかりません。0x202規約は試していません。誰かやってください。

まぁ実際はリビルドのたびにこんなことをやってられないので、引数仕様を決めてそれを呼び出すだけのラッパDllを作るのが現実解で、そうするとMC++使ったほうが良いという結論になりますが。

コメントを追加

2004/01/07(水)

模様替え

トップページの雑記を1日だけにしてシンプルにしてみました。

コメントを追加

先日辺りから

Mozilla/4.0 (compatible;)のUAの人が定期的に同じリソースにアクセスしてるのですが、何してる?更新チェッカの類かもしれませんがMDI覚書を定期的にアクセスする理由がわかりません。

コメントを追加

2004/01/06(火)

ネスケ対応

Ver7.1を入れると、とりあえずそれなりに見えるようになったので対応は保留。(7.01で確認していた)まだあずまや。の文字がずれてますがこれくらいなら良いだろうといことで。上のNaviはPHPで生成しているためUAを判別して分岐することは可能ではありますが、、、
この問題とは関係ないですけど上の水の絵をスタイルシートに変えてみました。

コメントを追加

HSPでコモンコントロール6.0(XPスタイル)を使用すべきではない

HSPでinput/mesboxを使用する場合、manifestファイルによりコモンコントロール6.0を使うべきではありません。HSPはinput/mesboxに文字入力があった場合、割り当てた変数と同期を取るためWM_GETTEXTを送信します。この時コモンコントロール6.0では扱いが異なります。

問題の検証コード


#include "Proj.API.as"
#const global WM_GETTEXT 0x000D

buf = "" : txt = "";
input buf;

GetHspObject 0, 0 : hObj = stat;
button "取得", *b
stop

*b
SendMessageA ptr_t(hObj), int_t(WM_GETTEXT), ptr_t(4), var_t(txt);
mes iResult;
mes txt;

stop

日本語文字列(あああ)を書き込んだ場合"ああ"が取得されます。バッファサイズに4を指定しているため"あ{0x82}"が取得されることを期待すると、終端nullがつぶされ、バッファオーバーフローする恐れがあります。またこの時の戻り値は、(wParama-1)文字、テキストを取得しそれをバイト単位に変換したものが返るためまったく参考になりません。("あいうえお"なら3文字は"あいう"なので6、"aあbいcう"なら3文字は"aあb"なので4が返ります。)

当然C/C++で組んだ場合も同じ問題は発生しますが、回避コードを書くことができます。HSPはそれをシステムがやってしまっているところに問題があります。

コメント(1)

特定のコントロールにXPスタイルを適用しない

SetWindowTheme()を使用します。この関数は引数にUnicode文字列を要求しますが、""を渡すため変換する必要はありません。



#include "Proj.API.as"

ll_libload hUxTheme, "UxTheme.dll"

#define global SetWindowTheme DeclBasicProc3 hUxTheme, "SetWindowTheme",



button "Button", *d;

GetHspObject 0, 0 : hObj = stat;

SetWindowTheme ptr_t(hObj), str_t(""), str_t("")

*d

stop

WindowsXP以外をサポートする場合SetWindowTheme()が存在するか確認する必要があります。また、これはHSPでコモンコントロール6.0を使用した場合に発生する問題を回避するものではありません。

コメントを追加

2004/01/05(月)

雑記表示形式を変更

現在 notes.php と 2004/1 は同じものが表示されています。当初は10日間のみコメントを有効にするつもりでしたが、よい方法が思いつかないのでどうしようかといった感じ。

コメントを追加

2004/01/04(日)

バグ修正

複数行書き込んだ際の<br>が2つ付加バグを修正〜。

コメント(1)

2004/01/03(土)

バグ修正

後はクッキーに対応しないと。

コメント(2)

2004/01/02(金)

投稿機能のテスト

雑記に投稿機能を実装(普通こちらが先な気もしますが)、これで出先からの更新が可能。それに付随して微妙にID振り当て規約などを変更してます。

コメントを追加

2004/01/01(木)

あけました、めでたかったですね。

そんなわけで予告どおりあずまや。側にも雑記追加です。ただ、コメント実装は間に合わなかったのでやってませんが。

コメントを追加

トップ絵

n氏誕生月(日じゃないのは長々と掲載しておくから)おめでとう、ということでデジキャラットです。メイド服なんか描いてられるか!ってなわけで着物着せてます。ただ、手抜きなため浴衣に見えるのが残念。ちなみに写真屋だけで塗ってます。

コメントを追加

コメント機能

意外と簡単で機能の実装自体は終わりました。例によって暫定実装なので予告なく削除される可能性があります。また、サイト内の文書構造(あずまや。のみh1だったのを変更して見出しもh1でマークアップ。)を変更したため一部で問題が出る可能性があります。ネスケで正しくレタリングされない問題は後日修正します。

コメント(2)

おみくじ

2箇所の神社にいったのですが、両者とも「吉」で初めの詩から、願望、待人、、、等まで全く同じ内容。まぁおみくじなんてそんなものでしょうけど、しかし、、、

コメントを追加

goto Top

Copyright(C)方位記号

Gポイントポイ活 Amazon Yahoo 楽天

無料ホームページ 楽天モバイル[UNLIMITが今なら1円] 海外格安航空券 海外旅行保険が無料!