導航:首頁 > 編程語言 > care編程

care編程

發布時間:2022-03-14 05:42:13

A. 使用Matlab中的care函數,[X,L,G] = care(A,B,Q,R,S,E),輸入的都滿足要求,為何報錯

狀態反饋調節器的函數reg,語法是這樣的:
Syntax:
rsys = reg(sys,K,L)
rsys = reg(sys,K,L,sensors,known,controls)

reg的用法舉例:

function TFscaling_random()
for i=1:1
b=reg(500);
end

function len=reg(N)
% generate normal distributed elements of A
A = randn(N,N); % normal distribution
for s=1:N;
A(s,s)=-1; % include some stability
end

% generate normal distributed elements of Q
C=q*randn(N,N);
C=zeros(N,N);
for s=1:N;
C(s,s)=1;
end
Q=C'*C; % Making Q postive definte

B=eye(N,N);
R=eye(N,N);

% solve algebratic riccati Eq.
[P,l,g] = care(A,B,C'*C,R);
MATLAB是美國MathWorks公司出品的商業數學軟體,用於演算法開發、數據可視化、數據分析以及數值計算的高級技術計算語言和互動式環境,主要包括MATLAB和Simulink兩大部分。MATLAB應用非常之廣泛!
基本介紹
MATLAB(矩陣實驗室)是MATrix LABoratory的縮寫,是一款由美國The MathWorks公司出品的商業數學軟體。MATLAB是一種用於演算法開發、數據可視化、數據分析以及數值計算的高級技術計算語言和互動式環境。除了矩陣運算、繪制函數/數據圖像等常用功能外,MATLAB還可以用來創建用戶界面及與調用其它語言(包括C,C++和FORTRAN)編寫的程序。
盡管MATLAB主要用於數值運算,但利用為數眾多的附加工具箱(Toolbox)它也適合不同領域的應用,例如控制系統設計與分析、圖像處理、信號處理與通訊、金融建模和分析等。另外還有一個配套軟體包Simulink,提供了一個可視化開發環境,常用於系統模擬、動態/嵌入式系統開發等方面。
MATLAB和Mathematica、Maple並稱為三大數學軟體。它在數學類科技應用軟體中在數值計算方面首屈一指。MATLAB可以進行矩陣運算、繪制函數和數據、實現演算法、創建用戶界面、連接其他編程語言的程序等,主要應用於工程計算、控制設計、信號處理與通訊、圖像處理、信號檢測、金融建模設計與分析等領域。
MATLAB的基本數據單位是矩陣,它的指令表達式與數學、工程中常用的形式十分相似,故用MATLAB來解算問題要比用C,FORTRAN等語言完成相同的事情簡捷得多,並且MATLAB也吸收了像Maple等軟體的優點,使MATLAB成為一個強大的數學軟體。在新的版本中也加入了對C,FORTRAN,C++,java的支持。可以直接調用,用戶也可以將自己編寫的實用程序導入到MATLAB函數庫中方便自己以後調用,此外許多的MATLAB愛好者都編寫了一些經典的程序,用戶可以直接進行下載就可以用。

B. 聽說java類編程的面試官都是直接不care培訓出來的,是真的嗎

有的公司會這樣,明確要求不需要培訓出來的,整個培訓市場有好有壞,導致了對培訓出來的coder的能力表示不認可。不過也有的公司是不在意的,只要你有夠硬的技術,總能找到自己想要的一份工作。

C. c語言編程

首先說明這個不是我寫的(支持原創!),是我在一個貼吧中找到的,希望對你有所幫助!
#include<stdio.h>
#include<bios.h>
struct data
{
int year1;
int specialmonth;
int month1[13];
};
struct day{
int year2;
int month2;
int day2;
};

int dis_day1(struct day *op,int *p)
{
int n=0,x;
n+=(op->year2-1980)*365;
for(x=1980;x<op->year2;x++)
if((x%4==0&&x%100!=0)||(x%100==0&&x%400==0))n+=1;
for(x=1;x<(op->month2);x++)
n+=*(p+x-1);
x=op->year2;
if(((x%4==0&&x%100!=0)||(x%100==0&&x%400==0))&&op->month2>2)n+=1;
n+=(op->day2-1);
return n;
}
int dis_day2(struct day *op,struct data *p)
{
int n=0,maxmonth,i,x;
for(x=1980;x<op->year2;x++)
{ if((p+x-1979)->specialmonth==0)maxmonth=12;
else maxmonth=13;
for(i=0;i<maxmonth;i++)
if((p+x-1979)->month1[i]==0)n+=29;
else n+=30;
}
if((p+op->year2-1979)->specialmonth!=0)
if((p+op->year2-1979)->specialmonth<op->month2)op->month2++;
for(i=1;i<op->month2;i++)
{
if((p+op->year2-1979)->month1[i-1]==0)n+=29;
else n+=30;}
n+=(op->day2-1);
n+=46;
return n;
}
void work_out2(struct day *re,struct data *p,int n)
{
int n1=0,maxday,maxmonth,month,day,judge=0;
re->year2=1979;re->month2=11;re->day2=14;
while(1)
{
if(judge==1)break;
if(p->specialmonth==0)maxmonth=12;
else maxmonth=13;
if(p->year1==1979)month=12;
else month=1;
for(;month<=maxmonth;month++)
{
if(p->month1[month-1]==0)maxday=29;
else maxday=30;
if((p->year1==1979)&&(maxday==30))day=14;
else day=1;
for(;day<=maxday;day++)
{
if(n1==n){if(maxmonth==13&&month>p->specialmonth)month-=1;
re->year2=p->year1;re->month2=month;re->day2=day;judge=1;break;}
else n1+=1;
}

if(judge==1)break;}
p++;
}
}

void work_out1(struct day *re,int n,int *p)
{
int year=1980,n1=0,month,day,maxday,judge=0;
re->year2=1980;re->month2=1;re->day2=1;
while(1)
{
*(p+1)=28;
if(judge==1)break;
if((year%4==0&&year%100!=0)||(year%100==0&&year%400==0))*(p+1)=29;
for(month=1;month<=12;month++)
{
maxday=*(p+month-1);
for(day=1;day<=maxday;day++)
{

if(n1==n){re->year2=year;re->month2=month;re->day2=day;judge=1;break;}
else n1++;
}

if(judge==1)break;}
year++;
}
}

main()
{
int n,c;
int sun[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int *p1=sun;
struct day ob,re; struct data *p2;
struct data year[37]={
{1979,6, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0 },
{1980,0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0 },
{1981,0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0 },
{1982,4, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1 },
{1983,0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0 },
{1984,10,1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1 },
{1985,0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0 },
{1986,0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0 },
{1987,6, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0 },
{1988,0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0 },
{1989,0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0 },
{1990,5, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1 },
{1991,0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0 },
{1992,0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0 },
{1993,3, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0 },
{1994,0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0 },
{1995,8, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1 },
{1996,0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0 },
{1997,0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0 },
{1998,5, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1 },
{1999,0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1 },
{2000,0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0 },
{2001,4, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1 },
{2002,0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0 },
{2003,0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0 },
{2004,2, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1 },
{2005,0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0 },
{2006,7, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1 },
{2007,0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0 },
{2008,0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0 },
{2009,5, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1 },
{2010,0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0 },
{2011,0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0 },
{2012,4, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0 },
{2013,0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0 },
{2014,9, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1 },
{2015,0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0 }
};
p2=year;
printf(" WARNING \n");
printf(" you should take care of it :\n");
printf(" the limted range:\n");
printf(" lunar calendar: 1980.1.1----2015.11.12\n");
printf(" soalr calendar: 1980.1.1-----2015.12.31\n");

while(1)
{ printf(" please choose one way a/b?\n");
printf(" a: soalr calendar---->lunar calendar\n");
printf(" b: lunar calendar---->soalr calendar\n");
do{c=getchar();}while(c!='a'&&c!='b');
do{
printf("your must pay attention to the form\n");
printf("pleae input your date:\n");
scanf("%d.%d.%d",&ob.year2,&ob.month2,&ob.day2);
}while(ob.year2<1980||ob.year2>=2016||ob.month2<1||
ob.month2>12||ob.day2<1||ob.day2>31);
switch©
{
case 'a':

n=dis_day1(&ob, p1);printf("%d\n",n);
work_out2(&re,p2,n);
printf(" the result is %d.%d.%d\n",re.year2,re.month2,re.day2);break;
case 'b':

n=dis_day2(&ob,p2);printf("%d\n",n);
work_out1(&re,n,p1);
printf(" the result is %d.%d.%d\n",re.year2,re.month2,re.day2);
if(ob.month2==(p2+ob.year2-1979)->specialmonth)
{ if((ob.day2!=30)||((p2+ob.year2-1979)->month1[ob.month2]==1))
{ n+=((p2+ob.year2-1979)->month1[ob.month2-1]+29);
work_out1(&re,n,p1);
printf("there is a other result\n:\t%d.%d.%d\n",re.year2,re.month2,re.day2);
}
}

break;
defluat: break;
}
printf("if you want to try again,y/n?\n");
do{c=bioskey(0);}while(c!=0x316e&&c!=0x1579);if(c==0x316e)break;
}
}

D. 霍尼韋爾care軟體中c-bus、通道、lon-bus各是什麼作用

我是實驗室做試驗用的,各控制器之間可以通過485通訊,不需要連接到網路,是不是lon-bus就用不著了。只用c-BUS就可以吧

E. 貪吃蛇編程

這里有我以前敲過的貪吃蛇,不介意可以參考一下,(ps:需要建一了application而不是console application)

#include <windows.h>
#include <stdio.h>
#include <tchar.h>
#include <time.h>

#define speed 200
#define left 100
#define top 50
#define right 500
#define bottom 350

struct snake
{
POINT pos;
snake *front,*next;
};

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
bool InitWindow(HINSTANCE,int);
void items(HDC,int,int);
void MoveSnake(int);
void remove();
void destroy();
void inf(int,int,int,int);
void inf(const char*,int,int,int,int);
void inf(const char*,int,int,int);
bool is_fail();
void eat();
void wall();
void show_fruit();

UINT ShowMode;
PAINTSTRUCT ps;
bool onoff;
HFONT hf;
char judge[20];
int dir;
HDC hdc;
HWND hwnd;
HBRUSH BlackBrush,MainBrush,NULLBrush;
HPEN MainPen,BlackPen;
snake *head,*tail,*temp;
POINT fruit;

int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
)
{
onoff=1;
int i;
dir=-2;
tail=NULL;
InitWindow(hInstance,nCmdShow);
for(i=0;i<5;i++)
{
if(!tail)
{
head=new snake;
tail=head;
head->pos.x=300+i*10;
head->pos.y=200;
items(hdc,head->pos.x,head->pos.y);
}
else
{
tail->next=new snake;
tail->next->front=tail;
tail=tail->next;
tail->pos.x=300+i*10;
tail->pos.y=200;
tail->next=NULL;
items(hdc,tail->pos.x,tail->pos.y);
}
}
hf=CreateFont(20,0,0,0,400,0,0,0,GB2312_CHARSET,
OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_DONTCARE,"華文行楷");
SelectObject(hdc,hf);
SetBkColor(hdc,RGB(124,146,131));
SelectObject(hdc,MainBrush);
wall();
show_fruit();
inf("得分:",260,0,0);
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
destroy();
return 0;
}

LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
static int seed=15;
switch(msg)
{
case WM_TIMER:
MoveSnake(dir);
if(!is_fail())
{
KillTimer(hwnd,1);
MessageBox(hwnd,"you are lost","caption",0);
}
eat();
break;
case WM_PAINT:
hdc=BeginPaint(hwnd,&ps);
wall();
EndPaint(hwnd,&ps);
hdc=GetDC(hwnd);
case WM_KEYDOWN:
switch(wParam)
{
case VK_UP:dir=(dir!=1?-1:dir);break;
case VK_DOWN:dir=(dir!=-1?1:dir);break;
case VK_RIGHT:dir=(dir!=-2?2:dir);break;
case VK_LEFT:dir=(dir!=2?-2:dir);break;
}
break;
case WM_CLOSE:
if(MessageBox(hwnd,"確定退出?","caption",MB_YESNO)==IDYES)
DestroyWindow(hwnd);
break;
case WM_DESTROY:
ReleaseDC(hwnd,hdc);
KillTimer(hwnd,1);
PostQuitMessage(0);
break;
default:return DefWindowProc(hwnd,msg,wParam,lParam);
}

return 1;
}

