China DOS Union

-- Unite DOS · Advance DOS · Grow DOS --

Union site: www.cn-dos.net Forum site: www.cn-dos.net/forum
DOS stands for freedom, openness and progress. Let us work hard, learn from the openness and GNU spirit of FreeDOS and Linux, and together build and grow a free GNU GPL world!

中国DOS联盟论坛
The time now is 2026-06-24 05:54
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » The Terminator of DOS Interface Development View 94,220 Replies 290
Floor 91 Posted 2006-08-28 02:03 ·  中国 广东 东莞 电信
初级用户
Credits 66
Posts 22
Joined 2006-08-27 00:22
19-year member
UID 61339
Status Offline
Please ask under what circumstances of equipped with relevant hardware, how does the software support LCD Touch Panel?
Floor 92 Posted 2006-08-28 02:06 ·  中国 广东 东莞 电信
初级用户
Credits 66
Posts 22
Joined 2006-08-27 00:22
19-year member
UID 61339
Status Offline
There are some small issues with certain controls in WinSail. How can I modify them? Will the kernel source code and control source code be made public?
Floor 93 Posted 2006-08-28 11:26 ·  中国 广东 深圳 电信
高级用户
★★
Credits 668
Posts 295
Joined 2005-07-26 00:00
20-year member
UID 41110
Gender Male
From 广东深圳
Status Offline
### About Mouse Touch Screen:

(1) Before InitSystem(), register the user's own written mouse function call function with the WinSail kernel
::AfxRegisterMouseFc(::MyMouse_Touch);

Among them, the prototype of MyMouse_Touch is:
void far MyMouse_Touch(unsigned int ax, unsigned int bx,
unsigned int cx, unsigned int dx);


void far MyMouse_Touch(unsigned int ax, unsigned int bx,
unsigned int cx, unsigned int dx)
{
//Register AX = 0 --> Reset Mouse
//Register AX = 1 --> Open Mouse
//Register AX = 2 --> Close Mouse
//Register AX = 3 --> IsMouseDown
//Register AX = 4 --> SetMouseLocation


REGS regs;
_fmemset(&regs, 0, sizeof(REGS));


/*
Write your own code here, refer to the mouse function call INT33, format the regs register according to the entry and exit
Register AX = 0 --> Reset Mouse -> Reset mouse
Register AX = 1 --> Open Mouse -> Display mouse
Register AX = 2 --> Close Mouse -> Do not display mouse
Register AX = 3 --> IsMouseDown -> Get key information
Register AX = 4 --> SetMouseLocation -> Set mouse position
*/
//.....
//.....
//....


// Format the mouse message structure MOUSEMSG SystemMouse according to the regs return value here

switch(ax)
{
case 0: //Reset Mouse
{
if (regs.x.ax == (unsigned) - 1)
{
SystemMouse.exist = 1;
}
else
{
SystemMouse.exist = 0;
}
SystemMouse.visible = FALSE;

break;
}
case 1: //Open Mouse
case 2: //Close Mouse
{
break;
}
case 3: //IsMouseDown
{
SystemMouse.statue = regs.x.bx;
SystemMouse.point.x = regs.x.cx;
SystemMouse.point.y = regs.x.dx;
break;
}
case 4: //SetMouseLocation
{
SystemMouse.statue = 0;
SystemMouse.times = 0;
SystemMouse.point.x = cx;
SystemMouse.point.y = dx;
break;
}

default:
{
break;
}
}

return;
}
Floor 94 Posted 2006-09-18 23:39 ·  中国 云南 红河哈尼族彝族自治州 个旧市 电信
中级用户
★★
Credits 478
Posts 132
Joined 2003-07-02 00:00
22-year member
UID 6296
Gender Male
Status Offline
How to get the status of checkboxes and radio buttons in winsail? I can't get it with GetRadio()
Floor 95 Posted 2006-09-19 03:55 ·  中国 广东 深圳 宝安区 电信
高级用户
★★
Credits 668
Posts 295
Joined 2005-07-26 00:00
20-year member
UID 41110
Gender Male
From 广东深圳
Status Offline
Use the CRadio::SetBox() function to set a check box or a radio button.
Use the CRadio::SetRadio() function to set the state of a check box/radio button.
Use the CRadio::GetRadio() function to get the state of a check box/radio button.
Use the CRadio::GetStatic() function to set the group property of a radio button.
For radio buttons: there is a "group" issue, similar to the WS_GROUP attribute of the VC button control in Windows. In a group, only the first CRadio in the group can have the WS_GROUP attribute.

