求各位大神幫幫忙!!

qq_美好的時(shí)光_0
2018-02-10
2 回答
舉報(bào)
0/150
提交
取消
2018-02-10
舉報(bào)
2019-01-26
#include<stdio.h>
#include<math.h>
#include<windows.h>
// 獲取控制臺(tái)窗口句柄 微軟官方網(wǎng)站的程序 直接拿來(lái)用了
HWND GetConsoleHwnd(void)
{
#define MY_BUFSIZE 1024 // Buffer size for console window titles.
? ?HWND hwndFound; ? ? ? ? // This is what is returned to the caller.
? ?char pszNewWindowTitle[MY_BUFSIZE]; // Contains fabricated
? ?char pszOldWindowTitle[MY_BUFSIZE]; // Contains original
?
? ?GetConsoleTitle(pszOldWindowTitle, MY_BUFSIZE);//獲取控制臺(tái)標(biāo)題存入pszOldWindowTitle中
? //設(shè)置控制臺(tái)的標(biāo)題為 ?時(shí)間數(shù) 進(jìn)程ID
? ?wsprintf(pszNewWindowTitle,"%d/%d",//把獲取的數(shù)目,和當(dāng)前進(jìn)程ID輸出到緩沖區(qū)pszNewwindowtitle中
? ? ? ?GetTickCount(),//用于獲取操作系統(tǒng)啟動(dòng)后的毫秒數(shù)
? ? ? ?GetCurrentProcessId());//獲取當(dāng)前進(jìn)程ID
?
? ?SetConsoleTitle(pszNewWindowTitle);//更改控制臺(tái)的標(biāo)題為新內(nèi)容
?
? ?Sleep(40);
?
? ?hwndFound=FindWindow(NULL, pszNewWindowTitle);//獲取控制臺(tái)的HWND號(hào)
?
? ?SetConsoleTitle(pszOldWindowTitle);//更改控制臺(tái)的標(biāo)題為原始內(nèi)容
?
? ?return(hwndFound);//返回句柄
}
void drawXY()//繪制X和Y軸
{
HWND hWnd=GetConsoleHwnd();//獲取控制臺(tái)窗口句柄,用于設(shè)置畫(huà)筆顏色
HDC hDC=GetDC(hWnd);
COORD ? ? ?dwSize;//記錄窗體大小,用于設(shè)定坐標(biāo)軸遠(yuǎn)點(diǎn)
HPEN hNewPen=CreatePen(PS_SOLID,1,RGB(255,0,0));//創(chuàng)建畫(huà)筆對(duì)象
HPEN hOldPen=(HPEN)SelectObject(hDC,hNewPen);//選取畫(huà)筆對(duì)象進(jìn)行繪圖
CONSOLE_SCREEN_BUFFER_INFO bInfo; // 窗口信息
HANDLE Hout=GetStdHandle(STD_OUTPUT_HANDLE);//獲取控制臺(tái)句柄
GetConsoleScreenBufferInfo(Hout, &bInfo );//獲取控制臺(tái)信息
dwSize=bInfo.dwMaximumWindowSize ;//獲取窗口大小,此時(shí)獲得的是字符模式下
//從字符到圖像放大坐標(biāo)軸8倍
dwSize.X *=8;
dwSize.Y*=8;
SetBkMode(hDC, TRANSPARENT);SetTextColor(hDC,255*255);
//繪制X軸各個(gè)特殊坐標(biāo)
TextOut(hDC,dwSize.X-15,dwSize.Y/2-15,"X",1);
//Arc(hDC,100,100,300,300,350,500,350,500);//畫(huà)圓 其中hDC表示畫(huà)圖句柄,100,100,300,300表示所使用的矩形區(qū)域,350,500表示畫(huà)弧線的起點(diǎn),350,500表明畫(huà)弧線的終點(diǎn) ;
//繪制Y軸各個(gè)特殊坐標(biāo)
TextOut(hDC,dwSize.X/2,0,"Y",1);
MoveToEx(hDC,0,dwSize.Y /2,NULL);
LineTo(hDC,dwSize.X,dwSize.Y/2);
MoveToEx(hDC,dwSize.X/2,0,NULL);
LineTo(hDC,dwSize.X/2,dwSize.Y);
ReleaseDC(hWnd,hDC);
}
void draw(double p)
{
int i;
double x,y;
HWND hWnd=GetConsoleHwnd();//獲取控制臺(tái)窗口句柄,用于設(shè)置畫(huà)筆顏色
HDC hDC=GetDC(hWnd);
COORD ? ? ?dwSize;//記錄窗體大小,用于設(shè)定坐標(biāo)軸遠(yuǎn)點(diǎn)
HPEN hNewPen=CreatePen(PS_SOLID,1,RGB(255,0,0));//創(chuàng)建畫(huà)筆對(duì)象
HPEN hOldPen=(HPEN)SelectObject(hDC,hNewPen);//選取畫(huà)筆對(duì)象進(jìn)行繪圖
CONSOLE_SCREEN_BUFFER_INFO bInfo; // 窗口信息
HANDLE Hout=GetStdHandle(STD_OUTPUT_HANDLE);//獲取控制臺(tái)句柄
GetConsoleScreenBufferInfo(Hout, &bInfo );//獲取控制臺(tái)信息
dwSize=bInfo.dwMaximumWindowSize ;//獲取窗口大小,此時(shí)獲得的是字符模式下
//從字符到圖像放大坐標(biāo)軸8倍
dwSize.X *=8;
dwSize.Y*=8;
//MoveToEx(hDC,0,dwSize.Y/2,NULL);
for(i=-180;i<=180;i++)
{
x=16*pow(sin(i*3.1415926/180),3.0)*p;
y=(13*cos(i*3.1415926/180)-5*cos(2*i*3.1415926/180)-2*cos(3*i*3.1415926/180)-cos(4*i*3.1415926/180))*p;
x=(x+16)*dwSize.X/32/2+dwSize.X/4;
? y=-y/16*dwSize.Y/2.3+dwSize.Y/2;
x=x;
y=y;
MoveToEx(hDC,x,y,NULL);
LineTo(hDC,x+1,y+1);
}
}
void main()
{
? ? ? ?double p;
drawXY();
for(p=0.6;p<=1;p=p+0.01)
draw(p);
system("PAUSE");
}
2018-02-10
首先,在代碼文件頭部使用#include來(lái)包含任何頭文件(擴(kuò)展名為.h或者.hpp的文件)都不會(huì)“產(chǎn)生”額外的函數(shù)。
我們可以說(shuō),包含一個(gè)頭文件之后,該頭文件內(nèi)部已經(jīng)定義的一些變量,宏,函數(shù)等等資源,將可以在后面的代碼中可以直接拿來(lái)使用,比如,當(dāng)我們包含process.h之后,就可以在代碼中使用system()函數(shù)來(lái)調(diào)用系統(tǒng)控制臺(tái)的命令,比如cls,、pause等等。
同理,包含了windows.h之后,在該文件中定義的一些資源我們可以直接使用,其中包括大部分的Win32 API函數(shù),以及一些Win32宏。具體文件內(nèi)容你可以找到“C:\Program Files\Microsoft Visual Studio\VC98\Include\WINDOWS.H”(假設(shè)你安裝的是VC6,且裝在C盤(pán)。安裝其他版本或者安裝在其他目錄請(qǐng)以此類推),使用文本編輯器自行察看。
總之就是說(shuō)簡(jiǎn)單點(diǎn)就是采用windows.h里的資源。如
#include <stdio.h> 則采用stdio.h里的資源