[xyzzy:08724] address 参照の解決について
- Subject: [xyzzy:08724] address 参照の解決について
- From: OHKUBO Hiroshi <konata@xxxxxxxxxxxxx>
- X-mailer: EdMax Ver2.85.3F
皆様こんにちは。OHKUBO Hiroshi です。
ひょんなことから、フォントリストの一覧を取得しようとしているのですが、
慣れないことをしているためあっさりとつまってしまいました。
現在 win32api の EnumFontFamiliesEx 関数から呼び出される
EnumFontFamExProc コールバック関数でフォント一覧を取得しようとしています。
行いたいことの C と lisp での対応は以下の通りです。
------------------------------------------------------------
int CALLBACK EnumFontFamExProc(ENUMLOGFONTEX *lpelfe,
NEWTEXTMETRICEX *lpntme,
int FontType,
LPARAM lParam) {
printf("%s\n", lpelfe->elfLogFont.lfFaceName)
return TRUE;
}
------------------------------------------------------------
(in-package "win-user")
(defun-c-callable int enum-font-fam-ex-proc
(((ENUMLOGFONTEX *) lpelfe) ((NEWTEXTMETRICEX *) lpntme) (int FontType) (LPARAM lParam))
(format t "~S~%" "?????");; <-
(return-from enum-font-fam-ex-proc 1))
------------------------------------------------------------
教えていただきたいことは、lpelfe->elfLogFont に対応するコードをどのように
lisp で記述するかということです。
si::address-of 関数で chunk から対応するアドレスを取得できるようですが、
アドレスから chunk を作成するにはどうすればよいか、直感だけでは
たどり着けませんでした。(^^;;
ご指導の程宜しくお願いいたします。
---
OHKUBO Hiroshi
konata@xxxxxxxxxxxxx
http://members.tripod.co.jp/ohkubo/index.html