Category: HSP

HSP3 で マシン語変換。


コールバックでマシン語を埋め込む必要があるときの、
ダンプコードからのHSP コードへの変換プログラム。

 

Continue reading »

適当な覚え書き。 HSP で PARAFORMAT2


なんでこうC++ で書かなかったのだと思うところではありますが、

しょうがないのでSDKのRichedit.h に書いてあったのをHSP風に解釈

 

———————————————————- (Richedit.h より抜粋。 持ってきて良いのかは疑問だけど。)

typedef struct _paraformat2
{
    UINT    cbSize;
    DWORD    dwMask;
    WORD    wNumbering;
    WORD    wReserved;
    LONG    dxStartIndent;
    LONG    dxRightIndent;
    LONG    dxOffset;
    WORD    wAlignment;
    SHORT    cTabCount;
    LONG    rgxTabs[MAX_TAB_STOPS];
     LONG    dySpaceBefore;            // Vertical spacing before para           
    LONG    dySpaceAfter;            // Vertical spacing after para           
    LONG    dyLineSpacing;            // Line spacing depending on Rule       
    SHORT    sStyle;                    // Style handle                           
    BYTE    bLineSpacingRule;        // Rule for line spacing (see tom.doc)   
    BYTE    bOutlineLevel;            // Outline Level                       
    WORD    wShadingWeight;            // Shading in hundredths of a per cent   
    WORD    wShadingStyle;            // Byte 0: style, nib 2: cfpat, 3: cbpat
    WORD    wNumberingStart;        // Starting value for numbering               
    WORD    wNumberingStyle;        // Alignment, Roman/Arabic, (), ), ., etc.
    WORD    wNumberingTab;            // Space bet 1st indent and 1st-line text
    WORD    wBorderSpace;            // Border-text spaces (nbl/bdr in pts)   
    WORD    wBorderWidth;            // Pen widths (nbl/bdr in half twips)   
    WORD    wBorders;                // Border styles (nibble/border)       
} PARAFORMAT2;

———————————————————-

参照:MSDN – PARAFORMAT2 Structure()

http://msdn.microsoft.com/en-us/library/bb787942(VS.85).aspx

 

宣言 HSP変数 メンバ名 オフセット サイズ
UNIT cbSize pfm2(0) cbSize 0 4
DWORD dwMask pfm2(1) dwMask 4 4
WORD wNumbering
WORD wReserved
上位ワード
下位ワード

pfm2(2)

wNumbering
wReserved
8
10
2
2
LONG    dxStartIndent pfm2(3) dxStartIndent 12 4
LONG    dxRightIndent pfm2(4) dxRightIndent 16 4
LONG    dxOffset pfm2(5) dxOffset 20 4
WORD wAlignment
SHORT cTabCount
上位ワード
下位ワード

pfm2(6)

wAlignment
cTabCount
24
26
2
2
LONG    rgxTabs[MAX_TAB_STOPS] pfm2(7) ~ pfm2(38) rgxTabs 28 128
LONG    dySpaceBefore pfm2(39) dySpaceBefore 156 4
LONG    dySpaceAfter pfm2(40) dySpaceAfter 160 4
LONG    dyLineSpacing pfm2(41) dyLineSpacing 164 4
SHORT    sStyle
BYTE  bLineSpacingRule
BYTE  bOutlineLevel
上位ワード
上位バイト
下位バイト

下位ワード

pfm2(42)

sStyle
bLineSpacingRule
bOutlineLevel
168
170
171
2
1
1
WORD    wShadingWeight
WORD    wShadingStyle
上位ワード
下位ワード

pfm2(43)

wShadingWeight
wShadingStyle
172
174
2
2
WORD    wNumberingStart
WORD    wNumberingStyle
上位ワード
下位ワード

pfm2(44)

wNumberingStart
wNumberingStyle
176
178
2
2
WORD    wNumberingTab
WORD    wBorderSpace
上位ワード
下位ワード

pfm2(45)

wNumberingTab
wBorderSpace
180
182
2
2
WORD    wBorderWidth
WORD    wBorders
上位ワード
下位ワード

pfm2(46)

wBorderWidth
wBorders
184
186
2
2

 

適当に書いてみましたが、こんな感じかな・・?

あっていればいいけれど。

 

んー・・。それより前に疑問なのが、

PARAFORMAT2 構造体をHSPで使う人って居るのかなぁ・・。なんて。

もしかして自分だけかも?なんて思いますが、

一応需要があったらいいなー。と

 

HSPで書く人への補足

cbSize は 188 バイト。

それと、ワード・バイトの書き込みは、

wpoke とか poke とか使うと楽かも。

逆は wpeek と peek

 

そんなわけで、一応書いてみると、

 

dim pfm2,47

pfm2(0)=188

 

ってなかんじで。

 

そんなわけで、

・間違いを発見した人

-> すぐに教えてください。

・これを見て書く人

-> 少しでも生かせれば幸いです。