bool InitWindow(HINSTANCE hInstance,int nCmdShow)
{
WNDCLASS wc;
wc.style=CS_HREDRAW | CS_VREDRAW;
wc.lpszClassName="test";
wc.lpszMenuName=NULL;
wc.cbClsExtra=0;
wc.cbWndExtra=0;
wc.hbrBackground=CreateSolidBrush(RGB(124,146,131));
wc.hIcon=NULL;
wc.hCursor=LoadCursor(NULL,IDC_ARROW);
wc.hInstance=hInstance;
wc.lpfnWndProc=WndProc;

MainBrush=CreateSolidBrush(RGB(124,146,131));
BlackBrush=(HBRUSH)GetStockObject(BLACK_BRUSH);
NULLBrush=(HBRUSH)GetStockObject(NULL_BRUSH);
MainPen=CreatePen(PS_SOLID,1,RGB(124,146,131));
BlackPen=CreatePen(PS_SOLID,1,RGB(0,0,0));

if(!RegisterClass(&wc)) return false;
hwnd=CreateWindow("test","貪吃蛇",WS_SYSMENU,400,150,616,400,NULL,NULL,hInstance,NULL);
hdc=BeginPaint(hwnd,&ps);
if(!hwnd) return false;

ShowWindow(hwnd,SW_SHOWNORMAL);
UpdateWindow(hwnd);
SetTimer(hwnd,1,speed,NULL);
return true;
}

void items(HDC hdc,int x,int y)
{
SelectObject(hdc,BlackPen);
SelectObject(hdc,NULLBrush);
Rectangle(hdc,x,y,x+10,y+10);
SelectObject(hdc,BlackBrush);
Rectangle(hdc,x+2,y+2,x+8,y+8);
// DeleteObject(BlackPen);
// DeleteObject(BlackBrush);
}

void MoveSnake(int dir)
{
static int i=0;
remove();
tail=tail->front;
delete tail->next;
tail->next=NULL;
temp=new snake;
temp->next=head;
head->front=temp;
temp->pos.x=head->pos.x+(dir/2)*10;
temp->pos.y=head->pos.y+(dir%2)*10;
head=temp;
i++;
items(hdc,head->pos.x,head->pos.y);
}

void remove()
{
SelectObject(hdc,MainBrush);
SelectObject(hdc,MainPen);
Rectangle(hdc,tail->pos.x,tail->pos.y,tail->pos.x+10,tail->pos.y+10);
// DeleteObject(MainBrush);
// DeleteObject(MainPen);
}

void destroy()
{
while(head->next)
{
head=head->next;
delete head->front;
}
delete tail;
}

void inf(int x,int y,int px,int py)
{
inf("",x,y,px,py);
}
void inf(const char*str,int x,int y,int scores)
{
sprintf(judge,"%s%d",str,scores);
TextOut(hdc,x,y,judge,strlen(judge));
}
void inf(const char*str,int x,int y,int px,int py)
{
sprintf(judge,"%s(%d,%d) ",str,px,py);
TextOut(hdc,x,y,judge,strlen(judge));
}

bool is_fail()
{
temp=head;
int px=head->pos.x,py=head->pos.y;
if(px<left||px>=right||py<top||py>=bottom)
return 0;
while(temp->next)
{
temp=temp->next;
if(px==temp->pos.x&&py==temp->pos.y)
return 0;
}
return 1;

}

void show_fruit()
{
srand((UINT)time(NULL));
fruit.x=10*((rand()%(right-left-10))/10)+left;
fruit.y=10*((rand()%(bottom-top-10))/10)+top;
items(hdc,fruit.x,fruit.y);
}

void eat()
{
inf("食物:",0,25,fruit.x,fruit.y);
inf("蛇頭:",0,0,head->pos.x,head->pos.y);
static int scores=0;
if(head->pos.x==fruit.x&&head->pos.y==fruit.y)
{
scores++;
inf("得分:",260,0,scores);
KillTimer(hwnd,1);
temp=new snake;
temp->next=head;
head->front=temp;
temp->pos.x=head->pos.x+(dir/2)*10;
temp->pos.y=head->pos.y+(dir%2)*10;
head=temp;
items(hdc,head->pos.x,head->pos.y);
SetTimer(hwnd,1,speed,NULL);
show_fruit();
}
}

void wall()
{
SelectObject(hdc,MainBrush);
Rectangle(hdc,left-1,top-1,right+1,bottom+1);
// DeleteObject(MainBrush);
}

F. 游戲編程

編程
這是每個游戲編程FAQ里都有的問題。這個問題每星期都會在游戲開發論壇上被問上好幾次。這是個很好的問題,但是,沒人能給出簡單的答案。在某些應用程序中,總有一些計算機語言優於其他語言。下面是幾種用於編寫游戲的主要編程語言的介紹及其優缺點。希望這篇文章能幫助你做出決定。

1、C語言

如果說FORTRAN和COBOL是第一代高級編譯語言,那麼C語言就是它們的孫子輩。C語言是Dennis Ritchie在七十年代創建的,它功能更強大且與ALGOL保持更連續的繼承性,而ALGOL則是COBOL和FORTRAN的結構化繼承者。C語言被設計成一個比它的前輩更精巧、更簡單的版本,它適於編寫系統級的程序,比如操作系統。在此之前,操作系統是使用匯編語言編寫的,而且不可移植。C語言是第一個使得系統級代碼移植成為可能的編程語言。

C語言支持結構化編程,也就是說C的程序被編寫成一些分離的函數呼叫(調用)的集合,這些呼叫是自上而下運行,而不像一個單獨的集成塊的代碼使用GOTO語句控制流程。因此,C程序比起集成性的FORTRAN及COBOL的「空心粉式代碼」代碼要簡單得多。事實上,C仍然具有GOTO語句,不過它的功能被限制了,僅當結構化方案非常復雜時才建議使用。

正由於它的系統編程根源,將C和匯編語言進行結合是相當容易的。函數調用介面非常簡單,而且匯編語言指令還能內嵌到C代碼中,所以,不需要連接獨立的匯編模塊。

優點:有益於編寫小而快的程序。很容易與匯編語言結合。具有很高的標准化,因此其他平台上的各版本非常相似。

缺點:不容易支持面向對象技術。語法有時會非常難以理解,並造成濫用。

移植性:C語言的核心以及ANSI函數調用都具有移植性,但僅限於流程式控制制、內存管理和簡單的文件處理。其他的東西都跟平台有關。比如說,為Windows和Mac開發可移植的程序,用戶界面部分就需要用到與系統相關的函數調用。這一般意味著你必須寫兩次用戶界面代碼,不過還好有一些庫可以減輕工作量。

用C語言編寫的游戲:非常非常多。

資料:C語言的經典著作是《The C Programming Language》,它經過多次修改,已經擴展到最初的三倍大,但它仍然是介紹C的優秀書本。一本極好的教程是《The Waite Group's C Primer Plus》。

2、C++

C++語言是具有面向對象特性的C語言的繼承者。面向對象編程,或稱OOP是結構化編程的下一步。OO程序由對象組成,其中的對象是數據和函數離散集合。有許多可用的對象庫存在,這使得編程簡單得只需要將一些程序「建築材料」堆在一起(至少理論上是這樣)。比如說,有很多的GUI和資料庫的庫實現為對象的集合。

C++總是辯論的主題,尤其是在游戲開發論壇里。有幾項C++的功能,比如虛擬函數,為函數呼叫的決策制定增加了一個額外層次,批評家很快指出C++程序將變得比相同功能的C程序來得大和慢。C++的擁護者則認為,用C寫出與虛擬函數等價的代碼同樣會增加開支。這將是一個還在進行,而且不可能很快得出結論的爭論。

我認為,C++的額外開支只是使用更好的語言的小付出。同樣的爭論發生在六十年代高級程序語言如COBOL和FORTRAN開始取代匯編成為語言所選的時候。批評家正確的指出使用高級語言編寫的程序天生就比手寫的匯編語言來得慢,而且必然如此。而高級語言支持者認為這么點小小的性能損失是值得的,因為COBOL和FORTRAN程序更容易編寫和維護。

優點:組織大型程序時比C語言好得多。很好的支持面向對象機制。通用數據結構,如鏈表和可增長的陣列組成的庫減輕了由於處理低層細節的負擔。

缺點:非常大而復雜。與C語言一樣存在語法濫用問題。比C慢。大多數編譯器沒有把整個語言正確的實現。

移植性:比C語言好多了,但依然不是很樂觀。因為它具有與C語言相同的缺點,大多數可移植性用戶界面庫都使用C++對象實現。

使用C++編寫的游戲:非常非常多。大多數的商業游戲是使用C或C++編寫的。

資料:最新版的《The C++ Programming Language》非常好。作為教程,有兩個陣營,一個假定你知道C,另外一個假定你不知道。到目前為止,最好的C++教程是《Who's Afraid of C++》,如果你已經熟知C,那麼試一下《Teach Yourself C++》。

3、我該學習C++或是該從C開始

我不喜歡這種說法,但它是繼「我該使用哪門語言」之後最經常被問及的問題。很不幸,不存在標准答案。你可以自學C並使用它來寫程序,從而節省一大堆的時間,不過使用這種方法有兩個弊端:

你將錯過那些面向對象的知識,因為它可能在你的游戲中使得數據建模更有效率的東西。

最大的商業游戲,包括第一人稱射擊游戲很多並沒有使用C++。但是,這些程序的作者即使使用老的C的格式,他們通常堅持使用面向對象編程技術。如果你只想學C,至少要自學OO(面向對象)編程技術。OO是模擬(游戲)的完美方法,如果你不學習OO,你將不得不「辛苦」的工作。

4、匯編語言

顯然,匯編是第一個計算機語言。匯編語言實際上是你計算機處理器實際運行的指令的命令形式表示法。這意味著你將與處理器的底層打交道,比如寄存器和堆棧。如果你要找的是類英語且有相關的自我說明的語言,這不是你想要的。

確切的說,任何你能在其他語言里做到的事情,匯編都能做,只是不那麼簡單 — 這是當然,就像說你既可以開車到某個地方,也可以走路去,只是難易之分。話雖不錯,但是新技術讓東西變得更易於使用。

總的來說,匯編語言不會在游戲中單獨應用。游戲使用匯編主要是使用它那些能提高性能的零零碎碎的部分。比如說,毀滅戰士整體使用C來編寫,有幾段繪圖程序使用匯編。這些程序每秒鍾要調用數千次,因此,盡可能的簡潔將有助於提高游戲的性能。而從C里調用匯編寫的函數是相當簡單的,因此同時使用兩種語言不成問題。

特別注意:語言的名字叫「匯編」。把匯編語言翻譯成真實的機器碼的工具叫「匯編程序」。把這門語言叫做「匯編程序」這種用詞不當相當普遍,因此,請從這門語言的正確稱呼作為起點出發。

優點:最小、最快的語言。匯編高手能編寫出比任何其他語言能實現的快得多的程序。你將是利用處理器最新功能的第一人,因為你能直接使用它們。

缺點:難學、語法晦澀、堅持效率,造成大量額外代碼 — 不適於心臟虛弱者。

移植性:接近零。因為這門語言是為一種單獨的處理器設計的,根本沒移植性可言。如果使用了某個特殊處理器的擴展功能,你的代碼甚至無法移植到其他同類型的處理器上(比如,AMD的3DNow指令是無法移植到其它奔騰系列的處理器上的)。

使用匯編編寫的游戲:我不知道有什麼商業游戲是完全用匯編開發的。不過有些游戲使用匯編完成多數對時間要求苛刻的部分。

資料:如果你正在找一門匯編語言的文檔,你主要要找晶元的文檔。網路上如Intel、AMD、Motorola等有一些關於它們的處理器的資料。對於書籍而言,《Assembly Language: Step-By-Step》是很值得學習的。

5、Pascal語言

Pascal語言是由Nicolas Wirth在七十年代早期設計的,因為他對於FORTRAN和COBOL沒有強制訓練學生的結構化編程感到很失望,「空心粉式代碼」變成了規范,而當時的語言又不反對它。Pascal被設計來強行使用結構化編程。最初的Pascal被嚴格設計成教學之用,最終,大量的擁護者促使它闖入了商業編程中。當Borland發布IBM PC上的 Turbo Pascal時,Pascal輝煌一時。集成的編輯器,閃電般的編譯器加上低廉的價格使之變得不可抵抗,Pascal編程了為MS-DOS編寫小程序的首選語言。

然而時日不久,C編譯器變得更快,並具有優秀的內置編輯器和調試器。Pascal在1990年Windows開始流行時走到了盡頭,Borland放棄了Pascal而把目光轉向了為Windows 編寫程序的C++。Turbo Pascal很快被人遺忘。

最後,在1996年,Borland發布了它的「Visual Basic殺手」— Delphi。它是一種快速的帶華麗用戶界面的 Pascal編譯器。由於不懈努力,它很快贏得了一大群愛好者。

基本上,Pascal比C簡單。雖然語法類似,它缺乏很多C有的簡潔操作符。這既是好事又是壞事。雖然很難寫出難以理解的「聰明」代碼,它同時也使得一些低級操作,如位操作變得困難起來。

優點:易學、平台相關的運行(Delphi)非常好。

缺點:「世界潮流」面向對象的Pascal繼承者(Mola、Oberon)尚未成功。語言標准不被編譯器開發者認同。專利權。

移植性:很差。語言的功能由於平台的轉變而轉變,沒有移植性工具包來處理平台相關的功能。

使用Pascal編寫的游戲:幾個。DirectX的Delphi組件使得游戲場所變大了。

資料:查找跟Delphi有關的資料,請訪問:Inprise Delphi page。

6、Visual Basic

哈,BASIC。回到八十年代的石器時代,它是程序初學者的第一個語言。最初的BASIC形式,雖然易於學習,卻是可怕的無組織化,它義無反顧的使用了GOTO充斥的「空心粉式代碼」。當回憶起BASIC的行號和GOSUB命令,沒有幾個人能止住眼角的淚水。

快速前進到九十年代早期,雖然不是蘋果公司所希望的巨人,HyperCard仍然是一個在Windows下無法比擬的吸引人的小型編程環境。Windows下的HyperCard克隆品如ToolBook又慢又笨又昂貴。為了與HyperCard一決高下,微軟取得了一個小巧的名為Thunder編程環境的許可權,並把它作為Visual Basci 1.0發布,其用戶界面在當時非常具有新意。這門語言雖然還叫做Basic(不再是全部大寫),但更加結構化了,行號也被去除。實際上,這門語言與那些內置於TRS-80、Apple II及Atari里的舊的ROM BASIC相比,更像是帶Basic風格動詞的Pascal。

經過六個版本,Visual Basic變得非常漂亮。用戶界面發生了許多變化,但依然保留著「把代碼關聯到用戶界面」的主旨。這使得它在與即時編譯結合時變成了一個快速原型的優異環境。

優點:整潔的編輯環境。易學、即時編譯導致簡單、迅速的原型。大量可用的插件。雖然有第三方的DirectX插件,DirectX 7已准備提供Visual Basic的支持。

缺點:程序很大,而且運行時需要幾個巨大的運行時動態連接庫。雖然表單型和對話框型的程序很容易完成,要編寫好的圖形程序卻比較難。調用Windows的API程序非常笨拙,因為VB的數據結構沒能很好的映射到C中。有OO功能,但卻不是完全的面向對象。專利權。

移植性:非常差。因為Visual Basic是微軟的產品,你自然就被局限在他們實現它的平台上。也就是說,你能得到的選擇是:Windows,Windows或Widnows。當然,有一些工具能將VB程序轉變成Java。

使用Visual Basic編寫的游戲:一些。有很多使用VB編寫的共享游戲,還有一些是商業性的。

資料:微軟的VB頁面有一些信息。

7、Java

Java是由Sun最初設計用於嵌入程序的可移植性「小C++」。在網頁上運行小程序的想法著實吸引了不少人的目光,於是,這門語言迅速崛起。事實證明,Java不僅僅適於在網頁上內嵌動畫 — 它是一門極好的完全的軟體編程的小語言。「虛擬機」機制、垃圾回收以及沒有指針等使它很容易實現不易崩潰且不會泄漏資源的可靠程序。

雖然不是C++的正式續篇,Java從C++ 中借用了大量的語法。它丟棄了很多C++的復雜功能,從而形成一門緊湊而易學的語言。不像C++,Java強制面向對象編程,要在Java里寫非面向對象的程序就像要在Pascal里寫「空心粉式代碼」一樣困難。

優點:二進制碼可移植到其他平台。程序可以在網頁中運行。內含的類庫非常標准且極其健壯。自動分配合垃圾回收避免程序中資源泄漏。網上數量巨大的代碼常式。

缺點:使用一個「虛擬機」來運行可移植的位元組碼而非本地機器碼,程序將比真正編譯器慢。有很多技術(例如「即時」編譯器)很大的提高了Java的速度,不過速度永遠比不過機器碼方案。早期的功能,如AWT沒經過慎重考慮,雖然被正式廢除,但為了保持向後兼容不得不保留。越高級的技術,造成處理低級的機器功能越困難,Sun為這門語言增加新的「受祝福」功能的速度實在太慢。

移植性:最好的,但仍未達到它本應達到的水平。低級代碼具有非常高的可移植性,但是,很多UI及新功能在某些平台上不穩定。

使用Java編寫的游戲:網頁上有大量小的Applet,但僅有一些是商業性的。有幾個商業游戲使用Java作為內部腳本語言。

資料:Sun的官方Java頁面有一些好的信息。IBM也有一個非常好的Java頁面。JavaLobby是一個關於Java新聞的最好去處。

8、創作工具

上面所提及的編程語言涵蓋了大多數的商業游戲。但是也有一個例外,這個大游戲由於它的缺席而變得突出。

「神秘島」。沒錯,賣得最好的商業游戲不是使用以上任何一門語言編的,雖然有人說「神秘島」99%是使用 3D建模工具製作的,其根本的編程邏輯是在HyperCard里完成的。

多數創作工具有點像Visual Basic,只是它們工作在更高的層次上。大多數工具使用一些拖拉式的流程圖來模擬流程式控制制。很多內置解釋的程序語言,但是這些語言都無法像上面所說的單獨的語言那樣健壯。

優點:快速原型 — 如果你的游戲符合工具製作的主旨,你或許能使你的游戲跑得比使用其他語言快。在很多情況下,你可以創造一個不需要任何代碼的簡單游戲。使用插件程序,如Shockware及IconAuthor播放器,你可以在網頁上發布很多創作工具生成的程序。

缺點:專利權,至於將增加什麼功能,你將受到工具製造者的支配。你必須考慮這些工具是否能滿足你游戲的需要,因為有很多事情是那些創作工具無法完成的。某些工具會產生臃腫得可怕的程序。

移植性:因為創作工具是具有專利權的,你的移植性以他們提供的功能息息相關。有些系統,如Director可以在幾種平台上創作和運行,有些工具則在某一平台上創作,在多種平台上運行,還有的是僅能在單一平台上創作和運行。

使用創作工具編寫的游戲:「神秘島」和其他一些同類型的探險游戲。所有的Shockwave游戲都在網路上。

資料:Director、HyperCard、SuperCard、IconAuthor、Authorware。

9、易語言

★全中文支持,無需跨越英語門檻。★全可視化編程,支持所見即所得程序界面設計和程序流程編碼。★中文語句快速錄入。提供多種內嵌專用輸入法,徹底解決中文語句輸入速度慢的問題。★代碼即文檔。自動規范強制代碼格式轉換,任何人編寫的任何程序源代碼格式均統一。★參數引導技術,方便程序語句參數錄入。★無定義類關鍵字。所有程序定義部分均採用表格填表方式,用戶無需記憶此類關鍵字及其使用格式。★命令格式統一。所有程序語句調用格式完全一致。★語法格式自動檢查。自動檢查並提示所輸入語句的語法格式是否正確,且可自動添加各類名稱。★全程提示與幫助。滑鼠停留立即顯示相關項目提示。編程時提示語法格式,調試時提示變數當前內容,隨時按下F1鍵可得到與當前主題相關詳細幫助等。★名稱自動管理。用戶修改任一名稱定義,其它所有包含該名稱的程序代碼均自動修正。★集成化開發環境。集界面設計、代碼編寫、調試分析、編譯打包等於一體。★學習資源豐富。詳細的幫助文件、數十兆的知識庫、數萬用戶的網上論壇、教材已出版發行……

10、結論

你可能希望得到一個關於「我該使用哪種語言」這個問題的更標準的結論。非常不幸,沒有一個對所有應用程序都最佳的解決方案。C適於快而小的程序,但不支持面向對象的編程。C++完全支持面向對象,但是非常復雜。Visual Basic與Delphi易學,但不可移植且有專利權。Java有很多簡潔的功能,但是慢。創作工具可以以最快的速度產生你的程序,但是僅對某一些類型的程序起作用。最好的方法是決定你要寫什麼樣的游戲,並選擇對你的游戲支持最好的語言。「試用三十天」的做法成為工業標準是件好事情。

G. dell筆記本電腦哪種系列適合編程(5000元左右)

很高興能為樓主回答問題,因為我在戴爾直銷店工作過,根據你的價格,給你羅列一下。根據你的價位需求,下面的玩你說的都沒什麼問題。 1)inspiron靈越系列,包括以下機型: 1440系列(雖然在5月份剛剛停產,但是尾貨還是比較多的),這個系列的筆記本是戴爾推出的經濟型筆記本,是最早的系列之一,面向家用以及普通用戶,一直是每年戴爾筆記本中賣得最好的,既有比較高的性價比,又有比較個性化的選擇,有七種彩殼可以選擇,性能方面可選T4400,T4300,T4500,T6600,P7350,P7450處理器,一般標配的都是2G的內存,250G的硬碟,獨顯的機型全部採用ATI4330,512M顯卡,集顯採用X4500板載顯卡。很多人說這款機器的設計有缺陷,因為後蓋打開後會擋住散熱風口,但據本人調查,從2009年10月以後戴爾對1440機型進行了改善,散熱問題基本得以解決,只要正常使用,一般不會出現問題的。 舉例說明其性價比: T4400/2G/250G/512M,這款的話在直銷店買的話就在4200左右, T4400/2G/250G/X4500,集顯,4000拿下。 T6600/2G/250G/512M的話在4400左右,性價比相當的高,有七種彩殼選擇,都是獨顯。 在同配置上來說相比聯想的要便宜,尤其比thinkpad。 另外說明一下的是T4400和T6600是兩個時代的產品。雖然都是雙核,但一個是奔騰架構,一個是酷睿架構(可以看筆記本上的標貼,是不一樣的),所以買T6600的更劃算一些。 這個系列中性價比最不高的是搭載P7350,P7450處理器的1440,雖然P系列處理器性能比較好,但i3處理器的出現使P系列的處理器僅僅輝煌的幾個月,含P7350,P7450處理器的1440機型價格逼近甚至比1464(i3處理器)還要高,通常在4700以上,但在市面上的數量已經不多。 1427系列,雖然已經停產,,我覺得還是有必要說一下,因為現在在市面上1427的尾貨還是有的。 1427是後來戴爾唯一一款採用NVIDIA顯卡的機型(除了alienware),用的是T4400處理器 ,價格逼近5900,性價比不是很高,而且因為NVIDIA顯卡的巨大發熱量,返修率激增,致使戴爾虧損近1億,因此便很快停產了。但總體來說還是一款不錯的機器。我同學用的就是。 1464(1564)系列,在2010年一月i3,i5,i7處理器上市以來,1464是第一款搭載i系列處理器的筆記本電腦,但只有i3,i5兩款,可以說是現在戴爾在中低端市場的主打機型,性價比很高,1460-i3-330M 剛上市的價格在5200左右,i3-330M處理器 2.13GHZ,2G DDR3 ,512M ATI4330的配置現在已經降到了4800左右,即使i5也只有5400左右。i3的性能也很強勁,雖然主頻與P7450相同,但在多任務處理方面很出眾,因為是雙核四線程嘛~可以說i系列處理器是真正意義上的智能處理器。再一個就是1464採用了全新的模具,全鋼拉絲面板。旋轉轉軸,是仿高端品牌studio思躍的,但是做的要比studio薄很多,散熱風口在側面,散熱性能很好。在同樣搭載i3處理器的聯想,宏基都要比戴爾的貴一些,而且三種顏色的彩殼也是吸引消費者的一大亮點。可以說性價比高,性能出眾。 14v系列,這是針對低端消費群體推出的一款筆記本,有賽揚900和T3100奔騰雙核兩款處理器,160G硬碟,2G內存,X4500集成顯卡,做的非常薄,有暗花,對日常辦公的人士來說是性價比很高筆記本,當然其性能僅限於「日常辦公」,呵呵,價格分別在3450和3750左右。 14vr系列,這個是性價比比較高的一款,主流的兩款配置是P6000/2G/320G/ATI 530V 512MB和i3-350M/2G/320G/ATI 530V 512MB,價格分別是4200和4500。 14R系列,這是戴爾在inspiron系列中推出的第二款含i3處理器的筆記本,顯卡為ATI 5470,1G的顯存,但同樣是低端顯卡,因此在游戲影音方面有了比較大的提升,價格在5400左右。2)vostro成就系列 這個也是與inspiron在同一起跑線的品牌,用戶群體主要面向中小型企業,是性價比最高的產品。主要有1014和1088兩個系列。 1014系列,該系列全部採用集成顯卡。處理器可選賽揚或T3000,2G/250G/x4500集顯,是辦公用的性價比最高的筆記本,價格分別是3250和3550。 1088系列,該系列全部採用獨立顯卡。處理器可選T3000,T6570,T6670,2G/250G/ATI4330 512M這樣幾乎與inspiron相同的配置,卻要比inspiron便宜近300~400,甚至性能方面比inspiron還強勁。3)studio思躍系列 這是戴爾的高端品牌,同配置筆記本比inspiron系列要高將近1000,因為它的做工都要比inspiron高一個檔次,例如背光鍵盤,吸入式光碟機(藍光光碟機可選),指紋識別,都是相當奢侈的配置。但是也只要某些高端的配置才應用在studio上,而不在inspiron上,為的就是拉開兩者的差距。最高選配i7-820Q處理器,8G內存,藍光光碟機,此配置的性能相當的強悍,但價格也相當的「強悍」,在10000左右,因此性價比不高,適合高端消費者。4)alienware外星人系列 這是戴爾取代studioXPS高端游戲本,作為一個獨立的分支專門為游戲發燒友而創立的品牌,主要有11寸,15寸,17寸三種,用的是NVIDIA的高端游戲顯卡,最便宜的11寸的售價是12999,用的是SUL低電壓處理器,是比較低端的處理器型號。可謂是能燒的起錢的主兒,就能玩兒外星人,性價比不高,搭載「愛妻」處理器的型號在實際時測驗非常強悍,其他型號的也比較理想。 其它的機型例如Latitude,Precision,都是面向高端商務或科研工作者,從事國防,石油勘探的技術人員才考慮,配置屬於「超級變態型」的,當然價格也很變態,價格在10000到30000不等,一般的直銷店都不會擺樣機,一般都是訂機銷售。我就不在這里給您贅述了,再說我的手都打字打的麻了。 希望我的答案能幫

H. honeywell care編程軟體。跪求。

http://531751509.qzone.qq.com/infocenter?ADUIN=531751509&ADSESSION=1233408134&ADTAG=CLIENT.QQ.1855_QQUrlReportBlankZone.0這里自己去看吧

I. opengl在windows系統下編程,如何實現在窗口外繪圖

二、生成OpenGL程序的基本步驟和條件 本文將給出一個例子,這個例子是一個用OpenGL顯示圖像的Windows程序,通過這個程序我們也可以知道用OpenGL編程的基本要求。我們知道,GDI是通過設備句柄(Device Context以下簡稱"DC")來繪圖,而OpenGL則需要繪制環境(Rendering Context,以下簡稱"RC")。每一個GDI命令需要傳給它一個DC,與GDI不同,OpenGL使用當前繪制環境(RC)。一旦在一個線程中指定了一個當前RC,所有在此線程中的OpenGL命令都使用相同的當前RC。雖然在單一窗口中可以使用多個RC,但在單一線程中只有一個當前RC。本例將首先產生一個OpenGL RC並使之成為當前RC,分為三個步驟:設置窗口像素格式;產生RC;設置為當前RC。 一、首先創建工程 用AppWizard產生一個EXE文件,選擇工程目錄,並在工程名字中輸入"GLSample一",保持其他的不變;第一步、選單文檔(SDI);第二步、不支持資料庫;第三步、不支持OLE;第四步、不選中浮動工具條、開始狀態條、列印和預覽支持、幫助支持的復選框(選中也可以,本文只是說明最小要求),選中三維控制(三D Controls);第五步、選中產生源文件注釋並使用MFC為共享動態庫;第六步、保持預設選擇。按Finish結束,工程創建完畢。 二、將此工程所需的OpenGL文件 和庫加入到工程中 在工程菜單中,選擇"Build"下的"Settings"項。單擊"Link"標簽,選擇"General"目錄,在Object/Library Moles的編輯框中輸入"OpenGL三二.lib glu三二.lib glaux.lib"(注意,輸入雙引號中的內容,各個庫用空格分開;否則會出現鏈接錯誤),選擇"OK"結束。然後打開文件"stdafx.h",將下列語句插入到文件中(劃下劃線的語句為所加語句): #define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers #include // MFC core and standard components #include // MFC extensions #include #include #ifndef _AFX_NO_AFXCMN_SUPPORT #include // MFC support for Windows 95 Common Controls #endif // _AFX_NO_AFXCMN_SUPPORT 三、改寫OnPreCreate函數並給視 類添加成員函數和成員變數 OpenGL需要窗口加上WS_CLIPCHILDREN(創建父窗口使用的Windows風格,用於重繪時裁剪子窗口所覆蓋的區域)和 WS_CLIPSIBLINGS(創建子窗口使用的Windows風格,用於重繪時剪裁其他子窗口所覆蓋的區域)風格。把OnPreCreate改寫成如下所示: BOOL CGLSample一View::PreCr- eateWindow(CREATESTRUCT& cs) { cs.style |= (WS_CLIPCHI- LDREN | WS_CLIPSIBLINGS); return CView::PreCreate- Window(cs); } 產生一個RC的第一步是定義窗口的像素格式。像素格式決定窗口著所顯示的圖形在內存中是如何表示的。由像素格式控制的參數包括:顏色深度、緩沖模式和所支持的繪畫介面。在下面將有對這些參數的設置。我們先在CGLSample一View的類中添加一個保護型的成員函數BOOL SetWindowPixel-Format(HDC hDC)(用滑鼠右鍵添加),並編輯其中的代碼,見程序一。 BOOL CGLSample一View::SetWindowPixelFormat(HDC hDC) { PIXELFORMATDESCRIPTOR pixelDesc; pixelDesc.nSize = sizeof(PIXELFORMATDESCRIPTOR); pixelDesc.nVersion = 一; pixelDesc.dwFlags = PFD_DRAW_TO_WINDOW | PFD_DRAW_TO_BITMAP | PFD_SUPPORT_OpenGL | PFD_SUPPORT_GDI | PFD_STEREO_DONTCARE; pixelDesc.iPixelType = PFD_TYPE_RGBA; pixelDesc.cColorBits = 三二; pixelDesc.cRedBits = 吧; pixelDesc.cRedShift = 一陸; pixelDesc.cGreenBits = 吧; pixelDesc.cGreenShift = 吧; pixelDesc.cBlueBits = 吧; pixelDesc.cBlueShift = 0; pixelDesc.cAlphaBits = 0; pixelDesc.cAlphaShift = 0; pixelDesc.cAccumBits = 陸四; pixelDesc.cAccumRedBits = 一陸; pixelDesc.cAccumGreenBits = 一陸; pixelDesc.cAccumBlueBits = 一陸; pixelDesc.cAccumAlphaBits = 0; pixelDesc.cDepthBits = 三二; pixelDesc.cStencilBits = 吧; pixelDesc.cAuxBuffers = 0; pixelDesc.iLayerType = PFD_MAIN_PLANE; pixelDesc.bReserved = 0; pixelDesc.dwLayerMask = 0; pixelDesc.dwVisibleMask = 0; pixelDesc.dwDamageMask = 0; m_GLPixelIndex = ChoosePixelFormat( hDC, &pixelDesc); if (m_GLPixelIndex==0) // Lets choose a default index. { m_GLPixelIndex = 一; if (DescribePixelFormat(hDC, m_GLPixelIndex, sizeof(PIXELFORMATDESCRIPTOR), &pixelDesc)==0) { return FALSE; } } if (SetPixelFormat( hDC, m_GLPixelIndex, &pixelDesc)==FALSE) { return FALSE; } return TRUE; } 接著用滑鼠右鍵在CGLSample一View中添加保護型的成員變數: int m_GLPixelIndex; 四、用ClassWizard添加WM_CREATE的消息處理函數OnCreate 添加OnCreate函數後如程序一所示。 至此,OpenGL工程的基本框架就建好了。但如果你現在運行此工程,則它與一般的MFC程序看起來沒有什麼兩樣。 5、代碼解釋 現在我們可以看一看Describe-PixelFormat提供有哪幾種像素格式,並對代碼進行一些解釋: PIXELFORMATDESCRIPTOR包括了定義像素格式的全部信息。 DWFlags定義了與像素格式兼容的設備和介面。 通常的OpenGL發行版本並不包括所有的標志(flag)。wFlags能接收以下標志: PFD_DRAW_TO_WINDOW 使之能在窗口或者其他設備窗口畫圖; PFD_DRAW_TO_BITMAP 使之能在內存中的點陣圖畫圖; PFD_SUPPORT_GDI 使之能調用GDI函數(註:如果指定了PFD_DOUBLEBUFFER,這個選項將無效); PFD_SUPPORT_OpenGL 使之能調用OpenGL函數; PFD_GENERIC_FORMAT 假如這種象素格式由Windows GDI函數庫或由第三方硬體設備驅動程序支持,則需指定這一項; PFD_NEED_PALETTE 告訴緩沖區是否需要調色板,本程序假設顏色是使用二四或 三二位色,並且不會覆蓋調色板; PFD_NEED_SYSTEM_PALETTE 這個標志指明緩沖區是否把系統調色板當作它自身調色板的一部分; PFD_DOUBLEBUFFER 指明使用了雙緩沖區(註:GDI不能在使用了雙緩沖區的窗口中畫圖); PFD_STEREO 指明左、右緩沖區是否按立體圖像來組織。 PixelType定義顯示顏色的方法。PFD_TYPE_RGBA意味著每一位(bit)組代表著紅、綠、藍各分量的值。PFD_TYPE_COLORINDEX 意味著每一位組代表著在彩色查找表中的索引值。本例都是採用了PFD_TYPE_RGBA方式。 ● cColorBits定義了指定一個顏色的位數。對RGBA來說,位數是在顏色中紅、綠、藍各分量所佔的位數。對顏色的索引值來說,指的是表中的顏色數。 ● cRedBits、cGreenBits、cBlue-Bits、cAlphaBits用來表明各相應分量所使用的位數。 ● cRedShift、cGreenShift、cBlue-Shift、cAlphaShift用來表明各分量從顏色開始的偏移量所佔的位數。 一旦初始化完我們的結構,我們就想知道與要求最相近的系統象素格式。我們可以這樣做: m_hGLPixelIndex = ChoosePixelFormat(hDC, &pixelDesc); ChoosePixelFormat接受兩個參數:一個是hDc,另一個是一個指向PIXELFORMATDESCRIPTOR結構的指針&pixelDesc;該函數返回此像素格式的索引值。如果返回0則表示失敗。假如函數失敗,我們只是把索引值設為一並用DescribePixelFormat得到像素格式描述。假如你申請一個沒得到支持的像素格式,則Choose-PixelFormat將會返回與你要求的像素格式最接近的一個值。一旦我們得到一個像素格式的索引值和相應的描述,我們就可以調用SetPixelFormat設置像素格式,並且只需設置一次。 現在像素格式已經設定,我們下一步工作是產生繪制環境(RC)並使之成為當前繪制環境。在CGLSample一View中加入一個保護型的成員函數BOOL CreateViewGLContext(HDC hDC),使之如下所示: BOOL CGLSample一View::CreateView GLContext(HDC hDC) { m_hGLContext = wglCreate Context(hDC);//用當前DC產生繪制環境(RC) if (m_hGLContext == NULL) { return FALSE; } if (wglMakeCurrent(hDC, m_hGLContext)==FALSE) { return FALSE; } return TRUE; } 並加入一個保護型的成員變數HGLRC m_hGLContext;HGLRC是一個指向rendering context的句柄。 在OnCreate函數中調用此函數: int CGLSample一View::OnCreate (LPCREATESTRUCT lpCreateStruct) { if (CView::OnCreate(lpCreateS truct) == -一) return -一; HWND hWnd = GetSafeHwnd(); HD

