Wednesday, December 13, 2006

Status Report for Date 11/30/2006 to Date 12/13/2006

Recently, I must prepare for three final examinations(for courses I selected) simultaneously. So, less time was spent on Maze. What I have done is listed below:
1) make maze interface display in English
Firstly, I tried to compile and build maze client from source code. Here is the detailed procedure: http://zhenhua-guo.blogspot.com/2006/12/compile-and-build-maze-client.html .
Secondly, I changed the interface to support English. Original language supported is Chinese. The resource files that describe the windows, forms and so on are easy to change because they are separate files. However. many displayed strings are dynamically specified in program source code during execution time. This kind of display is hard to modify because these strings scatter all over the source code. I have tried to make all these strings displayed in English. However, there may be some strings left.
2) Try to make an install package
Firstly, I must find a free software to complete this task.
Secondly, because many optional actions can be done during making an install package, for example, wirting registry, creating directory, I need to ask the members of maze group to know what exactly happens during making an install package.
3) I am writting a simple user manual.
This manual will be used to tell rookies how to use Maze.
4) I will write a list of features of Maze.
Although I have written a description about Maze, I don't think I have learned about all its features. Because there is no systematic technical specification for Maze, it is hard for me to catch all features by reading source code. I think I will contact members of Maze group to get more information. However, I am not sure whether they have full description for Maze.

Friday, December 08, 2006

Compile and Build Maze Client

These days, I am continuously working on modifying, compiling and building maze client. Because there is no document and some additional packages are used, it is difficult to build successfully from souce code.
I downloaded a Entriprise Trial edition(C++ Builder 6.0) from website of Borland company. During the installation of C++ Builder, I selected all optional packages in case some of them are needed later.
After installation of C++ Builder:
1) ShellControls package must be installed.
This package is not installed as standard package when C++ builder is installed.
This package is located at "CB_DIR/Examples/ShellControls"(CB_DIR is the directory where you install C++ Builder to). There are two packages in this directory: bcbshlctrls.bpk and dclshlctrls.bpk. Package bcbshlctrls.bpk should be opened in C++ Builder and compiled. Package dclshlctrls.bpk should be opened in C++ Builder, compiled and installed.
(dclshlctrls.bpk is a design time package)

2) I think the project file of maze is destroyed and I must modify it manually.
In maze project, shellctrls.obj is needed. However, in project file, there is no statement to indicate compile how to build shellctrls.obj. So, I add several directives to tell C++ Builder how to build shellctrl.obj.
In section <OBJFILES> , I added "cbdebug\ShellCtrls.obj"
In section <FILELIST>, I added <FILE FILENAME="ShellCtrls.cpp" FORMNAME="" UNITNAME="ShellCtrls.cpp" CONTAINERID="CCompiler" DESIGNCLASS="" LOCALCOMMAND="">

3) If compile errors occur, for example, some macros in ShellCtrls.cpp are not defined...:
then you should add a macro definition in this file.
"#define NO_WIN32_LEAN_AND_MEAN" should be added to ShellCtrls.cpp.
Note!!! this definition must be put at the beginning of the file. If you put it otherwhere, strange errors may occur!!(Lots of time was consumed when I debugged it here).

4) To make sure everything is OK, I put all source files including some provided by C++ Builder needed into project directory. Those files provided by C++ Builder are shellconsts.h, ShellCtrls.h, ShellCtrls.cpp.