(let (ar)
  (setq array '("string" "文字列"))
  (setq ar "results:\n")
  (dolist (item array)
    (setq chunked–string (si:make–string–chunk item))
    (setq ch–len (si:chunk–size chunked–string))
    (setq ar (concat ar "\n" (format nil "ch–str\t\t>>~A\t:length>>~D\nnormal–str\t>>~A\t:length>>~D"
                                     (si:unpack–string chunked–string 0 ch–len) ch–len
                                     item (length item)))))
  (insert ar))
=>results:
 
ch–str      >>string    :length>>7
normal–str  >>string    :length>>6
ch–str      >>文字列    :length>>7
normal–str  >>文字列    :length>>3
どうやらGetTextExtentPoint32の問題じゃなくて、ExtTextOutに渡すパラメータが間違っていた模様(^^;(∗define–dll–entry BOOL ExtTextOut (HDC int int UINT (RECT ∗) LPCSTR UINT (INT ∗)) "gdi32" "ExtTextOutA")とある。
∗∗∗ edict–orig.l        Tue Nov  4 03:59:11 2003
––– edict.l     Tue Nov  4 04:21:10 2003
∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
∗∗∗ 7,12 ∗∗∗∗
––– 7,14 ––––
 
  (in–package "editor")
 
+ (require "popwindow")
+
  (export '(∗edict–dictionary–path∗
          lookup–e2j–dictionary–word lookup–idiom–dictionary–word
          lookup–j2e–dictionary–word lookup–reading–dictionary–word
∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
∗∗∗ 16,21 ∗∗∗∗
––– 18,24 ––––
          lookup–j2e–dictionary lookup–reading–dictionary
            toggle–edict–view–style ∗edict–display–view–style∗
            edict–view–style–popup edict–view–style–box edict–view–style–buffer
+                 edict–view–style–box edict–view–style–popwindow
            copy–edict–to–clipboard copy–edict–or–selection–to–clipboard
          ∗edict–conjugation–regexp∗ edict–mode edict–mouse–lookup))
 
∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
∗∗∗ 168,173 ∗∗∗∗
––– 171,177 ––––
      (case ∗edict–display–view–style∗
        (:popup (setq ∗edict–display–view–style∗ :box))
        (:box (setq ∗edict–display–view–style∗ :buffer))
+         (:popwindow (setq ∗edict–display–view–style :popwindow))
        (t (setq ∗edict–display–view–style∗ :popup)))))
 
  (defun edict–view–style–popup ()
∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
∗∗∗ 185,190 ∗∗∗∗
––– 189,199 ––––
    (toggle–edict–view–style :buffer)
    t)
 
+ (defun edict–view–style–popwindow ()
+   (interactive)
+   (toggle–edict–view–style :popwindow)
+   t)
+
  (let (edict–string)
    (defun edict–display (string)
      (setq edict–string string)
∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
∗∗∗ 197,202 ∗∗∗∗
––– 206,213 ––––
         (setq string (string–right–trim " \n\t" string))
         (when (eq :cancel (message–box string "∗dictionary∗" '(:ok–cancel) :button2 "Copy" :no–wrap nil))
           (copy–to–clipboard string)))
+         (:popwindow
+          (user::pop–window–pop string))
        (t (let ((w (selected–window))
                 (buffer (selected–buffer)))
             (with–output–to–temp–buffer (" ∗dictionary∗")
こんな感じかな。hoge huga_end(defun Diary-newline-and-indent (&optional (arg 1))
  (interactive "*p")
  (let (current)
    (setq current (point))
    (goto-bol)
    (if (looking-at "\\(_End\\|_en\\|_nd\\|_ed\\)")
        (progn
          (delete-region (match-beginning 0) (match-end 0))
          (insert "_end")
          (goto-eol)
          (insert #\LFD arg))
      (progn
        (goto-char current)
        (insert #\LFD arg))))
  (Diary-indent-line))(if (looking-at ".*\\(_End\\|_en\\|_nd\\|_ed\\)$")
    (progn
      (delete-region (match-beginning 1) (match-end 1));;    (format (imapstream-stream stream) "~A SEARCH CHARSET ISO-2022-JP ~A {~D}~%"
    (format (imapstream-stream stream) "~A SEARCH ~A {~D}~%"
        (imap4-tag-increment stream) opts len)
;;    (format *imap4-stream-output* "~A SEARCH CHARSET ISO-2022-JP ~A {~D}~%"
    (format *imap4-stream-output* "~A SEARCH ~A {~D}~%"
        (imap4-tag-current stream) opts len)(defun Diary-newline-and-indent (&optional (arg 1))
  (interactive "*p")
  (let (current)
    (if (eolp)
        (progn
          (setq current (point))
          (goto-bol)
          (if (looking-at ".*\(_End\|_en\|_nd\|_en\|_ed\)$")
              (progn
                (delete-region (match-beginning 1) (match-end 1))
                (insert "_end")
                (insert #\LFD))
            (progn
              (goto-char current)
              (insert #\LFD))))
      (progn
        (insert #\LFD))))
  (Diary-indent-line));;IMAP folder auto-check
;;;
;; check interval sec
(setq *kamail-imap4-folder-auto-check-interval* 600)
(defun kamail-auto-folder-check ()
  (save-window-excursion
   (set-window *kamail-window-folder*)
   (set-buffer *kamail-buffer-folder*)
   (kamail-folder-status-all))
  (refresh-screen))
 
(defun stop-folder-check ()
  (stop-timer 'kamail-auto-folder-check))
 
(start-timer *kamail-imap4-folder-auto-check-interval* 'kamail-auto-folder-check)
 
(add-hook '*kamail-exit-hook* 'stop-folder-check);;IMAP folder auto-check
;;;
;; check interval sec
(setq *kamail-imap4-folder-auto-check-interval* 600)
(defun kamail-auto-folder-check ()
  (save-window-excursion
    (set-window *kamail-window-folder*)
    (set-buffer *kamail-buffer-folder*)
    ;; IMAPサーバ上のinboxが2行目にあると仮定(笑)
    (goto-line 2)
    (kamail-folder-status-this)
    (goto-bol)
    (if (not (looking-for "(0)"))
        (progn
          (kamail-select-folder-this)
          (kamail-auto-refile t)
          (kamail-close-folder)
          (kamail-folder-status-all)))
    )
  (refresh-screen))WINMMAPI BOOL WINAPI PlaySoundW(LPCWSTR pszSound, HMODULE hmod, DWORD fdwSound)(c:define-dll-entry winapi::BOOL PlaySoundW (winapi::LPCSTR winapi::HMODULE winapi::DWORD) "winmm")(eval-when (:compile-toplevel :load-toplevel :execute)
  (require "foreign") (require "wip/winapi"))
 
(c:define-dll-entry winapi::BOOL PlaySoundW (winapi::LPCSTR winapi::HMODULE winapi::DWORD) "winmm")
(c:define-dll-entry winapi::BOOL sndPlaySoundW (winapi::LPCSTR winapi::UINT) "winmm")
 
(setf soundfile (si:make-string-chunk "C:\\WINDOWS\\MEDIA\\chimes.wav"))
(PlaySoundW soundfile 0 #x00020000)
(sndPlaySoundW soundfile #x00020000);;IMAP folder auto-check
;;;
;; check interval sec
(require "wip/winapi")
(require "foreign")
 
(c:define-dll-entry winapi::BOOL PlaySound (winapi::LPCSTR winapi::HMODULE winapi::DWORD) "winmm" "PlaySoundA")
(setf soundfile (si:make-string-chunk "C:\\WINDOWS\\MEDIA\\chimes.wav"))
 
(setq *kamail-imap4-folder-auto-check-interval* 600)
(defun kamail-auto-folder-check ()
  (interactive)
  (save-window-excursion
    (set-window *kamail-window-folder*)
    (set-buffer *kamail-buffer-folder*)
    (goto-line 2)
    (kamail-folder-status-this)
    (goto-bol)
    (if (not (looking-for "(0)"))
        (progn
          (kamail-select-folder-this)
          (kamail-auto-refile t)
          (kamail-close-folder)
          (PlaySound soundfile 0 #x00020000)
          (kamail-folder-status-all)))
    )
  (refresh-screen))
 
(defun stop-folder-check ()
  (stop-timer 'kamail-auto-folder-check))
 
(start-timer *kamail-imap4-folder-auto-check-interval* 'kamail-auto-folder-check)
 
(add-hook '*kamail-exit-hook* 'stop-folder-check)
 
;; imap4 folder check and refile
(global-set-key '(#\C-c #\s) 'kamail-auto-folder-check);;; open url to browser
;;;
;; use mozilla
;;(setq browser "H:\MozillaFirebird\MozillaFirebird-0.7-win32\MozillaFirebird\MozillaFirebird.exe")
;; use default browser
(setq browser (car (split-string (read-registry "http\shell\open\command" "" :classes-root) #\  nil)))
 
(setq *url-chars* "-a-zA-Z0-9_/~.#@%?&=;+(),'$!*:")
 
(defun open-browser ()
  (interactive)
  (let (url)
    (if (pre-selection-p)
        (setq url (buffer-substring (selection-mark) (selection-point))))
    (if (stringp url)
        (call-process (concat browser " -url \"" url "\""))
      (progn
        (setq url (get-url))
        (call-process (concat browser " -url \"" url "\""))))))
 
(defun get-url ()
  (apply 'buffer-substring
         (save-excursion
           (list (progn
                   (or (skip-chars-forward *url-chars*)
                       (skip-chars-backward *url-chars*))
                   (point))
                 (progn
                   (skip-chars-backward *url-chars*)
                   (point))))))
 
(global-set-key '(#\C-c #\b #\o) 'open-browser)