📄 mainfrm.cpp
字号:
// MainFrm.cpp : implementation of the CMainFrame class
//
#include <afxdlgs.h>
#include "stdafx.h"
#include "Messenger.h"
#include "MainFrm.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMainFrame
IMPLEMENT_DYNAMIC(CMainFrame, CFrameWnd)
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
ON_WM_CREATE()
ON_WM_SETFOCUS()
ON_COMMAND(IDM_FILE_PARSER, OnFileParser)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
static UINT indicators[] =
{
ID_SEPARATOR, // status line indicator
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
};
/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction
CMainFrame::CMainFrame()
{
// TODO: add member initialization code here
}
CMainFrame::~CMainFrame()
{
}
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
UINT i;
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
//////////////////////////////////////////////////////////////////////////
for(i = 0;i < 20;i++)
{
m_StockInfo[i].Format(_T("%s"),"");
}
//创建Tab
if (!m_wndImageTab.Create(NULL, NULL, WS_CHILD|WS_VISIBLE,
CRect(0, 0, 0, 0), this, AFX_IDW_PANE_FIRST, NULL))
{
TRACE0("Failed to create view window\n");
return -1;
}
m_wndImageTab.SetBkImage(IDB_BITMAP_BACK);
m_wndImageTab.SetLeftImage(IDB_BITMAP_LEFTMARGIN);
m_wndImageTab.SetRightImage(IDB_BITMAP_RIGHTMARGIN);
m_wndImageTab.SetTopImage(IDB_BITMAP_TOPMARGIN);
m_wndImageTab.SetBottomImage(IDB_BITMAP_BOTTOMMARGIN);
m_wndImageTab.SetTabCount(2);
int nIndex = 0;
m_wndImageTab.SetTabImage(nIndex, IDB_BITMAP_TAB1);
m_wndImageTab.SetTabRect(nIndex, CRect(0, 0, 32, 42));
m_wndImageTab.SetToolTip(nIndex, "Page A");
m_wndDlgA.Create(IDD_DIALOG_PAGE1, &m_wndImageTab);
m_wndImageTab.SetTabWnd(nIndex, &m_wndDlgA);
nIndex++;
m_wndImageTab.SetTabImage(nIndex, IDB_BITMAP_TAB2);
m_wndImageTab.SetTabRect(nIndex, CRect(0, 52, 32, 94));
m_wndImageTab.SetToolTip(nIndex, "Page B");
m_wndDlgB.Create(IDD_DIALOG_PAGE2, &m_wndImageTab);
m_wndImageTab.SetTabWnd(nIndex, &m_wndDlgB);
CenterWindow();
return 0;
}
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
cs.x = 0;
cs.y = 0;
cs.cx = 300;
cs.cy = 600;
cs.dwExStyle &= ~WS_EX_CLIENTEDGE;
cs.lpszClass = AfxRegisterWndClass(0);
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics
#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
CFrameWnd::AssertValid();
}
void CMainFrame::Dump(CDumpContext& dc) const
{
CFrameWnd::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers
void CMainFrame::OnSetFocus(CWnd* pOldWnd)
{
// forward focus to the view window
m_wndImageTab.SetFocus();
}
BOOL CMainFrame::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo)
{
// let the view have first crack at the command
if (m_wndImageTab.OnCmdMsg(nID, nCode, pExtra, pHandlerInfo))
return TRUE;
// otherwise, do default handling
return CFrameWnd::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
}
typedef struct file_item_node
{
UINT stock_id;
UINT strbuffer_idx;
}FILE_ITEM_NODE;
#if 0
int Get_Buffer_Len(char *p_str)
{
int i;
i = 0;
while(p_str[i] == '\0')
{
i++;
}
return i;
}
#endif
void CMainFrame::OnFileParser()
{
char fp_ch;
char** p_item;
char* str_malloc;
UINT i,j,items_cnt,item_node,dot_cnt;
FILE_ITEM_NODE *p_node;
FILE *fp_stock;
CString szGetName;
CFileDialog* lpszOpenFile;
lpszOpenFile = new CFileDialog(TRUE,"","",OFN_FILEMUSTEXIST |OFN_HIDEREADONLY,"File Type(*.stp) | *.stp");
if(lpszOpenFile->DoModal() == IDOK)
{
szGetName = lpszOpenFile->GetPathName();
SetWindowText(szGetName);
}
delete lpszOpenFile;
fp_stock = fopen(szGetName,"rt");/*Read-only as text mode*/
if(fp_stock == NULL)
ASSERT(0);
items_cnt = 0;
fseek(fp_stock,0,SEEK_SET);
do
{
if(fread(&fp_ch,sizeof(char),1,fp_stock) == 0)
break;
if(fp_ch == 's')
{
fread(&fp_ch,sizeof(char),1,fp_stock);
if((fp_ch == 'h') || (fp_ch == 'z'))
items_cnt++;/*stock items head information got*/
}
}
while(fp_ch != EOF);/*the First step get record items count*/
/*malloc memory to load file information,the Second step*/
//str_malloc = new char(items_cnt * STOCK_STR_LENGTH);/*Load all detail*/
str_malloc = new char[items_cnt * 32];/*Load only part information*/
memset(str_malloc,'\0',items_cnt * 32);
p_item = new char *[items_cnt];
memset(p_item,NULL,sizeof(char *)*items_cnt);
p_node = new FILE_ITEM_NODE[items_cnt];
memset(p_node,0,sizeof(FILE_ITEM_NODE)*items_cnt);
for(i = 0;i < items_cnt;i++)
{/*Assign memory address*/
p_item[i] = str_malloc + 32*i;
}/*Malloc & init*/
/*load files*/
item_node = 0;
fseek(fp_stock,0,SEEK_SET);
for(item_node = 0;item_node < items_cnt;/*do nothing*/)
{
fread(&fp_ch,sizeof(char),1,fp_stock);
if(fp_ch == 's')
{
fread(&fp_ch,sizeof(char),1,fp_stock);
if((fp_ch == 'h') || (fp_ch == 'z'))
{
char str_ids[7];
UINT ch_cnt;
ch_cnt = 0;
dot_cnt = 0;
_strset(str_ids,'\0');
fread(str_ids,1,6,fp_stock);
p_node[item_node].stock_id = atoi(str_ids);
p_node[item_node].strbuffer_idx = item_node;
while(dot_cnt < 6)
{/*Each blank corresponding to a node data section*/
fread(&fp_ch,sizeof(char),1,fp_stock);
p_item[item_node][ch_cnt] = fp_ch;
ch_cnt++;
if(fp_ch == '.')
dot_cnt++;
if(dot_cnt >= 3)/*patch,to read two digit after .,eg:3.23*/
dot_cnt++;
}
item_node++;
}
}
}
fclose(fp_stock);
#if 1/*sorting code section*/
FILE_ITEM_NODE node_temp;
for(i = 0;i < (item_node - 1);i++)
{
for(j = 0;j < (item_node - i - 1);j++)
{
if(p_node[j + 1].stock_id > p_node[j].stock_id)
{
memcpy(&node_temp,(p_node + j),sizeof(FILE_ITEM_NODE));
memcpy((p_node + j),(p_node + j + 1),sizeof(FILE_ITEM_NODE));
memcpy((p_node + j + 1),&node_temp,sizeof(FILE_ITEM_NODE));
}
}
}
UINT gross_cnt,temp_id;
gross_cnt = 1;
temp_id = p_node[0].stock_id;
for(i = 0;i < item_node;i++)
{
if(temp_id != p_node[i].stock_id)
{
temp_id = p_node[i].stock_id;
gross_cnt++;
}
}
UINT gross_idx,node_num;
FILE_ITEM_NODE *p_grossnode;
node_num= 0;
gross_idx = 0;
p_grossnode = new FILE_ITEM_NODE[gross_cnt];
memset(p_grossnode,0x0,sizeof(FILE_ITEM_NODE) * gross_cnt);
p_grossnode[0].stock_id = p_node[0].stock_id;
for(i = 0;i < item_node;i++)
{
if(p_grossnode[gross_idx].stock_id != p_node[i].stock_id)
{
p_grossnode[gross_idx].strbuffer_idx = node_num;
gross_idx++;
p_grossnode[gross_idx].stock_id = p_node[i].stock_id;
node_num= 1;
}
else
{
node_num++;
p_grossnode[gross_idx].strbuffer_idx = node_num;
}
}
for(i = 0;i < (gross_cnt - 1);i++)
{/*Bubble sorting for event frequency*/
for(j = 0;j < (gross_cnt - i - 1);j++)
{
if(p_grossnode[j+1].strbuffer_idx > p_grossnode[j].strbuffer_idx)
{
memcpy(&node_temp,(p_grossnode + j),sizeof(FILE_ITEM_NODE));
memcpy((p_grossnode + j),(p_grossnode + j + 1),sizeof(FILE_ITEM_NODE));
memcpy((p_grossnode + j + 1),&node_temp,sizeof(FILE_ITEM_NODE));
}
}
}
#if (12 == 12)
FILE *fp_log;
int str_length;
str_length = szGetName.GetLength();
szGetName.SetAt(str_length-3,'t');
szGetName.SetAt(str_length-2,'x');
szGetName.SetAt(str_length-1,'t');/*Modify file format*/
fp_log = fopen(szGetName,"wt");
for(i = 0;i < gross_cnt;i++)
{
UINT strnode_idx;
char strbuf_ids[16];
sprintf(strbuf_ids,"ID:%06d FREQ:%03d\n",p_grossnode[i].stock_id,p_grossnode[i].strbuffer_idx);
str_length = strlen(strbuf_ids);
fwrite(strbuf_ids,str_length,1,fp_log);
fwrite("______________________________\n",1,32,fp_log);
for(j = 0;j < item_node;j++)
{
if(p_node[j].stock_id == p_grossnode[i].stock_id)
{/*write match ones*/
strnode_idx = p_node[j].strbuffer_idx;
str_length = strlen(p_item[strnode_idx]);
fwrite(p_item[strnode_idx],str_length,1,fp_log);
fwrite("\n",1,1,fp_log);
}
}
fwrite("*******************************\n",1,32,fp_log);
}
fclose(fp_log);
#endif
delete []p_grossnode;
#endif
/*Loading complete*/
delete []p_item;
delete []str_malloc;
delete []p_node;/*Release*/
AfxMessageBox("Parse compelete!Please consult corresponding txt files...");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -