home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOS/V Power Report 1998 March
/
VPR9803B.ISO
/
APUPDATE
/
VC
/
Tx300b
/
TX300B.LZH
/
WZICON.C
< prev
Wrap
Text File
|
1997-06-15
|
19KB
|
666 lines
// WZ Icon
// Thanks dieさん
// 95/04/18 alpha version
// /04/21 自分自身で閉じたときに対応
// /04/23 位置保存機能追加
// /05/01 ファイルヒストリなど追加
// /05/07 ファイルオープン時のデフォルトフィルタ対応
//2.94 970122 高速オープン対応
//2.98 970307 設定ダイアログ追加
#pragma TXE
#include <windows.h>
#include <windowsx.h>
#include "prof.h"
#import "shellapi" // #include "shellapi.h"だとTCWのヘッダファイルを見に行ってしまう
#include "dialog.h"
#define WZSC_NEWFILE 1001
#define WZSC_OPENFILE 1002
#define WZSC_GREP 1003
#define WZSC_SETUP 1004
#define WZSC_RESTOREPOS 1005
#define WZSC_PRJOPEN 1006
#define WZSC_TOPMOST 1007 // 950516 TY
#define WZSC_OPENFILEBODY 1008 //1.00C TY
#define WZSC_CONFIG 1009 //2.98 970307
#define WZSC_ABOUT 1010 //3.00B1 970612
#define WZSC_DIRECTORYFIRST 1500 // 950513 TY
#define WZSC_HISTORYFIRST 2000
#define WM_WZICON_OPENMENU (WM_TXUSER + 0)
#define WM_TRAY_CALLBACK (WM_TXUSER + 1)
#define WM_WZICON_OPENMENUPRIM (WM_TXUSER + 2) //3.00B1 970612
static const mchar szApp[] = "WZ Icon";
static const mchar szKeySavePos[] = "savepos";
static const mchar szKeyLeft[] = "left";
static const mchar szKeyTop[] = "top";
static const mchar szForceMax[] = "forcemax";
// 950516 TY
static const mchar szKeyTopMost[] = "topmost";
static TX* _textWzicon; //2.94 970121 WZ Icon text
static HMENU _hmenuFiler; //2.94 970122 "ファイラー"サブメニューハンドル(参照専用)
// 設定内容変数
BOOL g_fCanClose = FALSE;
BOOL g_fSavePos;
int g_nSaveLeft;
int g_nSaveTop;
int g_nHistMax;
// 950513 TY
int g_nDirMax = 10;
BOOL g_fTopMost; // 常に手前に表示
#ifdef __FLAT__
//1.00H4 タスクバーのアイコンになるようにした
void TrayMessage( HWND hWnd, UINT message)
{
if (!_fwin40) return;
NOTIFYICONDATA tnd;
strcpy(tnd.szTip,"WZ Editor");
switch(message) {
case NIM_ADD: {
tnd.uFlags = NIF_MESSAGE|NIF_ICON|NIF_TIP;
break;
}
case NIM_MODIFY: {
tnd.uFlags = NIF_TIP;
break;
}
case NIM_DELETE: {
tnd.uFlags = 0;
break;
}
}
tnd.uID = (UINT)IDI_WINLOGO;
tnd.cbSize = sizeof(NOTIFYICONDATA);
tnd.hWnd = hWnd;
tnd.uCallbackMessage = WM_TRAY_CALLBACK;
//
mchar szmodulename[CCHPATHNAME];
GetModuleFileName(_textWzicon->hInstance,szmodulename,CCHPATHNAME);
HICON hiconBig;
HICON hicon;
ExtractIconEx(szmodulename,0,&hiconBig,&hicon,1);
tnd.hIcon = hicon;
//
Shell_NotifyIcon(message, &tnd);
}
#endif
// 設定
void ReadProfile(void)
{
TxProfile prof;
profWzIniNew(&prof, szApp);
g_fSavePos = (BOOL)profReadInt(&prof, szKeySavePos, FALSE);
g_fTopMost = (BOOL)profReadInt(&prof, szKeyTopMost, FALSE);
g_nSaveLeft = profReadInt(&prof, szKeyLeft, 0);
g_nSaveTop = profReadInt(&prof, szKeyTop, 0);
g_nHistMax = profReadInt(&prof, szForceMax, _textWzicon->nDispFileHist);
profDelete(&prof);
}
void WriteProfile(void)
{
TxProfile prof;
profWzIniNew(&prof, szApp);
RECT rc;
GetWindowRect(_textWzicon->hwndbase, &rc);
g_nSaveLeft = rc.left;
g_nSaveTop = rc.top;
profWriteInt(&prof, szKeySavePos, (int)g_fSavePos);
profWriteInt(&prof, szKeyTopMost, (int)g_fTopMost);
profWriteInt(&prof, szKeyLeft, g_nSaveLeft);
profWriteInt(&prof, szKeyTop, g_nSaveTop);
profDelete(&prof);
}
static void FlushTopmost(void)
{
SetWindowPos(_textWzicon->hwndbase,
g_fTopMost? HWND_TOPMOST : HWND_NOTOPMOST,
0,0,0,0,SWP_NOMOVE|SWP_NOSIZE
);
}
//2.98 970311
static void ehFlush(void)
{
#ifdef __FLAT__
#if 1//3.00B1 970610 NT3.51でテキストキャプチャー、メールフックできなかった
TXCONFIGSHARE* shcfg = &text->share->config;
// 既にTXOP_EHSTARTしている場合は、設定をフラッシュさせる
txOp(text,TXOP_EHEND,0,0);
//
if (shcfg->fEnableEh || shcfg->fEnableEhMail) {
// START
txOp(text,TXOP_EHSTART,0,0);
}
#else
if (_fwin40) {//2.99D 970401 95/NT4.0のみにした
TXCONFIGSHARE* shcfg = &text->share->config;
// 既にTXOP_EHSTARTしている場合は、設定をフラッシュさせる
txOp(text,TXOP_EHEND,0,0);
//
if (shcfg->fEnableEh || shcfg->fEnableEhMail) {
// START
txOp(text,TXOP_EHSTART,0,0);
}
}
#endif
#endif
}
//2.98 970311 設定ダイアログ
//3.00A2 970507 NT3.51でもWZ Iconの設定ダイアログが使える様にして、メーラのフックなどの設定ができるようにした
uiConfig
{
HDIALOG hd = dialog("WZ Iconの設定");
dialogSetContexthelp(hd,TRUE);
TXCONFIGSHARE* shcfg = &text->share->config;
mchar szVkEhStart[2] = {shcfg->vkEhStart,0};
BOOL fEnableEh = shcfg->fEnableEh;//2.99B 970323
BOOL fEnableEhMail = shcfg->fEnableEhMail;//2.99B 970323
BOOL fHookReadonly = shcfg->fHookReadonly;//3.00A2 970503
#ifdef __FLAT__
dialogHeadline(hd,"メーラのフック",40);
dialogControlHelp(hd,422);
dialogCheckB(hd,"メーラのフックを行う(&M)",&shcfg->fEnableEhMail);
//2.99B 970322
dialogControlHelp(hd,423);
dialogControlGuide(hd,"ミリ秒",6);
dialogIntW(hd,"フック開始時のウェイト数(&W)",&shcfg->wtmEhmailStartWait,20,6);//2.99F 970404 5->6
dialogControlHelp(hd,424);
dialogControlGuide(hd,"ミリ秒",6);
dialogIntW(hd,"メール送信時のウェイト数(&S)",&shcfg->wtmEhmailSendWait,20,6);//2.99F 970404 5->6
//
dialogHeadline(hd,"テキストキャプチャー",40);
dialogControlHelp(hd,425);
dialogCheckB(hd,"テキストキャプチャーを行う(&T)",&shcfg->fEnableEh);
dialogControlHelp(hd,426);
dialogStrC(hd,"テキストキャプチャーキー(&K): Alt+Ctrl+",szVkEhStart,26,2,4);
//3.00A2 970503 設定により、メールのビューアーもフック、キャプチャーできるようにした
dialogHeadline(hd,"詳細",40);
dialogControlHelp(hd,499);
dialogCheckB(hd,"ビューアーもフック、キャプチャーする(&V)",&shcfg->fHookReadonly);
if (_fwinnt351) {//3.00B2 970615
dialogHeadline(hd,"表示",40);
dialogCheck(hd,"終了時位置保存(&P)",&g_fSavePos);
// dialogCheck(hd,"常に前面に表示(&O)",&g_fTopMost);// iminai
}
#else
dialogCheck(hd,"終了時位置保存(&S)",&g_fSavePos);
dialogCheck(hd,"常に前面に表示(&T)",&g_fTopMost);
#endif
if (dialogOpen(hd)) {
#ifdef __FLAT__
shcfg->vkEhStart = szVkEhStart[0];
txConfigOp(text,TXCONFIGOP_SHARESAVE,0);
#if 1//2.99B 970323 動的設定変更は不可能。フック先でエラーが起こったりする
if (
fEnableEh != shcfg->fEnableEh ||
fEnableEhMail != shcfg->fEnableEhMail ||
fHookReadonly != shcfg->fHookReadonly //3.00A2 970503
) {
#if 1//3.00A2 970507 NT3.51だと、ファイルオープンダイアログも一緒に出ちゃった
MessageBox(_textWzicon->hwndbase,"新しい設定を有効にするには、Windowsを再起動してください","WZ Icon",MB_OK);
#else
information("新しい設定を有効にするには、Windowsを再起動してください");
#endif
}
#else
ehFlush();
#endif
#endif
}
}
static BOOL _fModal;//2.99B 970322 WZ Iconでファイルオープンダイアログを複数開けてしまった
static BOOL CheckModal(void)
{
//2.99B 970322 new
if (_fModal) return TRUE;//2.99B 970322
if (_textWzicon->fDisenableForModal) {//2.99B 970322
beep();// err音
return TRUE;
}
return FALSE;
}
//3.00B1 970612 new
uiAbout
{
ABOUTINFO info;
memset(&info,0,sizeof(info));
info.szicon = "iconWzIcon";
info.szappname = "WZ Icon";
info.szversion = "version " + VER_WZEDITOR;
about(&info);
}
// フックプロシージャ
HOOKRESULT
__wndprocbase(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
//2.94 970122
if (textTarget != _textWzicon) return HOOK_CONTINUE;
TX* text = _textWzicon;
//
mchar szPath[CCHPATHNAME + 10];
switch (uMsg) {
#ifdef __FLAT__
case WM_TRAY_CALLBACK: {
WPARAM uID = wParam;
LPARAM uMouseMsg = lParam;
switch(uMouseMsg) {
case WM_LBUTTONDOWN: {
if (CheckModal()) break;//2.99B 970322
wndtxSetActive(text->hwndbase);
#if 0//2.90
PostMessage(hwnd,WM_WZICON_OPENMENU,0,0);
#else
PostMessage(hwnd, WM_SYSCOMMAND, WZSC_OPENFILEBODY, 0);
#endif
break;
}
#if 1//2.90
case WM_RBUTTONDOWN: {
if (CheckModal()) break;//2.99B 970322
wndtxSetActive(text->hwndbase);
PostMessage(hwnd,WM_WZICON_OPENMENU,0,0);
break;
}
#endif
}
return TRUE;
}
#endif
case WM_WZICON_OPENMENU: {
if (_fwin40 && GetActiveWindow() != text->hwndbase) {
//1.01A WZ32でWindows95のとき、ダイアログ表示中にメニューが開いてしまった
} else {
menuOpenMouse(GetSystemMenu(text->hwndbase,FALSE));
}
break;
}
case WM_WZICON_OPENMENUPRIM: {//3.00B1 970612
menuOpenMouse(GetSystemMenu(text->hwndbase,FALSE));
break;
}
case WM_COMMAND: {
// if ((HWND)WM_COMMAND_GetHwndCtrl(wParam,lParam) != GetSystemMenu(text->hwndbase,FALSE)) break;
}
case WM_SYSCOMMAND: {
// メニュー
UINT uID = (UINT)wParam;
if ((uID >= WZSC_HISTORYFIRST) &&
(uID < WZSC_HISTORYFIRST + g_nHistMax)) {
uID -= WZSC_HISTORYFIRST;
txOpenForkFast(
text,
histRead(HIST_FILE, histGetCount(HIST_FILE) - uID - 1)
);
} else if (WZSC_DIRECTORYFIRST <= uID && uID < WZSC_DIRECTORYFIRST + g_nDirMax) {
// 950513 TY
uID -= WZSC_DIRECTORYFIRST;
txOpenForkFast(
text,
"filer.txe -f\"" + histRead(HIST_PATH, histGetCount(HIST_PATH) - uID - 1) + "\""
);
//2.00E "-p"->"-f"
//2.00E5 -f[] -> -f""
} else {
switch (uID) {
case WZSC_NEWFILE: {
txuiOpenNew(text);//2.00B WZ Iconの新規作成の仕様を、WZ Editorと同じにした
break;
}
case WZSC_OPENFILE: {
#if 1//1.00C
PostMessage(hwnd, WM_SYSCOMMAND, WZSC_OPENFILEBODY, 0);
#else
PostMessage(hwnd, WM_QUERYOPEN, 0, 0);
#endif
break;
}
case WZSC_OPENFILEBODY: {
szPath[0] = '\0';
_fModal = TRUE;//2.99B 970322
DWORD ret = txofnGetOpenFileName(text, szPath, "ファイルを開く");
_fModal = FALSE;
if (ret) {
//1.00C WzIconのファイルでビューモードでファイルが開けなかった
mchar *szsw = "";
if (ret & TXOFN_READONLY) szsw = " --R";
if (ret & TXOFN_VIEWMODE) szsw = " -v";
txOpenForkFast(text, szPath + szsw);
}
break;
}
case WZSC_GREP: {
//1.99B IDM__GREP etc 廃止
callPost("search.grep");
break;
}
case WZSC_PRJOPEN: {
callPost("file.uiPrjOpen");//wz.mnu
break;
}
case WZSC_SETUP: {
g_fSavePos = ! g_fSavePos;
break;
}
case WZSC_TOPMOST: {
g_fTopMost = ! g_fTopMost;
FlushTopmost();
break;
}
case WZSC_CONFIG: {
uiConfig();
break;
}
case WZSC_ABOUT: {//3.00B1 970612
uiAbout();
break;
}
case WZSC_RESTOREPOS: {
SetWindowPos(
hwnd,NULL,
g_nSaveLeft,g_nSaveTop,0,0,
SWP_NOSIZE|SWP_NOZORDER
);
break;
}
default: {
if ((uID & 0xFFF0) == SC_CLOSE) {
g_fCanClose = TRUE;
if (uMsg == WM_COMMAND) {
PostMessage(hwnd,WM_CLOSE,0,0);
}
}
return HOOK_CONTINUE;
}
}
}
macroHookWndBaseReturn(0);
break;
}
case WM_INITMENUPOPUP: {
// メニュー更新
HMENU hMenu = (HMENU)wParam;
if (hMenu == GetSystemMenu(text->hwndbase,FALSE)) {// これやんないと、サブメニューにまでヒストリーが登場してしまふ
#if 0//2.98 970307
CheckMenuItem(hMenu,WZSC_SETUP,g_fSavePos ? MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(hMenu,WZSC_TOPMOST,g_fTopMost ? MF_CHECKED : MF_UNCHECKED);
#endif
int nMax = histGetCount(HIST_FILE);
int idx;
for (idx = 0;idx < g_nHistMax;idx++) {
RemoveMenu(hMenu, WZSC_HISTORYFIRST + idx, MF_BYCOMMAND);
if (idx < nMax) {
mchar chIdx = ((idx + 1) <= 9) ? (idx + 1 + '0') : ' ';
sprintf(szPath,"&%c %s",chIdx,histRead(HIST_FILE,nMax-idx-1));
AppendMenu(hMenu,MF_STRING,WZSC_HISTORYFIRST + idx,szPath);
}
}
macroHookWndBaseReturn(0);
} else if (hMenu == _hmenuFiler) {
// これやんないと、WZ EDITORディレクトリヒストリーが登場してしまふ
menuDelAll(hMenu);
int id = WZSC_DIRECTORYFIRST;
int n = histGetCount(HIST_PATH);
int i;
for (i = 0;i < 10;i++) {
if (n == 0) break;
menuStr(hMenu,"&"+chartostr('0'+i)+"\t"+histRead(HIST_PATH,--n),id++);
}
macroHookWndBaseReturn(0);
break;
}
break;
}
case WM_DROPFILES: {
#if 1
//1.01A ファイルドロップ(複数対応)
mchar szfilename[CCHPATHNAME];
int n = DragQueryFile((HDROP)wParam,-1,szfilename,cchof(szfilename));
int i;
for (i = 0;i < n;i++) {
DragQueryFile((HDROP)wParam,i,szfilename,cchof(szfilename));
txOpenForkFast(text,szfilename);
}
DragFinish((HDROP)wParam);
#else
// ファイルドロップ(一個だけ)
shellDragQueryFileOnce(
(HDROP)wParam, szPath, CCHPATHNAME);
txOpenForkFast(text, szPath);
#endif
macroHookWndBaseReturn(0);
break;
}
case WM_QUERYOPEN: {
// アイコンダブルクリック
//1.00C WzIconを「アプリケーションの切り替え」でアクティブにしたときマウスが効かなかった
//WM_QUERYOPENではダイアログを開いてはいけなかった
#ifdef __FLAT__
if (_fwin40) break;
#endif
#if 0//1.01A WZ16で、ダブルクリックで[新規作成]にするには、これを1にしてください
PostMessage(hwnd, WM_SYSCOMMAND, WZSC_NEWFILE, 0);
#else
PostMessage(hwnd, WM_SYSCOMMAND, WZSC_OPENFILEBODY, 0);
#endif
macroHookWndBaseReturn(FALSE);
break;
}
case WM_QUERYENDSESSION: {
g_fCanClose = TRUE;
return HOOK_CONTINUE;
}
case WM_TXQUERYCLOSE: {
#if 1//2.90 WM_TXQUERYCLOSEのオリジナルルーチンを通す
{
static BOOL f;
if (f) {
return HOOK_CONTINUE;
} else {
f = TRUE;
BOOL ret = SendMessage(hwnd,uMsg,wParam,lParam);
f = FALSE;
if (!ret) {
macroHookWndBaseReturn(FALSE);
return HOOK_CAPTURE;
}
}
}
#endif
WriteProfile();
#ifdef __FLAT__
TrayMessage(text->hwndbase,NIM_DELETE);
#endif
#if 1//1.00F Windows標準のタスクマネージャでWZIconを終了できなかった
macroHookWndBaseReturn(TRUE);
#else
macroHookWndBaseReturn(g_fCanClose);
#endif
break;
}
#ifdef __FLAT__ //3.00B1 970612 WZ Iconのショートカットにショートカットキーを割り当てると、そのショートカットキーを押すとWZ Iconの右クリックメニューを表示するようにした。これで出ない時(WZ Iconがアクティブウィンドウの場合)はAlt+Spaceで出る。
case WM_ACTIVATE: {
if (_fwin40) {
BOOL fActive = LOWORD(wParam);
if (fActive == WA_ACTIVE) {
if (GetParent(lParam) == hwnd) {
// WZ Iconが開いたダイアログが閉じられた場合はなにもしない
} else {
PostMessage(hwnd,WM_WZICON_OPENMENUPRIM,0,0);
}
}
}
return HOOK_CONTINUE;
}
#endif
case WM_TXCLOSE: {//3.00B2 970615
_textWzicon = NULL;
return HOOK_CONTINUE;
}
default: {
// フックしない
return HOOK_CONTINUE;
}
}
// フック済み
return HOOK_CAPTURE;
}
// メニュー設定
void CreateWZIconMenu(TX* text)
{
HMENU hMenu = GetSystemMenu(text->hwndbase,FALSE);
// SC_RESTORE は消しちゃ駄目かな?
RemoveMenu(hMenu,SC_ICON,MF_BYCOMMAND);
RemoveMenu(hMenu,SC_ZOOM,MF_BYCOMMAND);
RemoveMenu(hMenu,SC_SIZE,MF_BYCOMMAND);
if (_fwin40) {
RemoveMenu(hMenu,SC_RESTORE,MF_BYCOMMAND);
RemoveMenu(hMenu,SC_MOVE,MF_BYCOMMAND);
RemoveMenu(hMenu,0,MF_BYPOSITION);
}
// 最後のコマンドの境界
InsertMenu(hMenu,0,MF_BYPOSITION|MF_SEPARATOR,0,NULL);
// コマンド
InsertMenu(hMenu,0,MF_BYPOSITION,WZSC_NEWFILE,"新規作成(&N)");
InsertMenu(hMenu,1,MF_BYPOSITION,WZSC_OPENFILE,"ファイルを開く(&O)...");//1.00D Internal
InsertMenu(hMenu,2,MF_BYPOSITION,WZSC_PRJOPEN,"プロジェクトを開く(&P)...");//1.00D Internal
// ファイラーサブメニュー
_hmenuFiler = CreateMenu();
InsertMenu(_hmenuFiler,0,MF_BYPOSITION,0,"0");
InsertMenu(hMenu,3,MF_BYPOSITION|MF_POPUP,(UINT)_hmenuFiler,"ファイラー(&F)");// 950513 TY
//
InsertMenu(hMenu,4,MF_BYPOSITION,WZSC_GREP,"Grep検索(&G)");//1.00D Internal
#if 1//3.00A2 970507 NT3.51でも設定ダイアログ使える様にした
//3.00B2 970615 Win3.1のWZ Iconの設定復活。終了時位置保存が指定できるようにした
InsertMenu(hMenu,5,MF_BYPOSITION,WZSC_CONFIG,"設定(&S)...");
#else
#if 1//2.99G 970404 WZ16,WinNT3.51のWZ Iconの設定ダイアログで設定を変更しても利かなかったので、設定を削除
if (_fwin40) {
InsertMenu(hMenu,5,MF_BYPOSITION,WZSC_CONFIG,"設定(&S)...");
}
#else
InsertMenu(hMenu,5,MF_BYPOSITION,WZSC_CONFIG,"設定(&S)...");
#endif
#endif
#if 0//2.98 970307
if (!_fwin40) {
InsertMenu(hMenu,5,MF_BYPOSITION,WZSC_SETUP,"終了時位置保存(&S)");
InsertMenu(hMenu,6,MF_BYPOSITION,WZSC_TOPMOST,"常に前面に表示(&T)");
}
#endif
InsertMenu(hMenu,6,MF_BYPOSITION,WZSC_ABOUT,"バージョン情報(&A)...");//3.00B1 970612 WZ Iconにバージョン情報を追加
// ファイルヒストリリストリの境界
AppendMenu(hMenu, MF_SEPARATOR, 0, NULL);
}
#if 0//3.00B1 970612
BOOL __txeclosemulti(HWND hwndprev)
{
//3.00B1 970612
wndtxSetActive(hwndprev);
PostMessage(hwndprev,WM_WZICON_OPENMENUPRIM,0,0);
return TRUE;
}
#endif
// エントリ
void __txenew(void)
{
//2.94 970122
_textWzicon = text;
text->fTxeOpenHigh = TRUE;
txSetFileName(text,NULL);//2.99G 970405 WZ Iconで設定ダイアログのコンテキストヘルプのフォントが変だった
// ウィンドウ設定
HWND hwnd = text->hwndbase;
text->fNoWndText = TRUE;
text->fNoOpenText = TRUE;
text->fNoProfile = TRUE;
#if 0//2.99D 970401 NT3.51
if (!_fwin40) {
// ShowWindow() ではなぜかだめ・・
PostMessage(hwnd, WM_SYSCOMMAND, SC_MINIMIZE, 0L);
}
#endif
SetWindowText(hwnd, szApp);
shellDragAcceptFiles(TRUE);
CreateWZIconMenu(text);
ReadProfile();
#if 0//3.00B2 970615
if (g_fSavePos) {
PostMessage(hwnd, WM_SYSCOMMAND, WZSC_RESTOREPOS, 0L);
}
#endif
// 950516 TY
FlushTopmost();
// フックする
macroHookWndBase();
textSetProcessMode(hwnd,WZPROCESS_STAYALWAYS);
//2.99D 970401 NT3.51
text->nCmdShow = SW_MINIMIZE;
//
#ifdef __FLAT__//1.00H4
if (_fwin40) {
text->nCmdShow = SW_HIDE;
}
#endif
if (g_fSavePos) {//3.00B2 970615
text->nCmdShow = SW_HIDE;
}
}
// apidbに登録されないように
void main(void)
{
//1.00H5 __txenewから移動。__txenewでやるとタスクバーにアイコンが複数出てしまう
#ifdef __FLAT__//1.00H4
if (_fwin40) {
TX* text = _textWzicon;
TrayMessage(text->hwndbase,NIM_ADD);
// 最後に開かれた自分以外のWZ窓をアクティブにする
wzlock(LOCK_WZPROCESS);
{
HWND hwndActive = NULL;
int i;
for (i = 0;i < text->share->nOpen;i++) {
HWND hwnd = textRead(i);
if (hwnd && hwnd != _textWzicon->hwndbase) hwndActive = hwnd;
}
PostMessage(hwndActive,WM_TXACTIVE,0,0);
}
wzunlock(LOCK_WZPROCESS);
}
#endif
ehFlush();//2.98 970311
if (g_fSavePos) {//3.00B2 970615
PostMessage(text->hwndbase, WM_SYSCOMMAND, WZSC_RESTOREPOS, 0L);
text->nCmdShow = SW_MINIMIZE;
ShowWindow(text->hwndbase,text->nCmdShow);
}
}