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

📄 cmain.cpp

📁 统计信号处理中计算最小代价
💻 CPP
字号:
//
// Winmain.cpp
//  Drawing A Presentation Quality Line Chart
//  Copyright (c) Yi_chunhai 2001.3.5
//

#include <windows.h>
#include <string.h>
#include <stdlib.h>
#include "lgass.c"
#include "lerrf.c"
#include "lgam2.c"
#include "lgam1.c"
#include "C_mini.c"
#include "resource.h"

LONG FAR PASCAL WndProc(HWND,UINT,WPARAM,LPARAM);

char szProgName[]="ProgName";
char szIconName[]="MyIcon";
char szApplName[]="IDR_MENU1";
char szTString[80]="最小代价曲线图";
char szXString[80]="x-axis label";
char szYString[80]="y-axis label";

int PASCAL WinMain(HINSTANCE hInst,HINSTANCE hPreInst,
                   LPSTR lpszCmdLine,int nCmdShow)
{
  
  HWND hWnd;
  MSG  lpMsg;
  WNDCLASS wcApp;
  if (!hPreInst) {
    wcApp.lpszClassName=szProgName;
    wcApp.hInstance    =hInst;
    wcApp.lpfnWndProc  =WndProc;
    wcApp.hCursor      =LoadCursor(NULL,IDC_ARROW);
    wcApp.hIcon        =LoadIcon(hInst,szIconName);
    wcApp.lpszMenuName =szApplName;
    wcApp.hbrBackground=GetStockObject(WHITE_BRUSH);
    wcApp.style        =CS_HREDRAW|CS_VREDRAW;
    wcApp.cbClsExtra   =0;
    wcApp.cbWndExtra   =0;
    if (!RegisterClass (&wcApp))
      return FALSE;
  }
  hWnd=CreateWindow(szProgName,"最小代价曲线图",
                    WS_OVERLAPPEDWINDOW,
					CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, 
					(HWND)NULL,(HMENU)NULL,
                    (HANDLE)hInst,(LPSTR)NULL);
  ShowWindow(hWnd,nCmdShow);
  UpdateWindow(hWnd);
  while (GetMessage(&lpMsg,NULL,NULL,NULL)) {
    TranslateMessage(&lpMsg);
    DispatchMessage(&lpMsg);
  }
  return(lpMsg.wParam);
}





LONG FAR PASCAL WndProc(HWND hWnd,UINT messg,
                        WPARAM wParam,LPARAM lParam)
{
	//--------- my routines below ---------
  double C00=0,C11=0,C01=2,C10=1,P0,CM;
  double N=2;
  int i=0;
  int P[1001],C[1001];
  for(i=0;i<=1000;i++){
  P0=i*0.001;
  CM=C_mini(C00,C01,C10,C11,P0,N);
  P[i]=(int)(P0*400);
  C[i]=(int)(CM*240/0.6);
  }
  
  HDC  hdc;
  HMENU hMenu;
  PAINTSTRUCT ps;
  static HFONT hOFont,hNFont;
  static HPEN hOPen,hNPen;
  static int xClientView,yClientView;
  int x,y,xtic,ytic;
  char *Strxptr="0.20.40.60.81.0",*Stryptr="0.2k0.4k0.6k";
  char Org1='0';  
  char *xLabel="P0",*yLabel="Cmin",*Nstrptr="N=2";
 
//--------- my routines above ---------
  switch (messg)
  {
    case WM_SIZE:
      xClientView=LOWORD(lParam);
      yClientView=HIWORD(lParam);
      break;

 
    case WM_PAINT:
      hdc=BeginPaint(hWnd,&ps);
//--------- my routines below ---------

      // Set View Port and Map Mode
      SetMapMode(hdc,MM_ISOTROPIC);
      SetWindowExtEx(hdc,640,400,NULL);
      SetViewportExtEx(hdc,xClientView,-yClientView,NULL);
      SetViewportOrgEx(hdc,150,yClientView-90,NULL);

      // Print Text to Screen
      hNFont=CreateFont(12,12,0,0,FW_BOLD,
                        FALSE,FALSE,FALSE,OEM_CHARSET,
                        OUT_DEFAULT_PRECIS,
                        CLIP_DEFAULT_PRECIS,
                        DEFAULT_QUALITY,
                        VARIABLE_PITCH|FF_ROMAN,
                        "Roman");
      hOFont=SelectObject(hdc,hNFont);
/*      TextOut(hdc,200-((strlen(szTString)*10/2)),
             250,szTString,strlen(szTString));*/
      TextOut(hdc,(200-(strlen(szXString)*10/2)),
              -50,szXString,strlen(szXString));
	  TextOut(hdc,200,-30,Nstrptr,3);
	  hNFont=CreateFont(9,9,0,0,FW_BOLD,
                        FALSE,FALSE,FALSE,OEM_CHARSET,
                        OUT_DEFAULT_PRECIS,
                        CLIP_DEFAULT_PRECIS,
                        DEFAULT_QUALITY,
                        FIXED_PITCH|FF_SCRIPT,
                        "Script");
      hOFont=SelectObject(hdc,hNFont);
	  for(i=0;i<5;i++)
	  TextOut(hdc,(80+i*80)-10,
              -5,Strxptr+i*3,3);
	  for(i=0;i<3;i++)
	  TextOut(hdc,-50,
              (80+i*80)+5,Stryptr+i*4,4);
	  TextOut(hdc,-5,-5,&Org1,1);
	  TextOut(hdc,430,-10,xLabel,2);
	  TextOut(hdc,-40,255,yLabel,4);
      hNFont=CreateFont(12,12,-900,900,FW_BOLD,
                        FALSE,FALSE,FALSE,
                        OEM_CHARSET,
                        OUT_DEFAULT_PRECIS,
                        CLIP_DEFAULT_PRECIS,
                        DEFAULT_QUALITY,
                        VARIABLE_PITCH|FF_ROMAN,
                        "Roman");
      hOFont=SelectObject(hdc,hNFont);
      TextOut(hdc,-100,30+(strlen(szXString)*10/2),
              szYString,strlen(szYString));

      // Draw Coordinate Axis
      hNPen=CreatePen(PS_SOLID,1,PALETTERGB(0x00,0x00,0xFF));
      hOPen=SelectObject(hdc,hNPen);
	  MoveToEx(hdc,0,250,NULL);
      LineTo(hdc,0,0);
      LineTo(hdc,450,0);
	  LineTo(hdc,440,5);
	  MoveToEx(hdc,450,0,NULL);
	  LineTo(hdc,440,-5);
      MoveToEx(hdc,0,250,NULL);
	  LineTo(hdc,5,240);
	  MoveToEx(hdc,0,250,NULL);
	  LineTo(hdc,-5,240);

      // Draw X axis tic marks
      xtic=0;
      for (i=0;i<=10;i++) {
        ytic=3;
        MoveToEx(hdc,xtic,ytic,NULL);
        ytic=0;
        LineTo(hdc,xtic,ytic);
        xtic+=40;
      }

      // Draw Y axis tic marks
      ytic=0;
      for (i=0;i<=6;i++) {
        xtic=0;
        MoveToEx(hdc,xtic,ytic,NULL);
        xtic=3;
        LineTo(hdc,xtic,ytic);
        ytic+=40;
      }
	  //Draw C_P 
	  MoveToEx(hdc,P[0],C[0],NULL);
	  for(i=0;i<=1000;i++){
		  LineTo(hdc,P[i],C[i]);
	  }

      SelectObject(hdc,hOFont);
      DeleteObject(hNFont);
      SelectObject(hdc,hOPen);
      DeleteObject(hNPen);

//--------- my routines above ---------
      ValidateRect(hWnd,NULL);
      EndPaint(hWnd,&ps);
      break;

    case WM_DESTROY:
      PostQuitMessage(0);
      break;

    default:
      return(DefWindowProc(hWnd,messg,wParam,lParam));
  }
  return(0L);
}

⌨️ 快捷键说明

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