مشاهده نسخه کامل
: دوتا سوال
armintirand
20-07-2009, 20:49
سلام دوستان من يك برنامه كه تمرين اول گرافيكي hello world است را به صورت زير كامپايل ميكنم ولي 1 ارور ميده
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
int WINAPI Winmain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
{
MessageBox("\tHello,world!","My First Windows Application");
return 0;
}
ارور اون هم
F:\Documents and Settings\tirand\Desktop\programing\a1\main.cpp|7|e rror: cannot convert `const char*' to `HWND__*' for argument `1' to `int MessageBoxA(HWND__*, const CHAR*, const CHAR*, UINT)'|
سوال دوم هم اينه كه من يك برنامه با ليست پيوندي براي ذخيره اطلاعت دانشجويي نوشتم كه ميخوام حالا اين ليست پيوندي رو به صورت فايل ذخيره كنم ميشه منو راهنمايي كنيد.منبع من جعفر نزاد است كه در اين مورد چيزي آموزش نداده.
اين هم برنامه
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
class node{
friend class linkList;
char name[21];
int stno;
float ave;
node *next;
};
class linkList{
public:
linkList();
~linkList();
void addNode();
void delNode(int &);
void display();
private:
node *first;
node *last;
};
linkList::linkList(){
first=last=NULL;
}
linkList::~linkList(){
node *curPtr=first;
node *temp;
while(curPtr){
temp=curPtr;
curPtr=curPtr->next;
delete temp;
}
}
void linkList::delNode(int &no){
node *curPtr=first, *nextPtr=first;
while(nextPtr){
if(no==nextPtr->stno)
if(nextPtr==first){
first=first->next;
delete nextPtr;
break;
}
else{
if(nextPtr==last)
last=curPtr;
curPtr->next=nextPtr->next;
delete nextPtr;
break;
}
else{
curPtr=nextPtr;
nextPtr=nextPtr->next;
}
}
}
//****************************
void linkList::addNode()
{
node *newPtr=new node;
if(!newPtr){
cout<<"Allocation";
getch();
}
newPtr->next=NULL;
clrscr();
cout<<"Name "<<"Stno "<<" Average\n";
gotoxy(1,2);
cin>>newPtr->name;
gotoxy(20,2);
cin>>newPtr->stno;
gotoxy(30,2);
cin>>newPtr->ave;
if(first==NULL)
first=last=newPtr;
else{
last->next=newPtr;
last=newPtr;
}
}
//******************************
void linkList::display()
{
int r=2;
clrscr();
cout<<"name "<<"stno "<<" average\n";
node *curPtr=first;
while(curPtr){
gotoxy(1,r);
cout<<curPtr->name<<" ";
gotoxy(20,r);
cout<<curPtr->stno<<" ";
gotoxy(30,r);
cout<<curPtr->ave<<" ";
curPtr=curPtr->next;
r++;
}
}
int menu();
int main(){
int no;
linkList testList;
for(;;){
clrscr();
switch(menu()){
case 1:testList.addNode();
break;
case 2:cout<<"Enter stno to delet:";
cin>>no;
testList.delNode(no);
break;
case 3:testList.display();
getch();
break;
case 4:exit(1);
return 0;
}
}
}
//*******************************
int menu(){
int choice;
cout<<"1.Enter a student.\n"
<<"2.Delet a student.\n"
<<"3.Display list.\n"
<<"4.End of progam.\n";
cout<<"\n Enter your select (1-4):";
cin>>choice;
return choice;
}
البته ببخشيد بلد نبودم چطور تو انجمن كدها رو درست نشان بدم تا كروشه ها وسمي كولون ها درست سر جاشون باشن.
ممنون
با سلام
دوست عزیز اینطور که به نظر میرسه ما دو تا تابع api در این مورد داریم.
فکر کنم اگه شما نام تابع MessageBox رو کلا با حروف بزرگ بنویسید مشکلتون حل بشه.
اینجوری MESSAGEBOX
در مورد مشکل بعدی هم فعلا وقت ندارم.
کدها رو هم بین دو تگ کد قرار بدین که به صورت # هم مشخص هست.
موفق باشید.
sin2x=2sinxcosx
20-07-2009, 21:54
در مورد سوال اول :
شما اين خطو جايگزين کنين ببينين حل ميشه :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اگه دومي رو داخل تگ هاي html مي ذاشتين بهتر مي شد .
armintirand
21-07-2009, 13:32
سلام دوستان در مورد بزرگ نوشتن MessageBox این ارور رو میده
F:\Documents and Settings\tirand\Desktop\programing\file.cpp(7) : error C2065: 'MESSAGEBOX' : undeclared identifier
درمورد کذی که جناب sin2x=2sinxcosx گفتند هم که این اروررو میده.
F:\Documents and Settings\tirand\Desktop\programing\file.cpp(7) : error C2664: 'MessageBoxA' : cannot convert parameter 2 from 'const unsigned short *' to 'const char *'
در ضمن من دارم با ویژوال c++و codblocke تست میکنم برنامه رو.
ممنون
سلام دوستان در مورد بزرگ نوشتن MessageBox این ارور رو میده
F:\Documents and Settings\tirand\Desktop\programing\file.cpp(7) : error C2065: 'MESSAGEBOX' : undeclared identifier
درمورد کذی که جناب sin2x=2sinxcosx گفتند هم که این اروررو میده.
F:\Documents and Settings\tirand\Desktop\programing\file.cpp(7) : error C2664: 'MessageBoxA' : cannot convert parameter 2 from 'const unsigned short *' to 'const char *'
در ضمن من دارم با ویژوال c++و codblocke تست میکنم برنامه رو.
ممنون
احتمالا شما پارامتر دوم رو اشتباه وارد می کنی .
اگه کد رو بذارید بهتره.
در ضمن می توانید این تعاریف رو در ابتدای کد قرار دهید و به عنوان پارامتر آخر به تابعی که کاربر sin2x=2sinxcosx گفتند ارسال و کد مطلوب تری رو بدست بیاورد.
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اون تابعی هم که من گفتم احتمالا به درد پلاس نمی خوره.بیخیالش شوید.
موفق باشید.
armintirand
21-07-2009, 15:03
دوست عزیز من قبلا با ویژوال c++ البته به صورت کدنوشتن نه بلکه با امکانات خود ویژوال این کاررو انجام دادم اما حالا میخوام به صورت یک برنامه ساده که فقط یک مسیج باکس داره این کاررو بکنم.کد رو هم بالا گذاشتم.
ممنون
سلام
کدی که sin2x=2sinxcosx داد درسته فقط از پارامتر دوم (LPCWSTR) رو حذف کن، بجای پارامتر آخر هم همین مقادیری که
mahdi7s زحمت کشیدن بزارین البته اینا تو windows.h هست نیازی به تعریف دوباره نیست
اگه مثال اولی از یک کتاب هست برام جالبه اسم کتاب رو بدونم
سلام
الان یه pm دریافت کردم...
توضیحات داش hoaxor کامل هستن و فکر نمی کنم مشکلی وجود داشته باشه.
موفق باشید.
armintirand
22-07-2009, 14:52
سلام دوستان من از کتاب opengl gameprograming دارم برنامه نویسی گرافیکی رو یاد میگیرم و این هم مثال اولش بود که با مشکل مواجه شدم .
من این کار رو همانجام میدم ببینم چی میشه؟
sin2x=2sinxcosx
22-07-2009, 14:56
ويرايش چندم ؟ جديدترين ويرايشش چنده ؟ نويسنده اش کيه ؟
من اينو دانلود کردم که ويرايش پنجمه .
OpenGL Programming Guide
armintirand
22-07-2009, 16:14
opengl game programming
kevin hawking
and
dave astle
در ضمن من این موردی که شما گفتین رو انجام دادم باز نشد این بار دوباره سورس میذارم.
این سورس برنامه
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
int WINAPI Winmain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
{
MessageBox(NULL, "\tHello, world!", "My First Windows Application", NULL);
return 0;
}
بعدش که میام کامپایل کنم دوتا warning میده
warning ها
F:\Documents and Settings\tirand\Desktop\programing\win hello\Untitled1.c(7) : warning C4047: 'function' : 'unsigned int ' differs in levels of indirection from 'void *'
---------------------------------------------
F:\Documents and Settings\tirand\Desktop\programing\win hello\Untitled1.c(7) : warning C4024: 'MessageBoxA' : different types for formal and actual parameter 4
و وقتی که build میکنم دو تا error میده
errorها
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
----------------------------------------
Debug/Untitled1.exe : fatal error LNK1120: 1 unresolved externals
امیدوارم که اینبار مشکلم حل بشه.
در ضمن من تو ویژوال c++ یک فایل سورس c++ باز میکنم و بعد کد رو وارد میکنم که فکر کنم تو این کار نباید مشکلی باشه.
ممنون
مشکل اینه که پارامتر چهار رو NULL گزاشتی پارامتر آخر باید بصورت یک عدد باشه ولی NULL عدد به حساب نمیاد
حالا چه عددی باید بزاری، پستی که mahdi7s زحمت کشیده مقادیری مناسب برای اون پارامتر رو داده
مورد دوم که حواسم نبود WinMain رو اشتباه نوشته بودی از نظر بزرگ کوچیکی حروف
این درست شده مثال،:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در ضمن من تو ویژوال c++ یک فایل سورس c++ باز میکنم و بعد کد رو وارد میکنم که فکر کنم تو این کار نباید مشکلی باشه.
آره همینجوری درسته فقط مطمعن شو پروژه رو از نوع win32 project انتخاب میکنی نه Console
به خاطر این اینکه این اررو رو داده میگم، چون به نظر میاد main رو پیدا نکرده!!
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
armintirand
23-07-2009, 00:42
دوست عزيز ممنون از كمكتون اما همونطور كه اسم تاپيك دو سوال هست دو سوا دارم يكي اينكه برنامهاي كه تو پست اولم با ليست پيوندي نوشتم رو ميخوام با فايل قابليت ذخيره سازي براش اضافه كنم اگه ممكنه كمكم كنيد.
سوال دومم هم باز ويژوال هست.
كد زير رو وقتي كامپايل ميكنم يك ارور ويك وارنينگ ميده.
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
PAINTSTRUCT ps;
switch (message)
{
case WM_CREATE:
{
return 0;
}
case WM_CLOSE:
{
PostQuitMessage(0);
return 0;
}
case WM_PAINT:
{
BegainPaint(hwnd, &ps);
EndPaint(hwnd, &ps);
}
default:
break;
}
return DefWindowProc(hwnd,message,wParam,lParam);
}
ارور هم اين هست
F:\Documents and Settings\tirand\Desktop\1111111111111\callback\mai n.cpp|19|error: `BegainPaint' was not declared in this scope|
وارنينگ هم اين هست
F:\Documents and Settings\tirand\Desktop\1111111111111\callback\mai n.cpp|19|warning: unused variable 'BegainPaint'|
ممنون
armintirand
23-07-2009, 10:58
دوستان به اين تاپيك يك كم بيشتر سر بزنيد من وقت كمي براي يادگيري opengl دارم و به كمك شما ها در رفع اشكالاتم نيازمندم .لطفا اگه ممكنه به سوال بالايي هم جواب بدين.
ممنون
BegainPaint مشکل املایی داره باید این بشه BeginPaint
در مورد سوال دومت من ++C ام زیاد جالب نیست دوستانی که بلدن باید بیان جواب بدن
armintirand
23-07-2009, 21:27
ممنون دوست عزيز.
armintirand
24-07-2009, 16:22
اما كد امروز
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
PAINTSTRUCT paintStruct;
HDC hDC;
char string[] = "hello,world!";
switch(message)
{
case WM_CREATE:
return 0;
break;
case WM_CLOSE:
PostQuitMessage(0);
return 0;
break;
case WM_PAINT:
hDC = BeginPaint(hwnd, &paintStruct);
SetTextColor(hDC,COLORREF(0x00FF0000));
TextOut(hDC,150,150,string,sizeof(string)-1);
EndPaint(hwnd, &paintStruct);
return 0;
break;
default:
break;
}
return (DefWindowProc(hwnd, message, wParam,lParam));
}
int WINAPI Winmain(HINSTANCE hInstance,HINSTANCE hPrevInstance, LPSTR lpcmdLine, int nShowCmd)
{
WNDCLASSEX windowClass;
HWND hwnd;
MSG msg;
bool done;
windowClass.cbSize = sizeof(WNDCLASSEX);
windowClass.style = CS_HREDRAW | CS_VREDRAW;
windowClass.lpfnWndProc = WndProc;
windowClass.cbClsExtra = 0;
windowClass.cbWndExtra = 0;
windowClass.hInstance = hInstance;
windowClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
windowClass.hCursor = LoadCursor(NULL,IDC_ARROW);
windowClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
windowClass.lpszMenuName = NULL;
windowClass.lpszClassName = "MyClass";
windowClass.hIconSm =LoadIcon(NULL, IDI_WINLOGO);
if(!RegisterClassEx(&windowClass))
return 0;
hwnd = CreateWindowEx(NULL,
"MyClass",
"A REAL Windows Application!"
WS_OVERLAPPEDWINDOW|
WS_VISIBLE|
WS_SYSMENU,
100,100,
400,400,
NULL,
NULL,
hInstance,
null);
if (!hwnd)
return 0;
done = false;
while(!done)
{
PeekMessage(&msg, hwnd, NULL, NULL ,PM_REMOVE);
if(msg.message ==WM_QUIT)
{
done = true
}
else
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return msg.wParam;
}
ارورهاي اون
f:\documents and settings\tirand\desktop\1111111111111\a complate win\1.cpp(63) : error C2064: term does not evaluate to a function
-----------------------------------------------------------
f:\documents and settings\tirand\desktop\1111111111111\a complate win\1.cpp(71) : error C2065: 'null' : undeclared identifier
--------------------------------------------------------
f:\documents and settings\tirand\desktop\1111111111111\a complate win\1.cpp(85) : error C2143: syntax error : missing ';' before '}'
اگه اينطور پيش بره اين تاپيك ميشه مرجع سورس api .
باز WinMain یکی از حرفاش از نظر بزرگ کوچیکی مشکل داره
دو تا از ایرادها تو تابع CreateWindowEx هست یکی پارامتر سوم که ویرگول بعدش نیست، دوم پارامار آخر NULL رو با حروف کوچیک نوشتین
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
یکی دیگه هم این خطه ویرگول آخر دستور نزاشتین
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
راستی این قبیل اررور ها رو اگه تو محیط کامپایلر روش دو تا کلیک کنید میره رو خطی که مورد داره و میشه ایراد رو پیدا کرد
اگه اينطور پيش بره اين تاپيك ميشه مرجع سورس api .
آره بد نیست یه مرجعی هم در این مورد باشه
armintirand
24-07-2009, 23:17
سلام دوست عزيز من باز ارور اكسترنال سيمبول رو ذريافت كردم اگه ميشه به من دقيقا بگين كه توي ويژول c++ از كدوم نوع پروژه استفاده كنم تا اين ارور رو نگيرم.
ممنون
همونطور که قبلا هم گفتم باید از نوع Win32 Project باشه نه Win32 Console
البته اگه مثل اررور قبلی مرتبط با main باشه
armintirand
25-07-2009, 22:38
خوب برنامه حالا شده اين ولي اين ازوز زو نميتونم بر طرف كنم
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
PAINTSTRUCT paintStruct;
HDC hDC;
char string[] = "hello,world!";
switch(message)
{
case WM_CREATE:
return 0;
break;
case WM_CLOSE:
PostQuitMessage(0);
return 0;
break;
case WM_PAINT:
hDC = BeginPaint(hwnd, &paintStruct);
SetTextColor(hDC,COLORREF(0x00FF0000));
TextOut(hDC,150,150,string,sizeof(string)-1);
EndPaint(hwnd, &paintStruct);
return 0;
break;
default:
break;
}
return (DefWindowProc(hwnd, message, wParam,lParam));
}
int WINAPI Winmain(HINSTANCE hInstance,HINSTANCE hPrevInstance, LPSTR lpcmdLine, int nShowCmd)
{
WNDCLASSEX windowClass;
HWND hwnd;
MSG msg;
bool done;
windowClass.cbSize = sizeof(WNDCLASSEX);
windowClass.style = CS_HREDRAW | CS_VREDRAW;
windowClass.lpfnWndProc = WndProc;
windowClass.cbClsExtra = 0;
windowClass.cbWndExtra = 0;
windowClass.hInstance = hInstance;
windowClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
windowClass.hCursor = LoadCursor(NULL,IDC_ARROW);
windowClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
windowClass.lpszMenuName = NULL;
windowClass.lpszClassName = "MyClass";
windowClass.hIconSm =LoadIcon(NULL, IDI_WINLOGO);
if(!RegisterClassEx(&windowClass))
return 0;
hwnd = CreateWindowEx(NULL,
"MyClass",
"A REAL Windows Application!",
WS_OVERLAPPEDWINDOW|
WS_VISIBLE|
WS_SYSMENU,
100,100,
400,400,
NULL,
NULL,
hInstance,
NULL);
if (!hwnd)
return 0;
done = false;
while(!done)
{
PeekMessage(&msg, hwnd, NULL, NULL ,PM_REMOVE);
if(msg.message ==WM_QUIT)
{
done = true;
}
else
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return msg.wParam;
}
ارور مربوط به پيدا كردن winmain هست ومن اپتدا new رو انتخاب ميكنم بعد از سربرگproject گزينه win32application رو انتخاب ميكنم و گزينه win32 هم تيك داره بعد next و نوع اونو empty انتخاب ميكنم .آيا روش من درست نيست؟؟؟؟؟؟؟؟؟كه ارورهاي زير رو ميده؟
ارورها
LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16
------------------------------------------------------------------------------
Debug/tttttttttttttttttt.exe : fatal error LNK1120: 1 unresolved externals
ديگه دارم كلافه ميشم شما رو هم خيلي اذيت ميكنم.ببخشيد.
ممنون
مشکل اینه که Winmain رو اشتباه مینویسین حرف m در کلمه main باید با حرف بزرگ نوشت بشه یعنی WinMain تا الان سه بار اینو گفتم:18:
کلا این زبان اولش یکم دنگ و فنگ داره بعد خوشتون میاد ازش، امیدوارم به کارتون ادامه بدین و ناامید نشین:46:
موفق باشید
armintirand
26-07-2009, 16:25
سلام و ممنون منتظر برنامه جديدم باش.(همراه با ارور winmain) شوخي كردم.
ممنون
armintirand
28-07-2009, 15:53
سلام دار م برنامه جدیدم رو مینویسم بعد از کامپایل میزارمش اینجا اگه ارور نداشت بازم میزارمش تا آرشیو کامل بشه .
داره کم کم برنامه ها به openGL مربوط میشه.
ممنون
armintirand
29-07-2009, 23:55
سلام بالاخره برنامه رو موفق شدم با ارور بنويسم.
اين سورسش
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glaux.h>
float angle =0.0f;
HDC g_HDC;
void SetupPixelFormat(HDC hDC)
{
int nPixelFormat;
static PIXELFORMATDESCRIPTOR pfd = {
sizeof(PIXELFORMATDESCRIPTOR),
1,
PFD_DRAW_TO_WINDOW |
PFD_SUPPORT_OPENGL |
PFD_DOUBLEBUFFER,
PFD_TYPE_RGBA,
32,
0,0,0,0,0,0,
0,
0,
0,
0,0,0,0,
16,
0,
0,
PFD_MAIN_PLANE,
0,
0,0,0};
nPixelFormat = ChoosePixelFormat(hDC,&pfd);
}
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
static HGLRC hRC;
static HDC hDC;
char string[] = "Hello, world!";
int width, height;
switch(message)
{
case WM_CREATE:
hDC = GetDC(hwnd);
g_HDC = hDC;
SetupPixelFormat(hDC);
hRC = wglCreateContext(hDC);
wglMakeCurrent(hDC,hRC);
return 0;
break;
case WM_CLOSE:
wglMakeCurrent(hDC,NULL);
wglDeleteContext(hRC);
PostQuitMessage(0);
return 0;
break;
case WM_SIZE:
height = HIWORD(lParam);
width = LOWORD(lParam);
if (height==0)
{
height=1;
}
glViewport(0,0,width,height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0f,(Glfloat)width/(GLfloat)height,1.0f,1000.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
return 0;
break;
default:
break;
}
return (DefWindowProc(hwnd,message,wParam,lParam));
}
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
{
WNDCLASSEX windowClass;
HWND hwnd;
MSG msg;
bool done;
windowClass.cbSize =sizeof(WNDCLASSEX);
windowClass.style =CS_HREDRAW |CS_VREDRAW;
windowClass.lpfnWndProc =WndProc;
windowClass.cbClsExtra =0;
windowClass.cbWndExtra =0;
windowClass.hInstance =hInstance;
windowClass.hIcon =LoadIcon(NULL,IDI_APPLICATION);
windowClass.hCursor =LoadCursor(NULL,IDC_ARROW);
windowClass.hbrBackground=NULL;
windowClass.lpszMenuName=NULL;
windowClass.lpszClassName="MyClass";
windowClass.hIconSm =LoadIcon(NULL.IDI_WINLOGO);
if(!RegisterClassEx(&windowClass))
return 0;
hwnd = CreatWindowEx(NULL,
"MyClass",
"The OpenGL Window Application",
WS_OVERLAPPEDWINDOW | WS_VISIBLE |
WS_SYSMENU | WS_CLIPCHILDREN |
WS_CLIPSIBLINGS,
100,100,
400,400,
NULL,
NULL,
hInstance,
NULL);
if (!hwnd)
return 0;
ShowWindow(hwnd, SW_SHOW);
UpdateWindow(hwnd);
done = false;
while (!done)
{
peekMessage(&msg, hwnd, NULL, NULL, PM_REMOVE);
if (msg.message==WM_QUIT)
{
done = true;
}
else
{
glclear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
angle = angle + 0.1f;
if (angle >= 360.0f)
angle = 0.0f;
glTranslatef(0.0f,0.0f,-5.0f);
glRotatef(angle, 0.0f,0.0f,1.0f);
glColor3f(1.0f,0.0f,0.0f);
glBegin(GL_TRIANGLES);
glVertex3f(0.0f,0.0f,0.0f);
glVertex3f(1.0f,0.0f,0.0f);
glVertex3f(1.0f,1.0f,0.0f);
glEnd();
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return msg.wParam;
}
هفت تا هم ارور داره كه سر در نميارم.
ممنون
خوب به ترتیب میگم، من درست شدشو میزارم
1 - تو این خط Glfloat یک حرفش رو کوچیک نوشتین باید باید GLfloat میشد
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
2 - تو این قط به جای ویرگول نقطه گزاشتین
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
3 - این خط یه حرف e در تابع CreateWindowEx جا افتاده
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
4 - این خط حرف p در تابع PostMessage کوچیک نوشتین باید بزرگ باشه
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
5 - این خط هم حرف c در تابع glClear کوچیک نوشته شده باید بزرگ باشه
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
armintirand
30-07-2009, 20:10
دوست عزيز ممنون از دقتت و كمكت اما باز كامپايل نميشه.
سلام خدمت دوستان
داشتم یه نگاهی به پستهای این تاپیک می کردم:31:
خیلی واسم جالب بود توی همه ی این سوالات مشکل توی تایپ بوده.
از دوست عزیز hoaxor هم به خاطر دقت بالاشون تشکر می کنم.
موفق باشید.
دوست عزيز ممنون از دقتت و كمكت اما باز كامپايل نميشه.
خوب چه ارروری داد، احتمالا کتابخانه هاشو اضافه نکردی منظورم OpenGL32.lib و GLu32.lib هست.
سلام خدمت دوستان
داشتم یه نگاهی به پستهای این تاپیک می کردم
خیلی واسم جالب بود توی همه ی این سوالات مشکل توی تایپ بوده.
از دوست عزیز hoaxor هم به خاطر دقت بالاشون تشکر می کنم.
موفق باشید.
سلام، لطف داری دوست من چشماتون دقیق میبینه:31:
armintirand
01-08-2009, 18:42
سلام دوست عزیز باید به خاطر دقت شما به شما لقب کامپایلر را داد.
در مورد ارورهایی که میده بله این بار همون اروری که قبلا به تابع WinMain میداد رو به کتابخونه های گرافیکی از جمله opengl,...میده با اینکه من کتابخوته ها رو به کامپایلرم اضافه کردم من فایلهای lib رو در پوشه libو dll رو در system32و .h رو در include اضافه کردم و با برنامه هایی که بدون api در مورد opengl هست مشکلی ندارم اما وقتی openglرو با api مینویسم با مشکل مواجه میشم.
سلام، لطف دارین شما
در مورد مشکل ببینید بجز قرار دادن اون فایلها در پوشه هایی که ذکر کردین باید تو خود کامپیالر هم اینا رو اضافه کنید
مثلا تو نسخه 2008/2005 ویژوال استادیو از منوی Project با توجه به اسم پروزه Properties اش رو انتخاب کنید
بعد به مسیر linker -> Input برین و سمت راست در Additional Dependencies این دو تا کتابخانه رو به این صورت وارد کنید
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
کلمپایلر های دیگه هم یه همچین قسمتی دارن اگه کامپایلرتون چیز دیگه ای هست بگین اگه داشته باشم بهتون میگم
armintirand
02-08-2009, 01:00
سلام به نکته خیلی مهمی اشاره کردید که من خیلی وقت پیش برای کامپایلر dev تو یک سایت دیده بودم و اون صفحه رو هم ذخیره کردم ولی حالا اون صفحه رو ندارم اگه ممکنه این مورد رو برای devو codblock هم بگید اینا از ویژوال برام مهمترند چون free تشریف دارند .
ممنون
راستش خود منم به ندرت از کامپایلر ملکروسافت استفاده مکینم
به هر حال، من codeblock رو دارم.برای تنظیمش ار منوی Project گزینه Build Options رو انتخاب کن
حالا سمت چپ اسم پروژه رو نوشته زیرشم یه Debug و Release هست تو همون اسم پروژه رو انتخاب کن
حالا سمت راست سربرگ Linker setting رو بزن در قسمت Link libraries اون فایلها رو اضافه کن کافیه فقط اسمشو وارد کنی
یعنی opengl32 و glu32 پسوند هم لازم نداره
armintirand
02-08-2009, 18:42
خوب حالا اگه من یک dllبا نام armintirand32.dll داشته باشم که تو system32 انداخته باشم و تو برنامه به اون نیاز هست فقط کافیه که عبارت armintirand32 رو به اون قسمت اضافه کنم؟
نه خود dll رو نباید در اون قسمت قرار داد، شما وقتی یه dll میسازین میتونین به کامپایلر بگین یه فایل lib. هم بهتون بده
بعد این lib. فایل به اون صورت که گفتم استفاده میشه کرد
اما اگه فایل lib. رو ندارین دو تا کار میتونین بکنین
1 - یکی بسازین که اینم به دو طریق هست اگه dll مال خودتونه با کامپایلر اگر نیست با ابزارهایی که برای اینکار هستن
که مورد دوم برای نمونه polib در کامپایلر PellesC هست gcc هم که همراه CodeBlock هست هم فکر مکینم اینکارو مینه ولی کار نکردم باهاش
اگه خواستین polink رو یه آپلود میکنم که ازش استفاده کنید یا از همون gcc استفاده کنین
2 - از توابع LoadLibrary و GetProcAddress استفاده کنید در این حالت دیگه فایل lib. رو نمی خواد ولی کاره بیشتری باید انجام بشه و میشه گفت کمی متفاوته
اگه این مورد رو لازم دارین بگین توضیح بدین
البته تو یه پست دیگه در مورد این دو تابع یه مثال زده بودم میتونین اینم بینیند
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
armintirand
10-09-2009, 11:48
سلام
من دارم روی یک برنامه کتابخانه کار میکنم که با آرایه ای از ساختمانها نوشتم و با c++
و میخوام بعد تموم شدن گرافیکیش بکنم اما هنوز تو بیس برنامه مشکل دارم
این سورس برنامه:
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
const int num_book=100;
struct struc_book{
char book_name[20];
char book_auther[20];
char book_writer[20];
int books_number;
}s_book[num_book];
class lib{
public:
int menue_select(void);
int find_free(void);
void list_all(void),init_list_all(void);
void delete_book(void);
//save(********);
//restore(**********);
void enter(void);
private:
/*struct struc_book{
char book_name[20];
char book_auther[20];
char book_writer[20];
int books_number;
}s_book[num_book];*/
};
int lib::menue_select(void)
{
char s[10];
int c;
clrscr();
gotoxy(29,6);
cout <<"(1).Entering data";
gotoxy(29,8);
cout<<"(2).Deleting data";
gotoxy(29,10);
cout<<"(3).List all data";
gotoxy(29.12);
cout<<"(4). Quit ";
do{
gotoxy(24,15);
cout<<"Please enter your choice(1-4):";
cin>>s;
c=atoi(s);
}while(c<0||c>4);
return (c);
}
void lib::enter (void)
{
int slot;
char s[80];
slot=find_free();
if(slot==-1){
cout<<"\nList full";
return ;
}
gotoxy(5,17);
cout<<"Enter book name";
cin.get(s_book[slot].book_name,19);
gotoxy(40,17);
cout<<"Enter book authet:";
cin.get(s_book[slot].book_auther,19);
gotoxy(5,19);
cin.get(s_book[slot].book_writer,19);
s_book[slot].books_number=slot;
}
void lib::find_free(void)
{
register int t;
for(t=0;s_book[t].book_name[0]
&&t<num_book;++t);
if(t==num_book) return -1;
return t;
}
void lib::delete_book(void)
{
int slot;
gotoxy(28,19);
cout<<"enter record #(0-99):";
cin>>slot;
if(slot>=0&&slot<num_book)
s_book[slot].book_name[0]='\0';
}
void list_all(void)
{
register int t;
int r=0;
char ch;
clrscr( );
gotoxy(25,2);
cout<<"all information in list are:";
gotoxy(13,3);
cout<<"********";
gotoxy(10,4);
cout<<"name auther writer number";
gotoxy(10,5)
cout<<" ";
for(t=0;t<num_book;++t){
if(s_book[t].book_name[0]){
gotoxy(14,6+r);
cout<<s_book[t].book_name;
gotoxy(26,6+r);
cout<<s_book[t].book_auther;
gotoxy(40,6+r);
cout<<s_book[t].book_writer;
gotoxy(54,6+r);
cout<<s_book[t].books_number;
r++;
}
}
gotoxy(13,6+r)
cout<<"********";
gotoxy(27,7+r);
cout<<"press any key to continue";
getch( );
}
void lib::list_all(void);
{
register int t;
for(t=0;t<num_book;++t)
s_book[t].book_name[0]='\0';
int main ( )
{
lib ketab;
char a;
for(;;){
a=ketab.menue_select();
switch(a){
case 1: ketab.enter(); break();
case 2:ketab.delete_book(); break;
case 3:ketab.list_all(); break;
case 4:exit(0);
}
}
}
با بورلند c++
کام÷ایل میکنم که ارور میگیره
اگه ممکنه در مورد جای ساختمانم هم یک نظری بدید.
sin2x=2sinxcosx
10-09-2009, 13:04
برنامه تونو داخل تگ ها قرار مي دادين بهتر بود . خيلي ناخواناست . سعي کنين ديگه از اين clrscr و gotoxy استفاده نکنين . کاملا منسوخ شدن . هميشه که قرار نيست با بورلند سي پلاس پلاس برنامه تون کامپايل بشه . برنامه تونو سعي کنين تا حد ممکن استاندارد بنويسين . ارور خاصي نداره . مثلا تو پياده سازي تابع بعد از پرانتز بسته ، سمي کالن گذاشتين که باعث شده کامپايلر فکر کنه دارين يه تابع رو دوباره تعريف مي کنين . يا اينکه يه چيزي از تابع void دارين بر مي گردونين . اين ارورها رو با کمي دقت ميشه حل کرد . من حل مي کردم و برنامه کامل رو مي دادم ولي از اونجا که من اگه همه ارورها رو هم رفع کنم باز برنامه تو کامپايلر من اجرا نميشه ( به دليل استفاده از gotoxy ) بهتره خود شما اين کارو بکنين .
چون داخل تگ قرار ندادين به جاي بعضي کاراکتر ها شکلک افتاده .
راستي براي يه حلقه عادي از register استفاده نکنين بهتره .
موفق باشين ...
armintirand
10-09-2009, 17:14
سلام ممنون به خاطر نظرات خوب شما اما به جای gotoxy از چی استفاده کنم آخه برام قالب بندی برنامه خیلی مهمه راستی اگه این دستور رو حذف کنم ارور ها بر طرف میشه؟ وشما برای این برنامه کدوم کامایلر رو مناسب میدونین من با ویژوال هم یک تست میزنم.
بازم
ممنون
sin2x=2sinxcosx
10-09-2009, 23:24
به جاي gotoxy از همين دستورات قالب بندي متن مثل n\ و t\ و اينا بايد استفاده کنين .
در مورد اين که اگه gotoxy رو حذف کنين ارورها رفع ميشن يا نه ، اون بستگي به کامپايلرتون داره . ايرادات رو تو پست قبلي گفتم .
با ويژوال سي پلاس پلاس اگه کامپايل کنين حدود 55 تا ارور مي گيرين . در اين صورت بايد حتما gotoxy رو حذف کنين .
موقع برنامه نوشتن استاندارد سال 2003 ANSI/ISO رو بخونين . سعي کنين از کامپايلرهايي استفاده کنين که اين استاندارد رو رعايت کرده باشن . سي پلاس پلاس از زمان توليد تا حالا خيلي تغيير کرده .
armintirand
11-09-2009, 01:17
دوست عزیز من روی برنامه کمی کار کردم الان ۴ تا ارورش مونده که دقیقا مربوط به این gotoxy هست من قبلا با این دستور خیلی راحت کار میکردم ولی نمیدونم چرا الان برام مصیبت شده.
در ضمن درسته که میشه از n\وt\ استفاده کرد ولی شما فکر کنید چقدر کار سخت میشه به جای یک دستور سر راست gotoxyراه رو دور کنیم و چند بار باید از این دستور استفاده کرد (t\ n\ ) تا جای یک gotoxy رو بده؟
اگه ممکنه یک راه برای gotoxy برام بگین احتمال میدم مشکل اینه که هدر conio.h درست include نشده و اگه اون حل بشه حله.
ممنون
sin2x=2sinxcosx
11-09-2009, 01:49
دوست عزیز من روی برنامه کمی کار کردم الان ۴ تا ارورش مونده که دقیقا مربوط به این gotoxy هست من قبلا با این دستور خیلی راحت کار میکردم ولی نمیدونم چرا الان برام مصیبت شده.
در ضمن درسته که میشه از n\وt\ استفاده کرد ولی شما فکر کنید چقدر کار سخت میشه به جای یک دستور سر راست gotoxyراه رو دور کنیم و چند بار باید از این دستور استفاده کرد (t\ n\ ) تا جای یک gotoxy رو بده؟
اگه ممکنه یک راه برای gotoxy برام بگین احتمال میدم مشکل اینه که هدر conio.h درست include نشده و اگه اون حل بشه حله.
ممنون
تا اون جايي که من مي دونم دستور جايگزيني براش وجود نداره .
armintirand
11-09-2009, 10:25
یکی از دوستان با api این مشکل رو برام حل کرد ولی اون موقع قابلیت ÷ورتابل رو از دست میده.
ممنون
sin2x=2sinxcosx
11-09-2009, 14:35
یکی از دوستان با api این مشکل رو برام حل کرد ولی اون موقع قابلیت ÷ورتابل رو از دست میده.
ممنون
بله ميشه . ولي اون ديگه يه دستور منحصر بفرد نميشه .
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.