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

📄 1.cpp

📁 vc开发的管理系统
💻 CPP
📖 第 1 页 / 共 3 页
字号:
                   Temp,
                   n,
                   0
          );

       if (nwritten == SOCKET_ERROR)
       {
          Displays(hWnd, "信息发送失败-由于服务器程序已重启,请重新启动登陆程序.");
          return 0;
       }

        nleft -= nwritten;
        Temp += nwritten;
    }
    if(!nleft)
	return 1;
	return 0;
}

/*
 *  数据接收子函数
 */
int RecvUser_Lg(SOCKET sock,char * readline,int maxlen)
{
	int n;
    int rc;
    char c;
	for (n=1; n<maxlen; n++)
    {
        if ( ( rc= recv(sock, &c, 1, 0)) == 1)
        {
            *readline++ = c;
            if (c=='\n')
            break;
        }
        else if (rc == 0)
        {
            if (n == 1)
                return 0;
            else
                break;
        }
        else
		{   
            Displays(hWnd,"接收数据产生错误.");
            return -1;  /* Error */
		}
    }

    *(readline-1) = '\0';
    return n;

}

/*
 *  屏幕输出子函数
 */
void Displays(HWND hWnd,char *P)
{
    static char OutText[5][128];
	HDC hdc;
    int i;

	for(i=0;i<5;i++)
	{
		if(OutText[i]==NULL)
		{
			strcpy(OutText[i],P);
		    break;
		}
	}
    if(i>=5)
	{
		for(i=1;i<5;i++)
			strcpy(OutText[i-1],OutText[i]);
		strcpy(OutText[i-1],P);
	}
	InvalidateRect(hWnd,NULL,TRUE);
	UpdateWindow(hWnd);
	hdc=GetDC(hWnd);
	for(i=0;i<5;i++)
	{
	if(OutText[i]==NULL)	break;
	TextOut(hdc,(rect.right-rect.left)/2-100,
		   (rect.bottom-rect.top)/2+150+20*i,
		    OutText[i],strlen(OutText[i]));
	}
	ReleaseDC(hWnd,hdc);
}

//在内存堆中申请屏幕显示空间
void InitRam(int QNum)
{
	int i,n=0,lines;
    for(i=0;i<QNum;i++)
	{
     if(lines=strlen(TestPaper[i].Tile.Text)/Width) n+=lines;
	 if(lines=strlen(TestPaper[i].choose[1].Text)/Width) n+=lines;
	 if(lines=strlen(TestPaper[i].choose[2].Text)/Width) n+=lines;
	 if(lines=strlen(TestPaper[i].choose[3].Text)/Width) n+=lines; 
	 if(lines=strlen(TestPaper[i].choose[4].Text)/Width) n+=lines; 
	}
	LINES=QNum*7+n;
	Screen=new Lines [LINES];
    memset(Screen,0,sizeof(Lines)*LINES);
	hWndList=new hWndChoose [QNum];

}

//初始化屏幕显示缓存子程序
void InitScreen(int cxChar,int QNum)
{
	int i,j,lines=0,k=0,n=0,HanChar=0;
	for(i=0;i<QNum;i++)
	{
	   for(;;)
	   {
	     for(j=0,HanChar=0;j<Width;)
			{
			if(!TestPaper[i].Tile.Text[n])
				break;
			if(TestPaper[i].Tile.Text[n]>0) HanChar+=1;
			Screen[lines].Line[j++]=TestPaper[i].Tile.Text[n++];
			}
 		Screen[lines].Line[j]='\0';
		lines++;
		if(j<Width)
		{
		   n=0;
           break;
		}
		if (HanChar%2){
	    n--;
		Screen[lines-1].Line[j-1]='\0';}
	   }
	   for(k=0;k<4;k++)
	   {
		 Screen[lines].earmark=i*10+k+1;
	   for(;;)
	   {
	     for(j=0,HanChar=0;j<Width;)
			{
			if(!TestPaper[i].choose[k].Text[n])
				break;
			if(TestPaper[i].Tile.Text[n]>0) HanChar+=1;
			Screen[lines].Line[j++]=TestPaper[i].choose[k].Text[n++];
			}
		Screen[lines].Line[j]='\0';
		if(Inherilt)
		{
		if(k==Result[i]-1)
        Screen[lines].color2=1;
		}
		lines++;
		if(j<Width)
		{
		   n=0;
           break;
		}
		if (HanChar%2){
	    n--;
		Screen[lines-1].Line[j-1]='\0';}	  
	    Screen[lines].color1=i*10+k+1;
	   }
	  }
      lines+=2;
	}

}

