📄 minigui.txt
字号:
}
return DefaultMainWinProc(hWnd, message, wParam, lParam);
}
/*
************************************************************************************************************************
**函数原型 : int MiniGUIMain (int argc, const char* argv[])
**参数说明 :
**返回 值 :
**创 建 人:
**最后修改日期: 2006年2月9日
**描 述: 主程序入口,主窗体的创建
************************************************************************************************************************
*/
int MiniGUIMain (int argc, const char* argv[])
{
MSG Msg;
HWND hMainWnd;
MAINWINCREATE CreateInfo;
#ifdef _LITE_VERSION
SetDesktopRect(0, 0, 1024, 768);
#endif
CreateInfo.dwStyle = WS_VISIBLE ;//| WS_BORDER | WS_CAPTION;//
CreateInfo.dwExStyle = WS_EX_NONE;
CreateInfo.spCaption = "监控系统";
CreateInfo.hMenu = 0;
CreateInfo.hCursor = GetSystemCursor(0);
CreateInfo.hIcon = 0;
CreateInfo.MainWindowProc = ZYHWinProc;
CreateInfo.lx = 0;
CreateInfo.ty = 0;
CreateInfo.rx = g_rcScr.right;
CreateInfo.by = g_rcScr.bottom;
CreateInfo.iBkColor = COLOR_lightwhite;
CreateInfo.dwAddData = 0;
CreateInfo.hHosting = HWND_DESKTOP;
hMainWnd= CreateMainWindow (&CreateInfo);
if (hMainWnd == HWND_INVALID)
return -1;
ShowWindow(hMainWnd, SW_SHOWNORMAL);
init(&buffer); //共享数据区初始化
pthread_create(&th_a,NULL,producer,NULL); //创建线程th_a
pthread_setcancelstate(PTHREAD_CANCEL_ENABLE,NULL); //设置线程取消操作ENABLE
pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS,NULL); //设置线程立即响应取消操作
while (GetMessage(&Msg, hMainWnd)) {
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
MainWindowThreadCleanup (hMainWnd);
return 0;//佟光磊
}
/************************************************************************************************************************
**函数原型 : static PMAXMIN CanShu(PMAXMIN zuizhi,int fls);
**参数说明 :
**返回 值 :
**创 建 人:
**最后修改日期: 2006年2月9日
**描 述: 初始化参数
************************************************************************************************************************
*/
static PMAXMIN CanShu(PMAXMIN zuizhi,int fls)
{
float valueMax,valueMin;
int i;
MAXMIN zui_zi;
FILE *fp;
if(fls==0)
{
if((fp=fopen("canshumax.dat","r"))==(FILE *)0)
{
return;
}
for(i=0;i<32;i++)
{
fscanf(fp,"%e%e",&valueMax,&valueMin);
zui_zi.Max[i]= valueMax ;
zui_zi.Min[i]=valueMin;
}
}
else
{
if((fp=fopen("canshumax.dat","w"))==(FILE *)0)
{
return;
}
for(i=0;i<32;i++)
{
valueMax=zuizhi->Max[i];
valueMin=zuizhi->Min[i];
fprintf(fp,"%e%e",valueMax,valueMin);
}
}
return &zui_zi;
}
/************************************************************************************************************************
**函数原型 : static Show(void);
**参数说明 :
**返回 值 :
**创 建 人:
**最后修改日期: 2006年2月9日
**描 述: 程序初始化
************************************************************************************************************************
*/
static void Show(PMINIINIT Xianshi,int panduan)
{
int i;
if(panduan==0)
{
for(i=0;i<8;i++)
{
ShowWindow(Xianshi->hStaticP[i],SW_SHOW );
ShowWindow(Xianshi->hStaticT[i],SW_SHOW );
ShowWindow(Xianshi->hStaticM[i],SW_SHOW );
ShowWindow(Xianshi->hStaticS[i],SW_SHOW );
ShowWindow(Xianshi->hEditP[i],SW_SHOW );
ShowWindow(Xianshi->hEditT[i],SW_SHOW );
ShowWindow(Xianshi->hEditM[i],SW_SHOW );
ShowWindow(Xianshi->hEditS[i],SW_SHOW );
}
}
else
{
for(i=0;i<8;i++)
{
ShowWindow(Xianshi->hStaticP[i],SW_HIDE );
ShowWindow(Xianshi->hStaticT[i],SW_HIDE );
ShowWindow(Xianshi->hStaticM[i],SW_HIDE );
ShowWindow(Xianshi->hStaticS[i],SW_HIDE );
ShowWindow(Xianshi->hEditP[i],SW_HIDE );
ShowWindow(Xianshi->hEditM[i],SW_HIDE );
ShowWindow(Xianshi->hEditT[i],SW_HIDE );
ShowWindow(Xianshi->hEditS[i],SW_HIDE );
}
}
}
/*
************************************************************************************************************************
**函数原型 : static InitMiniQX(HWND hwnd);
**参数说明 :
**返回 值 :
**创 建 人:
**最后修改日期: 2006年2月9日
**描 述: 程序初始化
************************************************************************************************************************
*/
static PMINIINIT InitMiniQX(HWND hwnd)
{
int i,j;
MINIINIT hKongJian;
LoadBitmap (HDC_SCREEN, &(hKongJian.bmp_TX), "s3.jpg");
LoadBitmap (HDC_SCREEN, &(hKongJian.bmp_WB), "b3.jpg");
for(i=0;i<8;i++)
hKongJian.mingcheng[i]="温度";
for(i=8;i<16;i++)
hKongJian.mingcheng[i]="压力";
for(i=16;i<24;i++)
hKongJian.mingcheng[i]="流量";
for(i=24;i<32;i++)
hKongJian.mingcheng[i]="电压";
//------------------------------控件操作----------------------------------------------
for(i=0;i<8;i++)
{
//静态标签温度
hKongJian.hStaticP[i]=CreateWindow(CTRL_STATIC,hKongJian.mingcheng[i],CS_OWNDC|WS_VISIBLE \
| SS_CENTER | SS_NOTIFY,IDC_STATIC+i,10, 10+50*i, 60,20, hwnd, 0);
SetWindowFont(hKongJian.hStaticP[i],logfontgb12); //设置为中文字体
// 控件类要有CS_OWNDC属性
SetWindowBkColor(hKongJian.hStaticP[i],RGB2Pixel(GetPrivateClientDC(hKongJian.hStaticP[i]),0,255,0));
//静态标签压力
hKongJian.hStaticT[i]=CreateWindow(CTRL_STATIC,hKongJian.mingcheng[i+8],CS_OWNDC|WS_VISIBLE \
| SS_CENTER | SS_NOTIFY,IDC_STATIC*i+8,170, 10+50*i, 60,20, hwnd, 0);
SetWindowFont(hKongJian.hStaticT[i],logfontgb12); //设置为中文字体
// 控件类要有CS_OWNDC属性
SetWindowBkColor(hKongJian.hStaticT[i],RGB2Pixel(GetPrivateClientDC(hKongJian.hStaticT[i]),255,255,0));
//静态标签流量
hKongJian.hStaticM[i]=CreateWindow(CTRL_STATIC,hKongJian.mingcheng[i+16],CS_OWNDC|WS_VISIBLE \
| SS_CENTER | SS_NOTIFY,IDC_STATIC*i+16,330, 10+50*i, 60,20, hwnd, 0);
SetWindowFont(hKongJian.hStaticM[i],logfontgb12); //设置为中文字体
// 控件类要有CS_OWNDC属性
SetWindowBkColor(hKongJian.hStaticM[i],RGB2Pixel(GetPrivateClientDC(hKongJian.hStaticM[i]),255,255,0));
//静态标签电压
hKongJian.hStaticS[i]=CreateWindow(CTRL_STATIC,hKongJian.mingcheng[i+24],CS_OWNDC|WS_VISIBLE \
| SS_CENTER | SS_NOTIFY,IDC_STATIC*i+24,490, 10+50*i, 60,20, hwnd, 0);
SetWindowFont(hKongJian.hStaticS[i],logfontgb12); //设置为中文字体
// 控件类要有CS_OWNDC属性
SetWindowBkColor(hKongJian.hStaticS[i],RGB2Pixel(GetPrivateClientDC(hKongJian.hStaticS[i]),255,255,0));
//静态标签温度值
hKongJian.hEditT[i]=CreateWindow(CTRL_STATIC,"0",CS_OWNDC|WS_VISIBLE \
| SS_CENTER | SS_NOTIFY|WS_CHILD|WS_BORDER,IDC_EDIT+i,90, 10+50*i, 60,20, hwnd, 0);
SetWindowFont(hKongJian.hEditT[i],logfontgb12); //设置为中文字体
// 控件类要有CS_OWNDC属性
SetWindowBkColor(hKongJian.hEditT[i],RGB2Pixel(GetPrivateClientDC(hKongJian.hEditT[i]),0,255,0));
//静态标签压力值
hKongJian.hEditP[i]=CreateWindow(CTRL_STATIC,"0",CS_OWNDC|WS_VISIBLE \
| SS_CENTER | SS_NOTIFY|WS_CHILD |WS_BORDER,IDC_EDIT*i+8,250, 10+50*i, 60,20, hwnd, 0);
SetWindowFont(hKongJian.hEditP[i],logfontgb12); //设置为中文字体
// 控件类要有CS_OWNDC属性
SetWindowBkColor(hKongJian.hEditP[i],RGB2Pixel(GetPrivateClientDC(hKongJian.hEditP[i]),255,255,0));
//静态标签流量值
hKongJian.hEditS[i]=CreateWindow(CTRL_STATIC,"0",CS_OWNDC|WS_VISIBLE \
| SS_CENTER | SS_NOTIFY|WS_CHILD |WS_BORDER,IDC_EDIT*i+16,410, 10+50*i, 60,20, hwnd, 0);
SetWindowFont(hKongJian.hEditS[i],logfontgb12); //设置为中文字体
// 控件类要有CS_OWNDC属性
SetWindowBkColor(hKongJian.hEditS[i],RGB2Pixel(GetPrivateClientDC(hKongJian.hEditS[i]),255,255,0));
//静态标签电压值
hKongJian.hEditM[i]=CreateWindow(CTRL_STATIC,"0",CS_OWNDC|WS_VISIBLE \
| SS_CENTER | SS_NOTIFY|WS_CHILD |WS_BORDER,IDC_EDIT*i+24,570, 10+50*i, 60,20, hwnd, 0);
SetWindowFont(hKongJian.hEditM[i],logfontgb12); //设置为中文字体
// 控件类要有CS_OWNDC属性
SetWindowBkColor(hKongJian.hEditM[i],RGB2Pixel(GetPrivateClientDC(hKongJian.hEditM[i]),255,255,0));
}
return &hKongJian;
}
/*
************************************************************************************************************************
**函数原型 : static void BaoCun(void);
**参数说明 :
**返回 值 :
**创 建 人:
**最后修改日期: 2006年2月9日
**描 述: 参数保存
************************************************************************************************************************
*/
static void BaoCun(void)
{
;
}
/*
************************************************************************************************************************
**函数原型 : static void huaxian(PHUAXIAN pHuanXian);
**参数说明 :
**返回 值 :
**创 建 人:
**最后修改日期: 2006年2月9日
**描 述: 内存中画曲线并拷贝到显存中
************************************************************************************************************************
*/
static void huaxian(PHUAXIAN pHuanXian)
{
float Lianjie[4][LIANJIEDIANSHU]; //每个通道画线时构成曲线的点数数值
HDC neicun_hdc;
int i,j;
for( i=0;i<4;i++) //计算出每个象限画曲线的点
{
for( j=0;j<LIANJIEDIANSHU;j++)
{
Lianjie[i][j]=pHuanXian->Max[i]/100*pHuanXian->LeiJi[i][j];
}
}
neicun_hdc = CreateCompatibleDC (pHuanXian->XC_hdc);//创建内存句柄
SetBrushColor(neicun_hdc, RGB2Pixel(neicun_hdc, 0x0, 0x0, 0x0));//, 0x80));
SetPenColor(neicun_hdc, RGB2Pixel(neicun_hdc, 0xff, 0x0, 0x0));//, 0xff));
//-------------------------------------------------------------------------------
FillBox (neicun_hdc, 66, 24, 205, 123);
for( i=1;i<LIANJIEDIANSHU;i++) //一象限画曲线
{
MoveTo(neicun_hdc,Lianjie[0][i-1],20+(i-1)*10);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -