------------------------------------------------------------------------- -------------------------------------------------------------------------   MMマム(mam)マクロキット Ver 7.13  このマクロキットにはMMエディタでマクロを使用するために必要な DLL  の MamMacro.dll や  ダイアログ形式のマクロを作るときに使用できるヘッダファイルや  ダイアログ形式のサンプルマクロ等が含まれています。 2002/09/25   (C) 宮崎 嘉明 ------------------------------------------------------------------------- ------------------------------------------------------------------------- ●添付ファイル(12点)の説明 ・MamMacro.txt  このファイルです。 ・MamMacro.dll  MMエディタでマクロ(*.mam)を実行するために必要な DLL 本体です。  マムマクロでは、C言語のフルセットでの記述が出来ます。 ・OpenMam.mam  MMマムマクロ[マクロファイル一覧より開くマクロ(ビュア付き)]  このファイルは、ダイアログを操作するサンプルマクロです。  リストボックスにマクロの一覧が表示されますので、開きたいマクロをダブル  クリックするか[実行]ボタンを押すことでそのマクロファイルを開きます。  また現在選択されているマクロの内容はビューにてその内容をリアルに見る  ことが出来ます。 ・OpenMam2.mam  このファイルは、モードレスダイアログのサンプルマクロです。  上記の、OpenMam.mam マクロをモードレスダイアログに作り替えたものです。  ダイアログを閉じることなく(実行した状態で)MMの編集ウインドウ等へ  移動して別の操作をすることが出来ます。 ・ExecMam.mam  MMマムマクロ[マクロファイルの[開く]と[実行]]  このファイルはダイアログを操作するサンプルマクロ OpenMam.mam へ  マクロの [実行] 機能を付加した機能拡張版です。  また、このマクロでは大域変数を使わずに DialogParam();関数を使って  コールバック関数へ構造体のパラメータを渡して交信しています。 ・ListView.mam  このファイルは、リストビューを操作するためのサンプルマクロです。  リストビューを使ったマクロを作成する場合の参考にされて下さい。 ・Mmdialog.h  このファイルはダイアログ関係の #define定義を集めたものです。  マムマクロでダイアログを制御する場合にインクルードして使ってください。  マクロの最初で、#include としてして使います。  上記の OpenMam.mam, OpenMam2.mam 等のマクロでも使用しています。 ・Mmlv.h  このファイルは リストビューを操作するための、構造体やマクロ関数の   #define定義を集めたものです。  マムマクロでリストビューを操作する場合はこのヘッダファイルをインクルード  して使ってください。  そうするとこの中に定義された #define定義の ListView_InsertItem();等の  マクロ関数が使用出来ます。  上記の ListView.mam マクロでも使用しています。 ・ComDlg.h  このファイルはコモンダイアログ関係の #define定義を集めたものです。  マムマクロでコモンダイアログを使用する場合にインクルードして使ってください。  マクロの最初で、#include として使います。 ・OpenMam.hlp  上記の OpenMam.mam OpenMam2.mam マクロで使用するヘルプファイルです。   ・ExecMam.hlp  上記の ExecMam.mam マクロで使用するヘルプファイルです。   ・ListView.hlp  上記の ListView.mam マクロで使用するヘルプファイルです。   ------------------------------------------------------------------------- [MMマムマクロについて]  MMマムマクロではC言語のフルセット(ANSI-C)を使ってマクロが作れます。  拡張子は *.mam として作成して下さい。  マクロの実行には MamMacro.dll を使います。 「インストール」 MamMacro.dll は必ずMMエディタと同じフォルダへ置いて下さい。 そうしないとマクロの実行が出来ません。 また、上記のサンプルマクロ(*.mam) 及び ヘッダファイル(*.h) Mmdialog.h, Comdlg.h, Mmlv.h は、マクロフォルダまたは、MMエディタ のあるフォルダへ置いて下さい。 これらのヘッダファイル(*.h) は、ダイアログを使うマクロで使用します。  マムマクロの使い方等についてはMMエディタの メニュー -> [マクロ] -> [MMマムマクロのヘルプ] をご覧下さい。 ------------------------------------------------------------------------- ------------------------------------------------------------------------- MMマム(mam)マクロ 主なバージョンアップ内容の履歴 ------------------------------------------------------------------------- 2002/09/25 Ver 7.13 ・MamMacro.dll の内部をカスタマイズ 2001/12/18 Ver 7.05 ・マクロ関数 UnicodeText();IsHeadLine();NextHeadLine();PrevHeadLine();を追加 2001/05/09 Ver 7.00 ・サンプルマクロ OpenMam.mam OpenMam2.mam ExecMam.mam を長いファィル名  を表示できるように改良 ・インクルードファイル(*.h)をMMの起動フォルダからも読むようにした  (現在はマクロのあるフォルダのみから読んでいた) 2001/01/19 Ver 6.70 ・ファイルマッピング関連のWindowsAPI関数を追加 HANDLE CreateFileMapping(HANDLE hFile, SECURITY_ATTRIBUTES *lpFileMappingAttributes, DWORD flProtect, DWORD dwMaximumSizeHigh, DWORD dwMaximumSizeLow, LPCSTR lpName); HANDLE OpenFileMapping(DWORD dwDesiredAccess, BOOL bInheritHandle, LPCSTR lpName); void *MapViewOfFile(HANDLE hFileMappingObject, DWORD dwDesiredAccess, DWORD dwFileOffsetHigh, DWORD dwFileOffsetLow, DWORD dwNumberOfBytesToMap); BOOL FlushViewOfFile(void *lpBaseAddress, DWORD dwNumberOfBytesToFlush); BOOL UnmapViewOfFile(void *lpBaseAddress); 2000/12/13 Ver 6.68 ・typedef宣言 HKEY の追加 ・WindowsAPI関数を追加 LONG RegCreateKeyEx(HKEY hKey, LPCSTR lpSubKey, DWORD Reserved, LPSTR lpClass, DWORD dwOptions, DWORD samDesired, SECURITY_ATTRIBUTES *lpSecurityAttributes, HKEY *phkResult, DWORD *lpdwDisposition); LONG RegOpenKeyEx(HKEY hKey, LPCSTR lpSubKey, DWORD ulOptions, DWORD samDesired, HKEY *phkResult); LONG RegDeleteKey(HKEY hKey, LPCSTR lpSubKey); LONG RegDeleteValue(HKEY hKey, LPCSTR lpValueName); LONG RegEnumKey(HKEY hKey, DWORD dwIndex, LPSTR lpName, DWORD cbName); LONG RegFlushKey(HKEY hKey); LONG RegQueryValueEx(HKEY hKey, LPCSTR lpValueName, DWORD *lpReserved, DWORD *lpType, BYTE *lpData, DWORD *lpcbData); LONG RegSetValueEx(HKEY hKey, LPCSTR lpValueName, DWORD Reserved, DWORD dwType, BYTE* lpData, DWORD cbData); LONG RegCloseKey(HKEY hKey); 2000/09/20 Ver 6.66 ・C言語ライブラリ関数 printf();を使えるようにした printf();は現カーソル位置への出力となります ・typedef宣言 HMODULE の追加 ・WindowsAPI関数を追加 HWND GetForegroundWindow(void); HWND GetActiveWindow(void); BOOL SetForegroundWindow(HWND hWnd); HWND SetActiveWindow(HWND hWnd); BOOL PlaySound(LPCSTR pszSound, HMODULE hmod, DWORD fdwSound); LPSTR CharUpper(LPSTR lpsz); DWORD CharUpperBuff(LPSTR lpsz, DWORD cchLength); LPSTR CharLower(LPSTR lpsz); DWORD CharLowerBuff(LPSTR lpsz, DWORD cchLength); LPSTR CharNext(LPCSTR lpsz); LPSTR CharPrev(LPCSTR lpszStart, LPCSTR lpszCurrent); 2000/07/03 Ver 6.63 ・WindowsAPI関数を追加 HWND CreateUpDownControl(DWORD dwStyle, int x, int y, int cx, int cy, HWND hParent, int nID, HINSTANCE hInst, HWND hBuddy, int nUpper, int nLower, int nPos); HWND CreateWindowEx(DWORD dwExStyle, LPCSTR lpClassName, LPCSTR lpWindowName, DWORD dwStyle, int X, int Y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, void *lpParam); HANDLE CreateFile(LPCSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, SECURITY_ATTRIBUTES *lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile); HINSTANCE ShellExecute(HWND hwnd, LPCSTR lpOperation, LPCSTR lpFile, LPCSTR lpParameters, LPCSTR lpDirectory, int nShowCmd); DWORD GetTickCount(void); DWORD WaitForMultipleObjects(DWORD nCount, HANDLE *lpHandles, BOOL bWaitAll, DWORD dwMilliseconds); BOOL CloseHandle(HANDLE hObject); BOOL MessageBeep(UINT uType); 2000/05/09 Ver 6.60 ・コモンダイアログ関係のWindowsAPI関数を追加 BOOL GetOpenFileName(OPENFILENAME *lpofn); BOOL GetSaveFileName(OPENFILENAME *lpofn); BOOL ChooseColor(CHOOSECOLOR *lpcc); ・typedef宣言の追加 OPENFILENAME; CHOOSECOLOR; ・新サンプルマクロ ExecMam.mam を添付 ・ヘッダファィル ComDlg.h を添付 2000/04/10 Ver 6.50 ・音声読み上げのための マクロ関数 Onsei(); OnseiOut(); を追加 ・マクロ関数 DdeInitiate(); DdeExecute(); DdePoke(); DdeRequest(); DdeSetTimeout(); DdeTerminate(); SelConvStr(); GetFolder2(); を追加 2000/02/23 Ver 6.40 ・プロセス関係のWindowsAPI関数を追加 BOOL CreateProcess(LPCSTR, LPSTR, void*, void*, BOOL, DWORD, void*, LPCSTR, STARTUPINFO*, PROCESS_INFORMATION*); DWORD WaitForSingleObject(HANDLE hHandle, DWORD dwMilliseconds); BOOL GetExitCodeProcess(HANDLE hProcess, DWORD* lpExitCode); BOOL WriteFile(HANDLE hFile, void* lpBuffer, DWORD nNumber, void* lpNumberOf, void* lpOverlapped); BOOL ReadFile(HANDLE hFile, void* lpBuffer, DWORD nNumber, void* lpNumberOf, void* lpOverlapped); HANDLE GetStdHandle(DWORD nStdHandle); BOOL SetStdHandle(DWORD nStdHandle, HANDLE hHandle); ・typedef宣言の追加 PROCESS_INFORMATION; STARTUPINFO; 2000/01/12 Ver 6.30 ・モードレスダイアログ作成のための関数 MlDialog(); WaitForDialog(); と  関数 OpenReadOnly();を追加 ・モードレスダイアログのサンプルマクロ OpenMam2.mam を添付 99/12/06 Ver 6.21 ・MM内部のアイコン配置の順序が変わったのを以前の順序へ戻した のに対応 99/12/01 Ver 6.20 ・リストビュー関連の #define宣言を集めた mmlv.h を添付 ・リストビューを操作するサンプルマクロ ListView.mam を添付 ・typedef宣言の追加 HINSTANCE; COLORREF; HDC; HCURSOR; HBRUSH; HPEN; HBITMAP; HICON; HFONT; HGDIOBJ; HIMAGELIST; ・ImageList関係のWindowsAPI関数を追加 HIMAGELIST ImageList_Create(int cx, int cy, UINT flags, int cInitial, int cGrow); BOOL ImageList_Destroy(HIMAGELIST himl); int ImageList_GetImageCount(HIMAGELIST himl); int ImageList_Add(HIMAGELIST himl, HBITMAP hbmImage, HBITMAP hbmMask); int ImageList_ReplaceIcon(HIMAGELIST himl, int i, HICON hicon); COLORREF ImageList_SetBkColor(HIMAGELIST himl, COLORREF clrBk); COLORREF ImageList_GetBkColor(HIMAGELIST himl); BOOL ImageList_SetOverlayImage(HIMAGELIST himl, int iImage, int iOverlay); ・GDI関係のWindowsAPI関数を追加 HDC GetDC(HWND hWnd); HDC GetWindowDC(HWND hWnd); int ReleaseDC(HWND hWnd, HDC hDC); HGDIOBJ SelectObject(HDC, HGDIOBJ); BOOL DeleteObject(HGDIOBJ); HGDIOBJ GetStockObject(int); HBITMAP LoadBitmap(HINSTANCE hInstance, LPCSTR lpBitmapName); HCURSOR LoadCursor(HINSTANCE hInstance, LPCSTR lpCursorName); HICON LoadIcon(HINSTANCE hInstance, LPCSTR lpIconName); COLORREF GetBkColor(HDC); COLORREF SetBkColor(HDC, COLORREF); COLORREF GetTextColor(HDC); COLORREF SetTextColor(HDC, COLORREF); HBRUSH CreateSolidBrush(COLORREF); HBRUSH CreatePatternBrush(HBITMAP); HPEN CreatePen(int, int, COLORREF); BOOL MoveToEx(HDC, int, int, POINT*); BOOL LineTo(HDC, int, int); BOOL TextOut(HDC, int, int, LPCSTR, int); BOOL ExtTextOut(HDC, int, int, UINT, RECT*, LPCSTR, UINT, int*); DWORD GetSysColor(int nIndex); HBRUSH GetSysColorBrush(int nIndex); int FillRect(HDC hDC, RECT *lprc, HBRUSH hbr); int FrameRect(HDC hDC, RECT *lprc, HBRUSH hbr); 99/11/10 Ver 6.11 ・ファイル関係のWindowsAPI関数を追加 BOOL RemoveDirectory(LPCSTR lpPathName); BOOL CreateDirectory(LPCSTR lpPathName, SECURITY_ATTRIBUTES *lpSecurityAttributes); HANDLE FindFirstFile(LPCSTR lpFileName, WIN32_FIND_DATA *lpFindFileData); BOOL FindNextFile(HANDLE hFindFile, WIN32_FIND_DATA *lpFindFileData); BOOL FindClose(HANDLE hFindFile); LONG CompareFileTime(FILETIME *lpFileTime1, FILETIME *lpFileTime2); BOOL GetFileTime(HANDLE hFile, FILETIME *lpftCreation, FILETIME *lpftLastAccess, FILETIME *lpftLastWrite); BOOL SetFileTime(HANDLE hFile, FILETIME *lpftCreation, FILETIME *lpftLastAccess, FILETIME *lpftLastWrite); ・typedef宣言の追加 #pragma link C typedef WIN32_FIND_DATA; #pragma link C typedef SECURITY_ATTRIBUTES; #pragma link C typedef PROCESS_INFORMATION; 99/11/01 Ver 6.10 ・ダイアロク変数 DlgOkFlg; 関数 GetFolder(); WindowsAPI関数 GetFocus(); SetFocus(); PostMessage(); を追加 99/09/25 Ver 6.00 ・int DialogParam(); 関数を追加 99/09/01 Ver 4.00 ・ヘッダファイル(mmdialog.h)の更新(#defineの追加) ・DIALOG();関数での captionキャプション名の文字数の制限をなくした 99/07/21 Ver 3.00 ・ダイアログを使ったサンプルマクロ(OpenMam.mam)を添付 ・typedef宣言の追加 typedef long LONG; typedef long LRESULT; ・ダイアログ関係のWindowsAPI関数を追加 BOOL CheckDlgButton(HWND hDlg, int nIDButton, UINT uCheck); BOOL CheckRadioButton(HWND hDlg, int nIDFirstButton, int nIDLastButton, int nIDCheckButton); LRESULT DefDlgProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam); int DlgDirList(HWND hDlg, LPSTR lpPathSpec, int nIDListBox, int nIDStaticPath, UINT uFileType); int DlgDirListComboBox(HWND hDlg, LPSTR lpPathSpec, int nIDComboBox, int nIDStaticPath, UINT uFiletype); BOOL DlgDirSelectEx(HWND hDlg, LPSTR lpString, int nCount, int nIDListBox); BOOL EndDialog(HWND hDlg, int nResult); int GetDlgCtrlID(HWND hWnd); HWND GetDlgItem(HWND hDlg, int nIDDlgItem); UINT GetDlgItemInt(HWND hDlg, int nIDDlgItem, BOOL *lpTranslated, BOOL bSigned); UINT GetDlgItemText(HWND hDlg, int nIDDlgItem, LPSTR lpString, int nMaxCount); long GetDialogBaseUnits(void); HWND GetNextDlgGroupItem(HWND hDlg, HWND hCtl, BOOL bPrevious); HWND GetNextDlgTabItem(HWND hDlg, HWND hCtl, BOOL bPrevious); UINT IsDlgButtonChecked(HWND hDlg, int nIDButton); LONG SendDlgItemMessage(HWND hDlg, int nIDDlgItem, UINT Msg, WPARAM wParam, LPARAM lParam); BOOL SetDlgItemInt(HWND hDlg, int nIDDlgItem, UINT uValue, BOOL bSigned); BOOL SetDlgItemText(HWND hDlg, int nIDDlgItem, LPCSTR lpString); BOOL ClientToScreen(HWND hWnd, POINT* lpPoint); BOOL ScreenToClient(HWND hWnd, POINT* lpPoint); 99/06/28 Ver 2.00 ・構文エラーがあるときは、マクロの実行はしないで終わるように改良 ・関数を追加 SaveAs(); ・WindowsAPI関数を追加 HWND FindWindowEx(); HWND ShowWindow(); BOOL DeleteFile(); HWND GetParent(); HWND GetNextWindow(); 99/06/15 Ver 1.00 ・Ver1.00を発表