//初始化子控件函数
void InitClientWindow(HWND hWnd,int N)
{
	for(int i=0;i<N;i++)
	{
	       hWndList[i].choose[0]=CreateWindow("button","",WS_CHILD | WS_VISIBLE |WS_GROUP| BS_AUTORADIOBUTTON |BS_PUSHLIKE|BS_FLAT,
		         0,0,12,12,hWnd, (HMENU)(i*10+1),hInst, NULL);
	       hWndList[i].choose[1]=CreateWindow("button","",WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON |BS_PUSHLIKE|BS_FLAT,
		         0,0,12,12,hWnd, (HMENU)(i*10+2),hInst, NULL);
	       hWndList[i].choose[2]=CreateWindow("button","",WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON |BS_PUSHLIKE|BS_FLAT,
		         0,0,12,12,hWnd, (HMENU)(i*10+3),hInst, NULL);
	       hWndList[i].choose[3]=CreateWindow("button","",WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON |BS_PUSHLIKE|BS_FLAT,
		         0,0,12,12,hWnd, (HMENU)(i*10+4),hInst, NULL);
           
	}
}

//滚动条控制子函数
void Scroll( HWND hWnd, int* pnCurPos, DWORD wScroll )
{
   int lines,nNumPaint,i,j;
   HDC hdc;
   SCROLLINFO si;

   // Use GetScrollInfo() to get information
   // about the scroll bar.
   //.......................................
   si.cbSize = sizeof( SCROLLINFO );
   si.fMask  = SIF_PAGE | SIF_RANGE | SIF_POS;
   GetScrollInfo( hWnd, SB_VERT, &si );

   switch( LOWORD(wScroll) )
   {
      case SB_LINEDOWN :
              if ( *pnCurPos <= (int)(si.nMax - si.nPage) )
                 *pnCurPos += 1;
              break;

      case SB_LINEUP :
              if ( *pnCurPos > 0 )
                 *pnCurPos -= 1;
              break;
	  case SB_THUMBTRACK:
		         *pnCurPos=HIWORD(wScroll);
		      break;
   }

   if ( si.nPos != *pnCurPos )
   {
      RECT cltRect;
      GetClientRect( hWnd, &cltRect );
      cltRect.top+=(cltRect.bottom-cltRect.top)/10;
      cltRect.bottom-=(cltRect.bottom-cltRect.top)/10;
      cltRect.left+=(cltRect.right-cltRect.left)/30+245;
      cltRect.right-=(cltRect.right-cltRect.left)/30;
	  ScrollWindowEx( hWnd, 0, (si.nPos-*pnCurPos)*cyChar, NULL,
                     &cltRect, NULL, NULL, SW_INVALIDATE|SW_ERASE);
	  UpdateWindow(hWnd);
      si.fMask = SIF_POS;
      si.nPos  = *pnCurPos;
      SetScrollInfo( hWnd, SB_VERT, &si, TRUE );

	      hdc=GetDC(hWnd);
	  	  lines=(rect.bottom-rect.top)*8/10/cyChar;
	      nNumPaint = min( *pnCurPos+lines,LINES);
		  for(i=0;i<LINES;i++)
		  {
			  if(i<*pnCurPos||i>=nNumPaint)
			  ShowWindow(hWndList[Screen[i].earmark/10].choose[Screen[i].earmark%10-1],0);
		  }
		  for(j=0,i=*pnCurPos;i<nNumPaint;i++,j++)
		  {
			  if(Screen[i].color2)SetTextColor(hdc,RGB(255,0,0));
			  else SetTextColor(hdc,RGB(0,0,0));
			  TextOut(hdc,((rect.right-rect.left)/30+295),(rect.bottom-rect.top)*1/10+cyChar*j,Screen[i].Line,strlen(Screen[i].Line));
			  if(Screen[i].earmark)
			  {
				  MoveWindow(hWndList[Screen[i].earmark/10].choose[Screen[i].earmark%10-1],((rect.right-rect.left)/30-5+200+100)-50,(rect.bottom-rect.top)*1/10+cyChar*j,cxChar*2,cyChar,0);
				  ShowWindow(hWndList[Screen[i].earmark/10].choose[Screen[i].earmark%10-1],1);
			  }
		  }
          ReleaseDC(hWnd,hdc);
//		  GetClientRect( hWnd, &cltRect );
//		  cltRect.top+=(cltRect.bottom-cltRect.top)/10;
//        cltRect.bottom-=(cltRect.bottom-cltRect.top)/10;
//        cltRect.left+=(cltRect.right-cltRect.left)/30+200;
//        cltRect.right=cltRect.left+80;
//        InvalidateRect(hWnd,&cltRect,TRUE);
//        UpdateWindow(hWnd);
   }
}

void CALLBACK TimerProc(HWND hWnd,UINT iMsg, UINT iTimerID, DWORD dwTime)
{
  int Temp,Hour,Minute,Sconde;
  static int total;
  HFONT hFont,OldhFont;
  HDC hdc;
  RECT cltRect;
  char Times[10];
  if(TIMES<=0)
  {
      SaveResult(true);
      Beep(2000,1000);
  }
  if(TIMES<=10)
	  Beep(1000,10);
  TIMES--;
  total++;
  if(total>=20)
  {
      SaveResult(false);
	  total=0;
  }
  Temp=TIMES;
  Sconde=Temp%60;
  Minute=Temp/60%60;
  Hour=Temp/60/60%24;
  sprintf(Times,"%2d:%2d:%2d",Hour,Minute,Sconde);
  GetClientRect( hWnd, &cltRect );
  hdc=GetDC(hWnd);
  hFont=CreateFont(24,16,0,0,400,0,0,0,OEM_CHARSET, 
                                       OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS, 
                                       DEFAULT_QUALITY,DEFAULT_PITCH|FF_SCRIPT, 
                                       "script");
  OldhFont=(HFONT)SelectObject(hdc,(HFONT)hFont);
  TextOut(hdc,(cltRect.right-cltRect.left)/30,(rect.bottom-rect.top)/13*9,Times,strlen(Times));
  SelectObject(hdc,OldhFont);
  ReleaseDC(hWnd,hdc);
}

void SaveResult(BOOL Turn)
{
		  for(int i=0;i<LINES;i++)
	  {
		  if(Screen[i].earmark&&Screen[i].color2==1)
		  Result[Screen[i].earmark/10]=Screen[i].earmark%10;
   	  }
	  strcpy(Buffers,"Srecv:SaveDt:");
	  sprintf(&Buffers[strlen(Buffers)],"%s#%s#%s*",users.Name,users.Subject,users.PassWord);
      for(i=0;i<QuestionNumber;i++)
      sprintf(&Buffers[strlen(Buffers)],"%d#",Result[i]);
	  sock = socket(AF_INET, SOCK_STREAM, 0);
	  connect(sock, (struct sockaddr *) &serv_addr,sizeof(serv_addr));
	  SendUser_Lg(sock,Buffers);
	  if(Turn)
	  {
	   strcpy(Buffers,"Srecv:ChanST:");
	   sprintf(&Buffers[strlen(Buffers)],"%s#%s#%s*",users.Name,users.Subject,users.PassWord);
       SendUser_Lg(sock,Buffers);
	  }
      closesocket(sock);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -