www.gusucode.com > VC++游戏圣剑英雄传2双刃剑源程序+开发文档-源码程序 > VC++游戏圣剑英雄传2双刃剑源程序+开发文档-源码程序\code\source\interface\listwindow.cpp
//Download by http://www.NewXing.com //******************************************** // 列表窗口 相关函数 // 创建于2000年7月07日 //******************************************** #include <windows.h> #include <stdio.h> #include "..\gamelib\goldpoint2.h" #include "..\main.h" #include "window.h" #include "scroll.h" #include "listwindow.h" //构造 CListWindow::CListWindow() { Column=NULL; } //析构 CListWindow::~CListWindow() { for(int i=0; i<ColumnNum; i++) { free( Column[i].Name ); } _DELETE_ARRAY( Column ); } //读入对话框 bool CListWindow::LoadListWindowIni(char *ini, char *index) { char *str; CIniSet Ini(ini); Id=Ini.ReadInt(index,"Id"); //ID x=Ini.ReadInt(index,"x"); //显示位置 y=Ini.ReadInt(index,"y"); //显示位置 Width=Ini.ReadInt(index,"Width"); //大小 Height=Ini.ReadInt(index,"Height"); //大小 LineHeight=Ini.ReadInt(index,"LineHeight"); //行高 str=Ini.ReadText(index, "SelectColor"); SelectColor=RGB16(Ini.ReadInt(str, "Red"), Ini.ReadInt(str, "Green"), Ini.ReadInt(str,"Blue")); _FREE(str); int MinLine=Ini.ReadInt(index, "MinLine"); int MaxLine=Ini.ReadInt(index, "MaxLine"); int CurLine=Ini.ReadInt(index, "CurLine"); int PageLine=Ini.ReadInt(index, "PageLine"); //标题高度 ColumnHeight=Ini.ReadInt(index, "ColumnHeight"); //标题字体 str=Ini.ReadText(index, "ColumnColor"); ColumnColor=RGB16(Ini.ReadInt(str, "Red"), Ini.ReadInt(str, "Green"), Ini.ReadInt(str,"Blue")); _FREE(str); //读取标题列表(纵向排列) int xxx=0; //下一个内容的显示位置 str=Ini.ReadText(index, "Column"); ColumnNum=Ini.ReadInt(str, "ColumnNum"); Column=new stColumn[ColumnNum]; for(int i=0; i<ColumnNum; i++) { Column[i].Name=Ini.ReadText(str, i*3); Column[i].Align=Ini.ReadInt(str, i*3+1); Column[i].Width=Ini.ReadInt(str, i*3+2); Column[i].x=xxx; xxx+=Column[i].Width+1; } _FREE(str); //初始化窗口 char *file=Ini.ReadText(index, "WindowFile"); char *tile=Ini.ReadText(index, "WindowIndex"); LoadWindowIni(file, tile); _FREE(file); _FREE(tile); dialogx=x-32; dialogy=y-32; dialogw=Width+64; dialogh=Height+64; //初始化滚动条 file=Ini.ReadText(index, "ScrollFile"); tile=Ini.ReadText(index, "ScrollIndex"); ScrollBar.LoadIni(file, tile); _FREE(file); _FREE(tile); ScrollBar.SetStyle(0); ScrollBar.x=x+Width-ScrollBar.Width; ScrollBar.y=y; ScrollBar.SetHeight(Height); ScrollBar.SetMinNum(MinLine); ScrollBar.SetMaxNum(MaxLine); ScrollBar.SetCurNum(CurLine); ScrollBar.SetPageNum(PageLine); //初始化标题字体 file=Ini.ReadText(index, "ColumnFontFile"); tile=Ini.ReadText(index, "ColumnFontIndex"); ColumnFont.LoadFont(file, tile); _FREE(file); _FREE(tile); return true; } //显示对话框 void CListWindow::ShowListWindow(LPDIRECTDRAWSURFACE lpDDSTemp, bool bShowWindow, int left, int top) { //画窗口 ShowWindow(lpDDSTemp, bShowWindow, left, top); //画滚动条 if( ScrollBar.PageNum < ScrollBar.MaxNum-ScrollBar.MinNum ) { ScrollBar.CheckLoop(); } }