J. 為安裝一個honeywell excel care 的組態軟體,需要更改硬碟序列號,卻彈出不能訪問磁碟驅動器

Honeywell EXCEL CARE軟體是編程、調試工具軟體,最新版本8.0需要有硬體狗(類似U盤)才能正常使用,請知悉。

閱讀全文

與care編程相關的資料

熱點內容
優信二手車解壓後過戶 瀏覽:62
Windows常用c編譯器 瀏覽:778
關於改善國家網路安全的行政命令 瀏覽:833
安卓如何下載網易荒野pc服 瀏覽:654
javainetaddress 瀏覽:104
蘋果4s固件下載完了怎麼解壓 瀏覽:1003
命令zpa 瀏覽:285
python編譯器小程序 瀏覽:944
在app上看視頻怎麼光線調暗 瀏覽:540
可以中文解壓的解壓軟體 瀏覽:593
安卓卸載組件應用怎麼安裝 瀏覽:913
使用面向對象編程的方式 瀏覽:339
程序員項目經理的年終總結範文 瀏覽:929
內衣的加密設計用來幹嘛的 瀏覽:432
淮安數據加密 瀏覽:292
魔高一丈指標源碼 瀏覽:982
松下php研究所 瀏覽:168
c回調java 瀏覽:400
夢幻端游長安地圖互通源碼 瀏覽:746
電腦本地文件如何上傳伺服器 瀏覽:313