?? editwndmgr.cpp
字號:
// EditWndMgr.cpp: implementation of the CEditWndMgr class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "Chat.h"
#include "Hangul.h"
#include "menu.h"
#include "dragon.h"
#include "Hong_Sub.h"
#include "Map.h"
#include "CharDataTable.h"
#include "TeamBattle.h"
#include "GameProc.h"
#include "LineCommand.h"
#include "Tool.h"
#include "Hong_Sprite.h"
#include "directsound.h"
#include "SmallMenu.h"
#include "resource.h"
#include "MenuSet.h"
#include "SmallMenuSet.h"
#include "smallmenu.h"
#include "EditWndMgr.h"
bool g_ControlKeyOn;
extern void DoButtonCheckOfMenu( int i, int j );
extern void DoQuickmemoryByKeyInput(const int iInputKey,bool bIsDikCheck);
#ifdef STRICT
WNDPROC g_ParentProcAddress = NULL;
#else
FARPROC g_ParentProcAddress = NULL;
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CEditWndMgr EWndMgr;
CEditWndMgr::CEditWndMgr()
{
Clear();
}
CEditWndMgr::~CEditWndMgr()
{
Clear();
}
HWND SetFocus2( const int iIndex)//021001 lsw
{
return EWndMgr.SetWndFocus(iIndex);
}
HWND CEditWndMgr::SetWndFocus(int iIndex)
{
HWND hWnd = 0;
#ifdef STRICT
WNDPROC ProcAddress;
#else
FARPROC ProcAddress;
#endif
for(wndItor itor = vtWnd.begin() ;itor != vtWnd.end();itor++)//牢鄲膠客 老摹竅綽 擴檔快甫 罐綽促
{
if(iIndex == (*itor).iIndex)
{
hWnd = (*itor).hWnd;
ProcAddress = (*itor).ProcAddress;
break;
}
}
for(wndItor itor2 = vtWnd.begin() ;itor2 != vtWnd.end();itor2++)//NowFocus俊 拱妨 霖促
{
if(HWND_NOW_FOCUS == (*itor2).iIndex)
{
(*itor2).hWnd = hWnd;
(*itor).ProcAddress = ProcAddress;
}
}
return SetFocus( hWnd );
}
int CEditWndMgr::CheckSysKey( UINT uiMessage, WPARAM wParam )
{
if(WM_SYSKEYDOWN == uiMessage)
{
switch( wParam )
{
case VK_F4 :
{
CallMenu( MN_SYSTEM_LOGOUT, 193, 75, true );
return 0;
}break;
}
}
return 1;
}
int CEditWndMgr::InitEditWnd()
{
t_HWndInfo HwndInfo;
HwndInfo.iIndex = HWND_NOW_FOCUS;
HwndInfo.hWnd = NULL;
vtWnd.push_back(HwndInfo);
HwndInfo.iIndex = HWND_CHAT_INPUT;
HwndInfo.hWnd = ::CreateWindow( "edit", NULL, WS_CHILD , 1,1, 500, 20, g_hwndMain, NULL, g_hInstance, NULL );
if(!HwndInfo.hWnd){JustMsg("Edit Window Create Failed(1)"); return 0;}
#ifdef STRICT
HwndInfo.ProcAddress = ( WNDPROC )::SetWindowLong( HwndInfo.hWnd, GWL_WNDPROC, ( LONG )ChatWndProc );
#else
HwndInfo.ProcAddress = ( FARPROC )::SetWindowLong( HwndInfo.hWnd, GWL_WNDPROC, ( LONG )ChatWndProc );
#endif
vtWnd.push_back(HwndInfo);
HwndInfo.iIndex = HWND_CHAT_TARGET_INPUT;
HwndInfo.hWnd = ::CreateWindow( "edit", NULL, WS_CHILD, 1,1, 150, 20, g_hwndMain, NULL, g_hInstance, NULL );
if(!HwndInfo.hWnd){JustMsg("Edit Window Create Failed(1)"); return 0;}
#ifdef STRICT
HwndInfo.ProcAddress = ( WNDPROC )::SetWindowLong( HwndInfo.hWnd, GWL_WNDPROC, ( LONG )ChatTargetWndProc );
#else
HwndInfo.ProcAddress = ( FARPROC )::SetWindowLong( HwndInfo.hWnd, GWL_WNDPROC, ( LONG )ChatTargetWndProc );
#endif
vtWnd.push_back(HwndInfo);
HwndInfo.iIndex = HWND_1;
HwndInfo.hWnd = ::CreateWindow( "edit", NULL, WS_CHILD| ES_AUTOHSCROLL , 1,1, 270, 20, g_hwndMain, NULL, g_hInstance, NULL );
if(!HwndInfo.hWnd){JustMsg("Edit Window Create Failed(1)"); return 0;}
#ifdef STRICT
HwndInfo.ProcAddress = ( WNDPROC )::SetWindowLong( HwndInfo.hWnd, GWL_WNDPROC, ( LONG )CommonEditWndProc );
#else
HwndInfo.ProcAddress = ( FARPROC )::SetWindowLong( HwndInfo.hWnd, GWL_WNDPROC, ( LONG )CommonEditWndProc );
#endif
vtWnd.push_back(HwndInfo);
HwndInfo.iIndex = HWND_2;
HwndInfo.hWnd = ::CreateWindow( "edit", NULL, WS_CHILD| ES_AUTOHSCROLL , 1,1, 270, 20, g_hwndMain, NULL, g_hInstance, NULL );
if(!HwndInfo.hWnd){JustMsg("Edit Window Create Failed(1)"); return 0;}
#ifdef STRICT
HwndInfo.ProcAddress = ( WNDPROC )::SetWindowLong( HwndInfo.hWnd, GWL_WNDPROC, ( LONG )CommonEditWndProc );
#else
HwndInfo.ProcAddress = ( FARPROC )::SetWindowLong( HwndInfo.hWnd, GWL_WNDPROC, ( LONG )CommonEditWndProc );
#endif
vtWnd.push_back(HwndInfo);
HwndInfo.iIndex = HWND_3;
HwndInfo.hWnd = ::CreateWindow( "edit", NULL, WS_CHILD| ES_AUTOHSCROLL |ES_WANTRETURN|ES_AUTOVSCROLL|ES_MULTILINE, 1,1, 265, 20, g_hwndMain, NULL, g_hInstance, NULL );
if(!HwndInfo.hWnd){JustMsg("Edit Window Create Failed(1)"); return 0;}
#ifdef STRICT
HwndInfo.ProcAddress = ( WNDPROC )::SetWindowLong( HwndInfo.hWnd, GWL_WNDPROC, ( LONG )CommonEditWndProc );
#else
HwndInfo.ProcAddress = ( FARPROC )::SetWindowLong( HwndInfo.hWnd, GWL_WNDPROC, ( LONG )CommonEditWndProc );
#endif
vtWnd.push_back(HwndInfo);
HwndInfo.iIndex = HWND_BBS;
HwndInfo.hWnd = ::CreateWindow( "edit", NULL, WS_CHILD| ES_AUTOHSCROLL , 1,1, 265, 20, g_hwndMain, NULL, g_hInstance, NULL );
if(!HwndInfo.hWnd){JustMsg("Edit Window Create Failed(1)"); return 0;}
#ifdef STRICT
HwndInfo.ProcAddress = ( WNDPROC )::SetWindowLong( HwndInfo.hWnd, GWL_WNDPROC, ( LONG )CommonEditWndProc );
#else
HwndInfo.ProcAddress = ( FARPROC )::SetWindowLong( HwndInfo.hWnd, GWL_WNDPROC, ( LONG )CommonEditWndProc );
#endif
vtWnd.push_back(HwndInfo);
HwndInfo.iIndex = HWND_MAIL1;
HwndInfo.hWnd = ::CreateWindow( "edit", NULL, WS_CHILD| ES_AUTOHSCROLL , 1,1, 265, 20, g_hwndMain, NULL, g_hInstance, NULL );
if(!HwndInfo.hWnd){JustMsg("Edit Window Create Failed(1)"); return 0;}
#ifdef STRICT
HwndInfo.ProcAddress = ( WNDPROC )::SetWindowLong( HwndInfo.hWnd, GWL_WNDPROC, ( LONG )MailWndProc1 );
#else
HwndInfo.ProcAddress = ( FARPROC )::SetWindowLong( HwndInfo.hWnd, GWL_WNDPROC, ( LONG )MailWndProc1 );
#endif
vtWnd.push_back(HwndInfo);
HwndInfo.iIndex = HWND_MAIL2;
HwndInfo.hWnd = ::CreateWindow( "edit", NULL, WS_CHILD| ES_AUTOHSCROLL , 1,1, 265, 20, g_hwndMain, NULL, g_hInstance, NULL );
if(!HwndInfo.hWnd){JustMsg("Edit Window Create Failed(1)"); return 0;}
#ifdef STRICT
HwndInfo.ProcAddress = ( WNDPROC )::SetWindowLong( HwndInfo.hWnd, GWL_WNDPROC, ( LONG )MailWndProc2 );
#else
HwndInfo.ProcAddress = ( FARPROC )::SetWindowLong( HwndInfo.hWnd, GWL_WNDPROC, ( LONG )MailWndProc2 );
#endif
vtWnd.push_back(HwndInfo);
HwndInfo.iIndex = HWND_MAIL3;
HwndInfo.hWnd = ::CreateWindow( "edit", NULL, WS_CHILD| ES_AUTOHSCROLL |ES_AUTOVSCROLL| ES_WANTRETURN | ES_MULTILINE, 1,1, 265, 20, g_hwndMain, NULL, g_hInstance, NULL );
if(!HwndInfo.hWnd){JustMsg("Edit Window Create Failed(1)"); return 0;}
#ifdef STRICT
HwndInfo.ProcAddress = ( WNDPROC )::SetWindowLong( HwndInfo.hWnd, GWL_WNDPROC, ( LONG )MailWndProc3 );
#else
HwndInfo.ProcAddress = ( FARPROC )::SetWindowLong( HwndInfo.hWnd, GWL_WNDPROC, ( LONG )MailWndProc3 );
#endif
vtWnd.push_back(HwndInfo);
g_ParentProcAddress = HwndInfo.ProcAddress;
HwndInfo.iIndex = HWND_GAME_MAIN;//霸烙擴檔快 殿廢
HwndInfo.hWnd = g_hwndMain;
vtWnd.push_back(HwndInfo);
return 1;
}
void CEditWndMgr::DestroyEditWnd()
{
for(wndItor itor = vtWnd.begin() ;itor != vtWnd.end();itor++)
{
if(HWND_NOW_FOCUS != (*itor).iIndex)
{
if((*itor).hWnd)
{
DestroyWindow((*itor).hWnd);
(*itor).hWnd = NULL;
}
}
}
}
void CEditWndMgr::ClearAllTxt()//澇仿等 郴儈闌 葛滴 瘤礦聰促.//""甫 持綽疤聰促.
{
for(int i = HWND_NOW_FOCUS; HWND_GAME_MAIN >i;i++)
{
ClearTxt(i);
}
}
void CEditWndMgr::ClearTxt(const int iIndex)//急琶茄 俊叼飄 冠膠狼 郴儈闌 瘤礦聰促.
{
for(wndItor itor = vtWnd.begin() ;itor != vtWnd.end();itor++)
{
if(iIndex == (*itor).iIndex )
{
SetTxt(iIndex,"");
}
}
}
void CEditWndMgr::Clear()
{
DestroyEditWnd();
vtWnd.clear();
}
//俊叼飄 冠膠俊 楷搬瞪 橇肺矯廉
LRESULT CALLBACK CommonEditWndProc( HWND hWnd, UINT uiMessage, WPARAM wParam, LPARAM lParam )
{
if( EWndMgr.CheckSysKey( uiMessage, wParam ) == 0 ) return 0;
switch ( uiMessage )
{
case WM_INPUTLANGCHANGE :
{
::CheckChineseInput( hWnd, lParam );
}break;
case WM_KEYDOWN:
{
int nVirtKey = ( int )wParam; // virtual-key code
LPARAM lKeyData = lParam; // key data
switch ( nVirtKey )
{
case VK_LEFT:
case VK_RIGHT:
case VK_UP:
case VK_DOWN:
case VK_HOME:
case VK_INSERT:
case VK_DELETE:
{
return 0;
}break;
}
}break;
case WM_KEYUP:
{
int nVirtKey = ( int )wParam; // virtual-key code
LPARAM lKeyData = lParam; // key data
switch ( nVirtKey )
{
case VK_RETURN:
case VK_TAB:
{
if(SMenu[MN_GUILD_REGIST_DEGREE].bActive)
{
SMenu[MN_GUILD_REGIST_DEGREE].work++;
SMenu[MN_GUILD_REGIST_DEGREE].work %= 5;
SetWindowText( hWnd, "" );
}
if(SMenu[MN_LOGIN].bActive)//皋牢 牢磐其撈膠 澇仿 傈撈扼擱
{
switch(EWndMgr.GetFocusWndIndex())
{
case HWND_1:
{
id_password = false;
EWndMgr.SetWndFocus(HWND_2);
}break;
case HWND_2:
{
switch (nVirtKey)
{
case VK_RETURN:
{
SMenu[MN_LOGIN].nField[0].fCheakFlag=TRUE;
EWndMgr.SetWndFocus(HWND_GAME_MAIN);
}break;
case VK_TAB:
{
id_password = true;
EWndMgr.SetWndFocus(HWND_1);
}break;
}
}break;
default:
{
}break;
}
}
g_aCurrentKeys[DIK_RETURN] = 0;
}break;
}
}break;
case WM_CHAR:
{
int nVirtKey = ( int )wParam; // virtual-key code
LPARAM lKeyData = lParam; // key data
switch ( nVirtKey )//浚磐唱 徘 摹擱 穢穢 家府唱綽芭 規瘤
{
case VK_RETURN: return 0;
case VK_TAB: return 0;
}
}break;
}
return CallWindowProc( g_ParentProcAddress, hWnd, uiMessage, wParam, lParam );
}
LRESULT CALLBACK ChatWndProc( HWND hWnd, UINT uiMessage, WPARAM wParam, LPARAM lParam )
{
if( EWndMgr.CheckSysKey( uiMessage, wParam ) == 0 ) return 0;
switch ( uiMessage )
{
case WM_INPUTLANGCHANGE :
{
::CheckChineseInput( hWnd, lParam );
}break;
case WM_KEYDOWN:
{
const int nVirtKey = ( int )wParam; // virtual-key code
LPARAM lKeyData = lParam; // key data
switch ( nVirtKey )
{
case VK_UP:
case VK_DOWN:
case VK_LEFT:
case VK_RIGHT:
case VK_HOME:
case VK_END:
case VK_INSERT:
case VK_DELETE:
{
return 0;
}break;
case VK_TAB:
{
const int iTarget = GetChatTarget();
switch(iTarget)
{
case CHAT_TARGET_WISPER1 :
case CHAT_TARGET_WISPER2 :
case CHAT_TARGET_WISPER3 :
case CHAT_TARGET_WISPER4 :
case CHAT_TARGET_WISPER5 :
{
char temp[MAX_CHAT_STRING_]={""};
EWndMgr.ClearTxt(HWND_CHAT_INPUT);
SetChatTarget(iTarget+1);
}break;
case CHAT_TARGET_GUILD:
{
char temp[MAX_CHAT_STRING_]={""};
EWndMgr.ClearTxt(HWND_CHAT_INPUT);
SetChatTarget(SELECT_WISPER_MODE);
}break;
case CHAT_TARGET_NORMAL:
{
char temp[MAX_CHAT_STRING_]={""};
EWndMgr.ClearTxt(HWND_CHAT_INPUT);
SetChatTarget(CHAT_TARGET_GUILD);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -