⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 minigui.txt

📁 这是一个在minigui下面用來实现曲线动态显示功能的一段代碼
💻 TXT
📖 第 1 页 / 共 3 页
字号:
    }

    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 + -