?? cmain.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 + -