Suppose there are 3 radio buttons, which form a 3-choice logic operation, namely
CRadio* pRadio1 --- Radio button 1, with the content "Male"
CRadio* pRadio2 --- Radio button 2, with the content "Female"
CRadio* pRadio3 --- Radio button 3, with the content "Confidential"

.........

CRadio* pRadio1 = new CRadio(pDialog); // Allocate an instance
CRadio* pRadio2 = new CRadio(pDialog); // Allocate an instance
CRadio* pRadio3 = new CRadio(pDialog); // Allocate an instance

pRadio1->CreateObject(10, 30 + 18 * 0, 100, 16, "Male");
pRadio2->CreateObject(10, 30 + 18 * 1, 100, 16, "Female");
pRadio3->CreateObject(10, 30 + 18 * 2, 100, 16, "Confidential");

pRadio1->SetBoX(FALSE); // It is a radio button, not a check button
pRadio2->SetBoX(FALSE); // It is a radio button, not a check button
pRadio3->SetBoX(FALSE); // It is a radio button, not a check button

pRadio1->SetStatic(TRUE); // The Radio1 control is the first one in the group of Radio1~3 radio buttons.


................


To get which one in the group is selected, you can only traverse each member of the group.
if (pRadio1->GetRadio())
{
}
else if (pRadio2->GetRadio())
{
}
else if (pRadio3->GetRadio())
{
}

........

So the problem raised by profree may refer to "radio buttons"!
Floor 96 Posted 2006-09-19 22:54 ·  中国 云南 红河哈尼族彝族自治州 个旧市 电信
中级用户
★★
Credits 478
Posts 132
Joined 2003-07-02 00:00
22-year member
UID 6296
Gender Male
Status Offline
Thanks for the reply.

How to get which items are selected if it's a checkbox?

I really don't understand. If I have multiple radio buttons/checkboxes in a window, and they are divided into more than one group, how to distinguish which group they belong to, and how to set them apart?

For example:

Gender is divided into male, female,
Age is divided into: 15 - 20, 21 - 30, 31 - 40,
Education: junior college, bachelor's degree, master's degree, doctorate
The above three groups are all in the same window. How to set them apart. I think it would be easier if there is a concept of "belonging to which group".

In addition, if a dialog box is to be designed to have previous step and next step, how to specifically do it? Does it mean that both previous step and next step need to call another function to "draw" the dialog box respectively? If there are too many dialog boxes "drawn", the program will automatically exit (probably because of insufficient memory).
Floor 97 Posted 2006-09-20 05:04 ·  中国 广东 深圳 电信
高级用户
★★
Credits 668
Posts 295
Joined 2005-07-26 00:00
20-year member
UID 41110
Gender Male
From 广东深圳
Status Offline
Generating a dialog box with VC++, converting MakeDlg to the source code of WinSail, and reading it can help you understand it better.

Regarding radio buttons (applicable to WinSail and Microsoft Windows)
(1) In a dialog box, there can be multiple "groups" of radio buttons
(2) All radio buttons in a group must be continuously allocated.
(3) The property of the first radio button in a group is to have the WS_GROUP window style
If it is VC, check the Static property in the property box of the radio button.
If it is Winsail, call CRadio::SetStatic(TRUE);
(4) Suppose there are 3 groups of radio buttons
The first group is gender, divided into male, female,
The second group is age: 15 - 20, 21 - 30, 31 - 40,
The third group is education: junior college, bachelor's degree, master's degree, doctor's degree


//First group
CRadio* pRadio1 = new CRadio(pDialog); //Allocate instance
CRadio* pRadio2 = new CRadio(pDialog); //Allocate instance

pRadio1->CreateObject(10, 30 + 18 * 0, 100, 16, "Male");
pRadio2->CreateObject(10, 30 + 18 * 1, 100, 16, "Female");

pRadio1->SetBox(FALSE); //It is a radio button, not a check box
pRadio2->SetBox(FALSE); //It is a radio button, not a check box

pRadio1->SetStatic(TRUE); //Radio1 control is the leader of the group of Radio1 - 2


//Second group
CRadio* pRadio3 = new CRadio(pDialog); //Allocate instance
CRadio* pRadio4 = new CRadio(pDialog); //Allocate instance
CRadio* pRadio5 = new CRadio(pDialog); //Allocate instance

pRadio3->CreateObject(10, 50 + 18 * 0, 100, 16, "15 - 20");
pRadio4->CreateObject(10, 50 + 18 * 1, 100, 16, "21 - 30");
pRadio5->CreateObject(10, 50 + 18 * 2, 100, 16, "31 - 40");

pRadio3->SetStatic(TRUE); //Radio3 control is the leader of the group of Radio3 - 5


//Third group
CRadio* pRadio6 = new CRadio(pDialog); //Allocate instance
CRadio* pRadio7 = new CRadio(pDialog); //Allocate instance
CRadio* pRadio8 = new CRadio(pDialog); //Allocate instance
CRadio* pRadio9 = new CRadio(pDialog); //Allocate instance

pRadio6->CreateObject(10, 70 + 18 * 0, 100, 16, "Junior College");
pRadio7->CreateObject(10, 70 + 18 * 1, 100, 16, "Bachelor's Degree");
pRadio8->CreateObject(10, 70 + 18 * 2, 100, 16, "Master's Degree");
pRadio9->CreateObject(10, 70 + 18 * 3, 100, 16, "Doctor's Degree");


pRadio6->SetStatic(TRUE); //Radio6 control is the leader of the group of Radio6 - 9


------------------------------------------------------------
Some GUIs of WinSail V2.0 have been updated, and you can download it again!
Floor 98 Posted 2006-09-20 05:19 ·  中国 广东 深圳 电信
高级用户
★★
Credits 668
Posts 295
Joined 2005-07-26 00:00
20-year member
UID 41110
Gender Male
From 广东深圳
Status Offline
(1)There are only 120 global control handles in WinSail V2.0.
#define MAX_OBJECT_LIST_COUNT 120
(2)WinSail V2.0 runs in real mode and is subject to the 640K memory limit of DOS.
(3)There is no limit on the number of controls in each window/dialog box, which is subject to the memory and the number of global control handles.
Floor 99 Posted 2006-09-21 00:20 ·  中国 云南 红河哈尼族彝族自治州 个旧市 电信
中级用户
★★
Credits 478
Posts 132
Joined 2003-07-02 00:00
22-year member
UID 6296
Gender Male
Status Offline
My window needs to be completed using next step and previous step. When I want to press next step or previous step, I need to delete this window and regenerate a new window. I define a global variable. When executing next step, I first delete the previous window and then generate a new window, but it doesn't work. I don't know why.
Floor 100 Posted 2006-09-21 21:28 ·  中国 广东 深圳 电信
高级用户
★★
Credits 668
Posts 295
Joined 2005-07-26 00:00
20-year member
UID 41110
Gender Male
From 广东深圳
Status Offline
You cannot delete its parent window inside the "control" function of this window.
Only the window exit message can be sent. It can be done through
void CloseWindow(CObject* pObj); -------- The window return value is "IDCLOSE"
void ClickCloseButton(CObject* pObj); --- The window return value is "IDCLOSE"
void ClickEnterButton(CObject* pObj); --- The window return value is "IDOK"
void ClickCancelButton(CObject* pObj); -- The window return value is "IDCANCEL"
void ClickYesButton(CObject* pObj); ----- The window return value is "IDYES"
void ClickNoButton(CObject* pObj); ------ The window return value is "IDNO"
void ClickRetryButton(CObject* pObj); --- The window return value is "IDRETRY"

The window message loop function is: int CWindow::PurseMessage();
The dialog box message loop function is: int CDialog::DoModal();

The function source code of int CDialog::DoModal() is
int CDialog::DoModal()
{
return(CWindow::PurseMessage());
}


The function source code of void ClickEnterButton(CObject* pObj) is
void ClickEnterButton(CObject* pObj)
{
::CloseWindow(pObj);

extern int nAfxMessageFlags;
nAfxMessageFlags = IDOK;
}

The function source code of void ClickCancelButton(CObject* pObj) is
void ClickCancelButton(CObject* pObj)
{
::CloseWindow(pObj);

extern int nAfxMessageFlags;
nAfxMessageFlags = IDCANCEL;
}
Floor 101 Posted 2006-09-21 21:34 ·  中国 广东 深圳 电信
高级用户
★★
Credits 668
Posts 295
Joined 2005-07-26 00:00
20-year member
UID 41110
Gender Male
From 广东深圳
Status Offline
The source code of the function int CWindow::PurseMessage() is:
int CWindow::PurseMessage()
{
int nOldMessageFlags = nAfxMessageFlags; // Protect the original value
nAfxMessageFlags = IDNULL; // Refresh window exit flag

//......

// Window message loop
while (nAfxMessageFlags == IDNULL)
{
//....
}


//...


int nResult = nAfxMessageFlags;
nAfxMessageFlags = nOldMessageFlags; // Restore the original value
return (nResult);
}
Floor 102 Posted 2006-09-21 23:53 ·  中国 广东 深圳 电信
高级用户
★★
Credits 668
Posts 295
Joined 2005-07-26 00:00
20-year member
UID 41110
Gender Male
From 广东深圳
Status Offline
```cpp
/*
Wizard property encapsulation. Since WinSail is limited by the 640K memory, it can be designed in this way
(1) The page registered to the "wizard page" is a function. The function prototype is
int far page(CObject* pObj);
Requirements for the return value
IDNO ------ means the "Previous" button is clicked
IDYES ----- means the "Next" button is clicked
IDCANCEL -- means the "Exit" button is clicked
(2) Up to MAX_WIZARD_COUNT ( =10) pages are supported
*/

#include <Symbol.h>
#include <Myframe.h>


#define MAX_WIZARD_COUNT 10
class CWizard
{
private:
int m_nOrder;
int m_nCount;
int far (*m_psFc[MAX_WIZARD_COUNT])(CObject *);
public:
BOOL AddDialog(int far (*pFc)(CObject*));
public:
int DoWizard();

public:

CWizard();
~CWizard();
};


CWizard::CWizard()
{
m_nOrder = 0;
m_nCount = 0;
for (int i = 0; i < MAX_WIZARD_COUNT; i++)
{
m_psFc[i] = NULL;
}
}

CWizard::~CWizard()
{
}

BOOL CWizard::AddDialog(int far (*pFc)(CObject *))
{
if (pFc == NULL || m_nCount >= MAX_WIZARD_COUNT)
{
return (FALSE);
}

m_psFc[m_nCount++] = pFc;

return (TRUE);
}

int CWizard::DoWizard()
{
//1 - IDNO -- Previous
//2 - IDYES -- Next
//3 - Cancel -- Cancel
int far (*pFc)(CObject *) = NULL;

int nResult = IDCLOSE;
while (1)
{
pFc = m_psFc[m_nOrder];

if (pFc == NULL)
{
break;
}

nResult = pFc(NULL);

if (nResult == IDNO)
{
if (m_nOrder > 0)
{
m_nOrder--;
}
continue;
}
else if (nResult == IDYES)
{
if (m_nOrder + 1 < m_nCount)
{
m_nOrder++;
}
continue;
}

break;
}

return (nResult);
}
```
Floor 103 Posted 2006-09-21 23:58 ·  中国 广东 深圳 电信
高级用户
★★
Credits 668
Posts 295
Joined 2005-07-26 00:00
20-year member
UID 41110
Gender Male
From 广东深圳
Status Offline
Rename the CWizard::AddDialog() function to the CWizard::AddPage() function.

