?? chrwarehouse.cpp
字號:
// ChrWareHouse.cpp : implementation file
//
#include "stdafx.h"
#include "rmtool.h"
#include "ChrWareHouse.h"
#include "CharacterView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CChrWareHouse dialog
CChrWareHouse::CChrWareHouse(CWnd* pParent /*=NULL*/)
: CDialog(CChrWareHouse::IDD, pParent)
{
//{{AFX_DATA_INIT(CChrWareHouse)
m_nGuildNumber = 0;
//}}AFX_DATA_INIT
InitVariable();
}
void CChrWareHouse::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CChrWareHouse)
DDX_Control(pDX, IDC_GUILD_ITEM_LIST, m_listGuildItem);
DDX_Text(pDX, IDC_GUILD_NUMBER, m_nGuildNumber);
DDX_Text(pDX, IDC_UPDATE_HAN_NAME, m_UpdateHanName);
DDX_Text(pDX, IDC_UPDATE_NO, m_UpdateNo);
DDX_Text(pDX, IDC_UPDATE_TYPE, m_UpdateType);
DDX_Text(pDX, IDC_MUCH_MAX, m_MuchMax);
DDX_Text(pDX, IDC_MUCH_NOW, m_MuchNow);
DDX_Text(pDX, IDC_MUCH_TYPE, m_MuchType);
DDX_Text(pDX, IDC_MUTANT_GRADE, m_MutantGrade);
DDV_MinMaxUInt(pDX, m_MutantGrade, 0, 15);
DDX_Text(pDX, IDC_MUTANT_KIND1, m_MutantKind1);
DDV_MinMaxUInt(pDX, m_MutantKind1, 0, 255);
DDX_Text(pDX, IDC_MUTANT_KIND2, m_MutantKind2);
DDV_MinMaxUInt(pDX, m_MutantKind2, 0, 255);
DDX_Text(pDX, IDC_LIMIT, m_UpdateLimit);
DDX_Text(pDX, IDC_MUTANT_KIND3, m_MutantKind3);
DDV_MinMaxUInt(pDX, m_MutantKind3, 0, 255);
DDX_Text(pDX, IDC_E_LIMITRESULT, m_LimitResult);
DDX_Text(pDX, IDC_HIGH_LEVEL, m_iHighLevel);
DDV_MinMaxInt(pDX, m_iHighLevel, 0, 8);
DDX_Text(pDX, IDC_IS_DYNAMIC, m_bIsDynamic);
DDV_MinMaxInt(pDX, m_bIsDynamic, 0, 1);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CChrWareHouse, CDialog)
//{{AFX_MSG_MAP(CChrWareHouse)
ON_BN_CLICKED(IDC_SEARCH_GUILD, OnSearchGuild)
ON_NOTIFY(NM_DBLCLK, IDC_GUILD_ITEM_LIST, OnDblclkGuildItemList)
ON_BN_CLICKED(IDC_DELETE, OnDelete)
ON_BN_CLICKED(IDC_SAVE, OnSave)
ON_NOTIFY(NM_CLICK, IDC_GUILD_ITEM_LIST, OnClickGuildItemList)
ON_BN_CLICKED(IDC_INSERT, OnInsert)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CChrWareHouse message handlers
void CChrWareHouse::InitVariable()
{
m_UpdateHanName.Empty();// = "";
m_UpdateType.Empty();// = "";
m_MuchType.Empty();// = "";
m_LimitResult.Empty();//= "";
//m_nGuildNumber = 0;
m_UpdateNo = 0;
m_MuchMax= 0;
m_MuchNow=0;
m_MutantGrade=0;
m_MutantKind1=0;
m_MutantKind2=0;
m_UpdateLimit=0;
m_MutantKind3=0;
m_iHighLevel=0;
m_bIsDynamic=0;
}
void CChrWareHouse::RefreshData() //拳擱俊 謊妨霖促.
{
InitVariable();
//if( !IsBadReadPtr( m_listGuildItem, sizeof( m_listGuildItem) ))
m_listGuildItem.DeleteAllItems();
UpdateData( false );
}
BOOL CChrWareHouse::OnInitDialog()
{
CDialog::OnInitDialog();
// 府膠飄 牧飄費 檬扁拳 -----
LV_COLUMN lvcolumn;
char list[][50] = { "index", "item_no", "guild_code", "name", "date" };
int width[] = { 50, 70, 30, 120, 120 };
m_listGuildItem.SetExtendedStyle(LVS_EX_FULLROWSELECT); //|LVS_EX_CHECKBOXES);
for( int i=0; i<5; i++ )
{
lvcolumn.mask = LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH;
lvcolumn.fmt = LVCFMT_LEFT;
lvcolumn.pszText = list[i];
lvcolumn.iSubItem = i;
lvcolumn.cx = width[i];
m_listGuildItem.InsertColumn( i, &lvcolumn );
}
// ---------------------------
m_pApp = (CRMToolApp*)AfxGetApp();
UpdateData( 0 );
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
/////////////////////////////////////////////////////////////////////////////////////
WCHAR *KSCToUnicode( LPCTSTR str2, WCHAR *str1 )
{
if( !g_pDb ) return 0;
g_pDb->KSCToUnicode( (char *)str2, str1 );
return str1;
}
void SetListCtrl( SQLItemAttr1 *pItem, int item_max, CListCtrl *list )
{
list->DeleteAllItems();
LV_ITEM lvitem;
lvitem.mask = LVIF_TEXT;
CString szData;
for( int i=0; i<item_max; i++ )
{
lvitem.iItem = i;
lvitem.iSubItem = 0;
szData.Format( "%d", pItem[i].index );
lvitem.pszText = (char *)(LPCTSTR)szData;
list->InsertItem( &lvitem );
lvitem.iSubItem = 1;
szData.Format( "%d", pItem[i].item_no );
lvitem.pszText = (char *)(LPCTSTR)szData;
list->SetItem( &lvitem );
lvitem.iSubItem = 2;
szData.Format( "%d", pItem[i].guild_code );
lvitem.pszText = (char *)(LPCTSTR)szData;
list->SetItem( &lvitem );
lvitem.iSubItem = 3;
szData = pItem[i].name;
lvitem.pszText = (char *)(LPCTSTR)szData;
list->SetItem( &lvitem );
lvitem.iSubItem = 4;
CTime time( pItem[i].time.year,
pItem[i].time.month,
pItem[i].time.day,
pItem[i].time.hour,
pItem[i].time.minute,
pItem[i].time.second );
szData = time.FormatGmt( "%Y-%m-%d %H:%M:%S" );
lvitem.pszText = (char *)(LPCTSTR)szData;
list->SetItem( &lvitem );
}
}
/////////////////////////////////////////////////////////////////////////////////////
void CChrWareHouse::OnSearchGuild()
{
UpdateData(1);
int guild_code = m_nGuildNumber;
if( !guild_code ) return;
CCharacterView *pView = (CCharacterView*)GetParent();
int item_max = 0;
CString szQuerry;
WCHAR szwQuerry[512];
szQuerry.Format( "SELECT count( cn ) FROM guild_item WHERE guild_code = %d", guild_code);
int result = g_pDb->OpenRecord( KSCToUnicode( szQuerry, szwQuerry ), &item_max, 1, (BYTE)DRAGON_DB[pView->m_nCurDbIndex]);
if(result < 0)
{
MessageBox( "Fail no. 1, get item count...",NULL,NULL);
return;
}
if( !item_max ) return;
SQLItemAttr1 *pItem;
pItem = new SQLItemAttr1[item_max];
szQuerry.Format( "SELECT cn, item_no, guild_code, name, date FROM guild_item WHERE guild_code = %d ORDER BY cn", guild_code );
result = g_pDb->OpenRecord( KSCToUnicode( szQuerry, szwQuerry ), pItem,item_max, (BYTE)DRAGON_DB[pView->m_nCurDbIndex]);
if(result < 0)
{
MessageBox( "Fail no. 2, get item index",NULL,NULL);
delete [] pItem;
return;
}
RefreshData();
SetListCtrl( pItem, item_max, &m_listGuildItem );
delete [] pItem;
UpdateData( 0 );
}
void CChrWareHouse::OnDblclkGuildItemList(NMHDR* pNMHDR, LRESULT* pResult)
{
CCharacterView *pView = (CCharacterView*)GetParent();
NM_LISTVIEW *pNMListView = (NM_LISTVIEW *)pNMHDR;
int listdatanum = pNMListView->iItem;
char temp[50];
m_listGuildItem.GetItemText( listdatanum, 0, temp, 50 );
int index = atoi( temp );
if( !index ) return;
SQLItemAttr2 item_data;
CString szQuerry;
WCHAR szwQuerry[512];
szQuerry.Format( "SELECT item_no, attr1, attr2, attr3, attr4, attr5, attr6 FROM \
guild_item WHERE cn = %d ", index );
int result = g_pDb->OpenRecord( KSCToUnicode( szQuerry, szwQuerry ), &item_data, 1, (BYTE)DRAGON_DB[pView->m_nCurDbIndex]);
if(result < 0)
{
MessageBox( "Fail no. 3, get item index",NULL,NULL);
return;
}
if( !item_data.item_no ) return;
ItemAttr item;
item.item_no = (WORD) item_data.item_no;
memcpy( item.attr, item_data.attr, sizeof( DWORD ) *6 );
SetItemView( &item );
UpdateData( 0 );
*pResult = 0;
}
void CChrWareHouse::OnDelete()
{
if( !RIGHT(MASK_25) ) return;
if( m_UpdateNo<= 0 ) {AfxMessageBox("Selete Item~~");return;}
if( MessageBox( "Do you want to Delete WareHouse Item?", "DELETE", MB_YESNO ) != IDYES) return;
CCharacterView *pView = (CCharacterView*)GetParent();
CString szQuerry;
WCHAR szwQuerry[512];
int nItem, index, result;
int count = m_listGuildItem.GetItemCount();
while(count > 0)
{
nItem = m_listGuildItem.GetNextItem( -1, LVNI_SELECTED );
if( nItem < 0 ) break;
//char temp[50];
CString szCn, szItem, szGuild, szName, szDate;
//m_listGuildItem.GetItemText( nItem, 0, temp, 50 );
szCn = m_listGuildItem.GetItemText( nItem, 0);//, szCn.GetBuffer(0), 50 );
szItem = m_listGuildItem.GetItemText( nItem, 1);//, szCn.GetBuffer(0), 50 );
szGuild = m_listGuildItem.GetItemText( nItem, 2);//, szCn.GetBuffer(0), 50 );
szName = m_listGuildItem.GetItemText( nItem, 3);//, szCn.GetBuffer(0), 50 );
szDate = m_listGuildItem.GetItemText( nItem, 4);//, szCn.GetBuffer(0), 50 );
index = atoi( szCn.GetBuffer(0) );
//for extensionlog
WriteLog( szCn, szItem, szGuild, szName, szDate );
m_listGuildItem.DeleteItem(nItem);
if( !index ) continue;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -