I intend to originate a fully cross-platform, based entirely OIOIC, window graphical interface library project. Here is a first draft ( To download: Downloads - oic-wgi - Google Code ).
Project Name: WGI, (W)indow (G)raphical (I)nterface.
The diagram of Window Frame
Any window has an optional Window Frame. The Window Frame is composed of Icon, Caption, Title bar, Minimize button, Maximize button, Close, button, Vertical scroll, Horizontal scroll, Borderline. The following diagram:
http://a.cvimg.cn/UploadFile/UserFil...205b3ac93d.jpg
WGI Hierarchy Chart
1. CI:(C)haracter (I)nterface.
2. Chinterface:(Ch)aracter (interface).
3. GI:(G)raphical (I)nterface.
4. Grinterface:(Gr)aphical (interface).
5. WGI:(W)indow (G)raphical (I)nterface.
6. WGrinterface:(W)indow (Grinterface).
http://a.cvimg.cn/UploadFile/UserFil...8667d55762.jpg
Have you ever used GTK?
I'm not worried about multiple OSs, but multiple applications. I envision something like the following to compile each program:
gcc service1.c mathutils.c -o service1.exe
gcc service2.c sqlutils.c -o service2.exe
gcc service3.c mathutils.c sqlutils.c -o service3.exe
gcc service4.c -o service4.exe
gcc app1.c guiutils.c mathutils.c -o app1.exe
gcc app2.c guiutils.c sqlutils.c -o app2.exe
gcc app3.c guiutils.c mathutils.c sqlutils.c -o app3.exe
gcc app4.c guiutils.c -o app4.exe
For example, an application is divided into many modules. Each module needs OIOIC files. Each module is solely developed and compiled. Finally, link all modules to generate the application.
You are worried about:
In the development, if the programmer(s) of a module modified its OIOIC files, the application will be running in confusion?
My answer is:
If the OBJECT structure is changed, certainly in confusion. The most logical approach is: If a module developers have a good idea to optimize OIOIC files, MUST DO NOT monopolize it! It is wise to share it with other modules to ensure that all modules use the same and the best OIOIC files.
Therefore, to continue reasoning, all applications in an OS must use the OS's built-in OIOIC files. To continue reasoning, if OIOIC will be popular in the future, it should be a standard of the C at that time.
Last edited by pervise.zhao; 04-27-2009 at 02:16 AM.
Unfortunately, that means using OIOIC would be almost impossible in many situations.
Frequently, on module is developed completely independently of another module. Now, suppose I am developing mathutils as a third-party module, developed with OIOIC. I am probably NOT going to distribute the source code, just the compiled object files as a library and the necessary header files. The result would be my library contains a compiled version of OIOIC.c as part of the library.
If I distribute this to another developer that happens to also be using OIOIC, then there will be immediate problems using my library. The result is that, as a library developer, I could never use OIOIC because of the potential risk of incompatibilities.
You certainly do not have to distribute the source code of your module, and only distribute the module library and the necessary header file(s).
NO potential risk of incompatibilities! Another developer, who uses your module, must use the same version of OIOIC with your module.
Therefore, it is necessary to establish a specialized organization to maintain OIOIC. If you are interested in OIOIC, we can cooperate together to maintain OIOIC's growth.
Unfortunately, I think C++ does a better job of modeling OOP programming, and has fewer potential problems with the issues I raised. Because C++ is very mature (30+ years old) and has huge amounts of practical coding behind it, the resources exist to handle whatever issues I may encounter.
C++ offers things like namespaces to allow me to write modules with essentially no chance of collisions with other people's code. C++ requires far less code to do what OIOIC offers. C++ has far fewer problems with cross-platform compilation.
All of this causes me to view C++ as a much better investment of my time than OIOIC. Finally, C++ was designed to be linkable to regular C code. That means that I can take something like GTK (written in C) and use it as part of a C++ program. Similarly, I can write a module in C++ that can be used by someone else's C program. C, C++, and Assembler can be intermixed to result in independent pieces of code that accomplish what is needed in the most practical way possible.
Last edited by pervise.zhao; 04-29-2009 at 04:56 AM.
There are currently 1 users browsing this thread. (0 members and 1 guests)
Bookmarks