The example is as follows:

#include <Symbol.h>
#include <MyFrame.h>

int far Page1(CObject* pCurObj)
{
//Create a Dialog On the Center of Desktop
CDialog* pDialog = new CDialog;//Allocate instance
pDialog->CreateWindow(0, 0, 321, 240, "Page 1: 1");//Create window
pDialog->Center();//Center the window


//Create Close's Button Control
CCloseButton* pCloseButton = new CCloseButton(pDialog);//Allocate and create close button

//Create a Button Control
CButton* pButton1 = new CButton(pDialog);
pButton1->CreateObject(10, 199, 93, 24, "Previous step(\x3P\x3)");
pButton1->SetShortcutKey(VK_ALT_P);
pButton1->SetFc(ClickNoButton);

//Create a Button Control
CButton* pButton2 = new CButton(pDialog);
pButton2->CreateObject(111, 199, 93, 24, "Next step(\x3N\x3)");
pButton2->SetShortcutKey(VK_ALT_N);
pButton2->SetFc(ClickYesButton);

//Create a Button Control
CButton* pButton3 = new CButton(pDialog);
pButton3->CreateObject(211, 199, 93, 24, "Exit(\x3\C\x3)");
pButton3->SetShortcutKey(VK_ALT_C);
pButton3->SetFc(ClickCancelButton);


//Create Radio Control
CRadio* pRadio1 = new CRadio(pDialog);
pRadio1->CreateObject(28, 59, 57, 24, "Male");
pRadio1->SetStatic(TRUE);
pRadio1->SetRadio(TRUE);
pRadio1->SetID(RADIOBASE + 1 - 1);

//Create Radio Control
CRadio* pRadio2 = new CRadio(pDialog);
pRadio2->CreateObject(100, 61, 57, 24, "Female");
pRadio2->SetID(RADIOBASE + 2 - 1);

//Create Radio Control
CRadio* pRadio3 = new CRadio(pDialog);
pRadio3->CreateObject(171, 61, 57, 24, "保密");
pRadio3->SetID(RADIOBASE + 3 - 1);

//Create Radio Control
CRadio* pRadio4 = new CRadio(pDialog);
pRadio4->CreateObject(28, 148, 57, 24, "Associate degree");
pRadio4->SetStatic(TRUE);
pRadio4->SetRadio(TRUE);
pRadio4->SetID(RADIOBASE + 4 - 1);

//Create Radio Control
CRadio* pRadio5 = new CRadio(pDialog);
pRadio5->CreateObject(100, 148, 57, 24, "Bachelor's degree");
pRadio5->SetID(RADIOBASE + 5 - 1);

//Create Radio Control
CRadio* pRadio6 = new CRadio(pDialog);
pRadio6->CreateObject(169, 148, 57, 24, "Master's degree");
pRadio6->SetID(RADIOBASE + 6 - 1);

//Create Radio Control
CRadio* pRadio7 = new CRadio(pDialog);
pRadio7->CreateObject(229, 147, 57, 24, "Doctoral degree");
pRadio7->SetID(RADIOBASE + 7 - 1);

//Create Group Control
CStatic* pGroup1 = new CStatic(pDialog);
pGroup1->CreateObject(10, 29, 285, 67, "Gender");

//Create Group Control
CStatic* pGroup2 = new CStatic(pDialog);
pGroup2->CreateObject(10, 118, 285, 66, "Degree");

//Show Window
pDialog->ShowWindow();//Show window

//go into Message Loop
int nResult = pDialog->DoModal();//Enter window message loop

//Destroy Window
delete pDialog;//Delete dialog box


return (nResult);

}

int far Page2(CObject* pCurObj)
{
//Create a Dialog On the Center of Desktop
CDialog* pDialog = new CDialog;//Allocate instance
pDialog->CreateWindow(0, 0, 321, 240, "Page 2: 2");//Create window
pDialog->Center();//Center the window

//Create Close's Button Control
CCloseButton* pCloseButton = new CCloseButton(pDialog);//Allocate and create close button

//Create a Button Control
CButton* pButton1 = new CButton(pDialog);
pButton1->CreateObject(10, 199, 93, 24, "Previous step(\x3P\x3)");
pButton1->SetShortcutKey(VK_ALT_P);
pButton1->SetFc(ClickNoButton);

//Create a Button Control
CButton* pButton2 = new CButton(pDialog);
pButton2->CreateObject(111, 199, 93, 24, "Next step(\x3N\x3)");
pButton2->SetShortcutKey(VK_ALT_N);
pButton2->SetFc(ClickYesButton);

//Create a Button Control
CButton* pButton3 = new CButton(pDialog);
pButton3->CreateObject(211, 199, 93, 24, "Exit(\x3\C\x3)");
pButton3->SetShortcutKey(VK_ALT_C);
pButton3->SetFc(ClickCancelButton);

//Create Radio Control
CRadio* pRadio1 = new CRadio(pDialog);
pRadio1->CreateObject(28, 64, 57, 24, "Beijing");
pRadio1->SetStatic(TRUE);
pRadio1->SetRadio(TRUE);
pRadio1->SetID(RADIOBASE + 1 - 1);

//Create Radio Control
CRadio* pRadio2 = new CRadio(pDialog);
pRadio2->CreateObject(100, 65, 57, 24, "Shanghai");
pRadio2->SetID(RADIOBASE + 2 - 1);

//Create Radio Control
CRadio* pRadio3 = new CRadio(pDialog);
pRadio3->CreateObject(171, 65, 57, 24, "Guangzhou");
pRadio3->SetID(RADIOBASE + 3 - 1);

//Create Combo Control
CComboBox* pComboBox1 = new CComboBox(pDialog);
pComboBox1->CreateCombo(124, 122, 169, 24, NULL);
pComboBox1->SetID(COMBOBASE + 1 - 1);


//Create Group Control
CStatic* pGroup1 = new CStatic(pDialog);
pGroup1->CreateObject(10, 34, 285, 67, "Native place");

//Create a Label Control
CLabel* pLabel1 = new CLabel(pDialog);
pLabel1->CreateObject(13, 125, 67, 12, "Select year(N)");


//Show Window
pDialog->ShowWindow();//Show window

//go into Message Loop
int nResult = pDialog->DoModal();//Enter window message loop

//Destroy Window
delete pDialog;//Delete dialog box


return (nResult);

}

int far Page3(CObject* pCurObj)
{
//Create a Dialog On the Center of Desktop
CDialog* pDialog = new CDialog;//Allocate instance
pDialog->CreateWindow(0, 0, 321, 240, "Page 3: 3");//Create window
pDialog->Center();//Center the window

//Create Close's Button Control
CCloseButton* pCloseButton = new CCloseButton(pDialog);//Allocate and create close button

//Create a Button Control
CButton* pButton1 = new CButton(pDialog);
pButton1->CreateObject(10, 199, 93, 24, "Previous step(\x3P\x3)");
pButton1->SetShortcutKey(VK_ALT_P);
pButton1->SetFc(ClickNoButton);

//Create a Button Control
CButton* pButton2 = new CButton(pDialog);
pButton2->CreateObject(111, 199, 93, 24, "Next step(\x3N\x3)");
pButton2->SetShortcutKey(VK_ALT_N);
pButton2->SetFc(ClickYesButton);

//Create a Button Control
CButton* pButton3 = new CButton(pDialog);
pButton3->CreateObject(211, 199, 93, 24, "Exit(\x3\C\x3)");
pButton3->SetShortcutKey(VK_ALT_C);
pButton3->SetFc(ClickCancelButton);

//Create Slider Control
CSliderCtrl* pSliderCtrl1 = new CSliderCtrl(pDialog);
pSliderCtrl1->CreateObject(37, 153, 241, 24, NULL);
pSliderCtrl1->SetID(SLIDERBASE + 1 - 1);
pSliderCtrl1->SetHorz(TRUE);

//Create Slider Control
CSliderCtrl* pSliderCtrl2 = new CSliderCtrl(pDialog);
pSliderCtrl2->CreateObject(138, 38, 30, 111, NULL);
pSliderCtrl2->SetID(SLIDERBASE + 2 - 1);
pSliderCtrl2->SetHorz(FALSE);


//Show Window
pDialog->ShowWindow();//Show window

//go into Message Loop
int nResult = pDialog->DoModal();//Enter window message loop

//Destroy Window
delete pDialog;//Delete dialog box


return(nResult);

}

void DemoWizard()
{
CWizard *pWizard = new CWizard;


pWizard->AddPage (Page1);
pWizard->AddPage (Page2);
pWizard->AddPage (Page3);


pWizard->DoWizard();

DELETE(pWizard);
}
Floor 104 Posted 2006-09-23 00:09 ·  中国 云南 红河哈尼族彝族自治州 个旧市 电信
中级用户
★★
Credits 478
Posts 132
Joined 2003-07-02 00:00
22-year member
UID 6296
Gender Male
Status Offline
Thanks a lot for the enthusiastic help from firstsail!

I've been looking at the materials of winsail these days. There are several suggestions:
1. It seems that winsail doesn't have a drive list, tab controls, and spin controls. I wonder if firstsail can add them.
2. I also reflected on the issue of the interface and control aesthetics of firstsail before. I wonder if firstsail can consider it again.
I downloaded the source code of chicago9 (all source codes) a while ago. There are executable files in it, including controls like the drive list control and spin control that winsail doesn't have. The running screenshots are as follows:








It is suggested that firstsail can take its advantages. This file can be downloaded online, or I can upload it if needed.

[ Last edited by profree on 2006-9-23 at 02:32 ]
Floor 105 Posted 2006-09-23 06:04 ·  中国 广东 深圳 电信
高级用户
★★
Credits 668
Posts 295
Joined 2005-07-26 00:00
20-year member
UID 41110
Gender Male
From 广东深圳
Status Offline
The kernel of WinSail V2.0 has been re-uploaded.

(1) The directory where the demo program is located is "Sail3000"
(2) The "wizard" class is already supported by the "WinSail" kernel.
(3) The detailed design document of the "wizard" class is named "Interface Non-Control Class_CWizard Wizard Class Detailed Design.doc"
(4) The "wizard" demo module is in the "sail3000\Wizard2.cpp" file
(5) The Sail3000\sail2000.exe executable file can be run on Win98, Windows2000, and WindowsXP.
(6) The mouse can only be displayed under "Win98" or "pure DOS".

For all interfaces developed with WinSail V2.0, as long as the "F3" function key is pressed, the screen of the current window will be automatically recorded as a 256-color "a.bmp" file, which is convenient for writing instructions.
‹ Prev 1 5 6 7 8 9 20 Next ›
Forum Jump: