コールバックでマシン語を埋め込む必要があるときの、
ダンプコードからのHSP コードへの変換プログラム。
なんでこう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 | ||||||||||||||||||||
|
pfm2(2) |
|
|
|
||||||||||||||||||||
LONG dxStartIndent | pfm2(3) | dxStartIndent | 12 | 4 | ||||||||||||||||||||
LONG dxRightIndent | pfm2(4) | dxRightIndent | 16 | 4 | ||||||||||||||||||||
LONG dxOffset | pfm2(5) | dxOffset | 20 | 4 | ||||||||||||||||||||
|
pfm2(6) |
|
|
|
||||||||||||||||||||
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 | ||||||||||||||||||||
|
pfm2(42) |
|
|
|
||||||||||||||||||||
|
pfm2(43) |
|
|
|
||||||||||||||||||||
|
pfm2(44) |
|
|
|
||||||||||||||||||||
|
pfm2(45) |
|
|
|
||||||||||||||||||||
|
pfm2(46) |
|
|
|
適当に書いてみましたが、こんな感じかな・・?
あっていればいいけれど。
んー・・。それより前に疑問なのが、
PARAFORMAT2 構造体をHSPで使う人って居るのかなぁ・・。なんて。
もしかして自分だけかも?なんて思いますが、
一応需要があったらいいなー。と
HSPで書く人への補足
cbSize は 188 バイト。
それと、ワード・バイトの書き込みは、
wpoke とか poke とか使うと楽かも。
逆は wpeek と peek
そんなわけで、一応書いてみると、
dim pfm2,47
pfm2(0)=188
ってなかんじで。
そんなわけで、
・間違いを発見した人
-> すぐに教えてください。
・これを見て書く人
-> 少しでも生かせれば幸いです。