|
Hi all,
I'm a newbie programmer, somewhat comfortable programming my own applications from scratch in Win32API or .NET. What I'm having trouble though, is understanding and working with other people's code, like various SDKs and source code widely available on the internet. I just don't know what to do after I unzip the file.
For example, I'd download the source code of some open source application, unzip it in some directory, and notice that there's a bunch of directories, a bunch of project files, maybe a couple solution files, hundreds of .h files, hundreds of .c files and so on and so forth.
Forgive my ignorance, but what on earth am I supposed to be doing with all this? I understand that I'd need to compile something, probably, but which project or which solution am I supposed to compile? If I pick a random one and compile it, I end up with a bunch of errors I am clueless about. and then what? I'd have to figure out how the program works, but with hundreds of files floating around, where do I begin? (assuming no helpful documentation...)
I've learned to program mostly on my own, reading books and tutorials, but no books out there seem to talk about how to figure out stuff other's have written. Perhaps it's supposed to be obvious. Well, it isn't for me.
Anyhow, I know that this forum is filled with experienced programmers, and they all must have had a transition from being able to program things on their own to being able to work with stuff other's have written. So if anyone could share their experience with learning how to do this, I'd be much indebted!
|
|
|
|
|
Hah you sound just like me a few years ago ... lots of ambition but no idea where to start.
First off, lets get specific. What SDK's are you trying to install and use? Most of them have documentation located in the start menu under the title of your SDK.
For example, if you install the DirectX9 SDK, right next to it on the start menu is a "DirectX Documentation for C++" which holds ALMOST every data type and method used by Direct X.
Secondly, what compiler are you using? If using Visual Studio, most of the SDK's when installed actually add their info to the Help Index inside of the program. This allows you to search for specific topics, methods, or data types you will need in order to use the language.
But you've got the right idea. Being a programmer means you have to read a lot, and sometimes you have to read things that aren't written too well. Reading the documentation will usually help you out exponentially, if you can find them heh.
But let me know which compiler you're using and which SDK's you're trying to load up and I'll see if I have any more specific info for ya man.
good luck
jc0de
|
|
|
|
|
Haha, great assessment. lots of ambition but no idea where to start.. you got that right!
My problem isn't so much using various funtions in the SDK, but rather compiling the source code and making sense of the numerous files and directories they usually come with. I've successfully written an audio header reader program for mp3, ogg, ape files, using dll / lib files I downloaded and functions that I looked up in the documentation.
But take the Musepack (lossy audio codec) project for example. I downloaded the source code (http://www.musepack.net/index.php?pg=src), unzipped and placed it in a directory. Among the numerous files I'm unfamiliar with, I see a .sln file and open it, in VS.NET2003. But I get a couple error messages along the lines of "The project file 'C:... .dsp' has been corruped and cannot be opened". I ignore all these messages and build the solution, and end up with a bunch of errors. Some syntax errors, some complaining that a file doesn't exist, and indeed they don't exist! I searched for them but couldn't find them.
I end up with a similar experience with the foobar2000 SDK (http://www.foobar2000.org/), projects that are supposedly corrupted, files that are missing, etc..
None of these seem to have any documentation on how to build the solutions, so I'm left clueless. I do wonder, however, why I would have to do anything in order to get them to compile in the first place.
I wonder if I need to get a book specifically on using VisualStudio?
Anyways, thanks so much for your help! It's much appreciated.
|
|
|
|
|
Well I've been programming on my own for a couple years, then at Full Sail for game design currently.
Lots and lots of reading and testing with Visual Studio is imperitive to working with other peoples projects. Many of them include library files, include files, preprocessor directives, etc. which can be found in your project's properties and in the properties of Visual Studio itself.
Just a note, the project's properties and Visual Studios properties are COMPLETELY seperate!
Example: If you are required to add a library file to reference certain functions in a project you will have to tell Visual Studio where the library file is AND the project where the library file or you will get linker errors.
Another example: I had to write a plug-in for maya using MEL and c++. The Maya C++ API has decent documentation but doesn't tell you all the files you need to include. I was constantly getting linker errors before a friend explained you have to have Maya linked to your program thru Visual Studio AND my project itself.
But when it all boils down to it I would love to by a VS book myself because it's a very powerful tool and is almost a necessity to create quick and/or appealing projects.
We also have been told at Full Sail that XnA the new compiler from Microsoft is supposed to encapsulate much of these third party libraries and make them easier to implement in your own projects. But that's just words at the moment.
Anyways hopefully I helped a little, I consider myself a decent programmer and can create things I never could have imagined, but I read so much my eyes will probably fall out of my head by 30. heh.
Good luck,
j
|
|
|
|
|
psasidisrcum wrote:
None of these seem to have any documentation on how to build the solutions, so I'm left clueless.
Have you tried downloading & using samples from code project? Most of the authors seem more than willing to help guide someone through a little trouble (as long as the person has attempted to figure it out on their own).
-------------------------------
|
|
|
|
|
I'm writing a program that needs to copy files to a DVR writer on another computer on my network. I want to be able to use CopyFile() specifying the destination path as z::\folder\filename.ext. How do I get connection to the remote computer (named lounge) disk (say f::\) and map that to a local drive letter (in this example, z::\) Can someone point me in the right direction - I can't seem to find the right path in the VC++ documention. (I hope it's not too obvious, otherwise I'll be embarresed ) Thanks in advance !
Doug
|
|
|
|
|
O.K., I'm embarresed !!! Not only am I answering my own question, but the answer is also trivial !! I have now discovered that the operands to CopyFile() will allow useage of the computer name - in my example, the destination path can be set to \\lounge\f\test.txt (and the use of drive mapping is not needed). In my own defence, the documentation to CopyFile does not actually state that network drives can be accessed by prefixing the path with the computer name.
Doug
|
|
|
|
|
DougButtimer wrote:
In my own defence, the documentation to CopyFile does not actually state that network drives can be accessed by prefixing the path with the computer name.
It does if you click the File Name Conventions link.
"Ideas are a dime a dozen. People who put them into action are priceless." - Unknown
|
|
|
|
|
After using CreatePipe() to establish pipes between server and child, is it possible to disconnect those pipes without killing child process (both are still alive)?
includeh10
|
|
|
|
|
CreatePipe() is just a wrapper around CreateNamedPipe(). If you used CreateNamedPipe() directly, instead of CreatePipe(), you can call DisconnectNamedPipe() and CloseHandle() to disconnect those pipes without killing child process.
|
|
|
|
|
Anonymous wrote:
CreatePipe() is just a wrapper around CreateNamedPipe().
Any hint for creating my own wrapper of CreatePipe from CreateNamedPipe()?
Basically, CreatePipe() has 2 handles as parameters, how to use thr 2 params in CreateNamedPipe()?
includeh10
|
|
|
|
|
An anonymous pipe exists until all pipe handles, both read and write, have been closed. A process can close its pipe handles by using the CloseHandle function. All pipe handles are also closed when the process terminates.
|
|
|
|
|
I'm trying to be able to select many files from the dialog box it appears when you select the open button but I can't. It only selects one file at a time.
Anyone know how I can do that?
|
|
|
|
|
When you setup your OPENFILENAME structure try using the OFN_ALLOWMULTISELECT flag for the DWORD Flags parameter. I think that should help.
jc0dex
|
|
|
|
|
CFileDialog has a public member variable, m_ofn , that is the OPENFILENAME structure. Try
b.m_ofn.Flags |= OFN_ALLOWMULTISELECT;
before your call to DoModal()
|
|
|
|
|
Thanks I'll try that..
|
|
|
|
|
enum {HASH_TABLE_SIZE = 101};<br />
typedef ChainNode * HashTableType[HASH_TABLE_SIZE];
I could not get the point, can someone explain what 2nd line of the code does to me?
Best wishes,
Kromozom
|
|
|
|
|
defines a new type, HashTableType, to be an array of length HASH_TABLE_SIZE of type ChainNode *
Pandoras Gift #44: Hope. The one that keeps you on suffering. aber.. "Wie gesagt, der Scheiss is' Therapie" boost your code || Fold With Us! || sighist | doxygen
|
|
|
|
|
Thanks Peter, this one was a confusing type definition
|
|
|
|
|
Dear Friends,
My application is opening an instance of MS-Word using automation. My application is thus receiving all events sent by that instance of MS-Word.
Now I want to get key stroke events on that instance of MS word. i.e if user press Ctrl+A while typing in MS-Word, i want my application to get notified. How can i do so ??
I already obtained the 'handle' of that instance of MS-WORD which is opened by my application via automation. Please give me your suggestions.
Imtiaz
|
|
|
|
|
Hi,
I´m trying to make a 1d array of classes but havent really got it working that good.
This is what I´ve done:
Enemy **enemy;<br />
enemy = new Enemy*[2];<br />
enemy[0] = new Enemy(g_lpDDSBack, hInstance, g_pDD, 100, 0, 48, 48, NULL);<br />
enemy[1] = new Enemy(g_lpDDSBack, hInstance, g_pDD, 300, 0, 48, 48, NULL);<br />
<br />
ofstream fout;<br />
fout.open("output.txt");<br />
fout << enemy[0]->PrintDestX() << endl;<br />
fout << enemy[1]->PrintDestX() << endl;<br />
fout.close();
Obviously what I´m trying to do is to set enemy[0]´s DestX to 100 and enemy[1]´s DestX to 300.
The thing is, when I´m printing out both enemies DestX both says 300.
What am I doing wrong, or should do diffrent?
Thanks.
|
|
|
|
|
Can you post the implementation of the Enemy constructor?
/ravi
My new year's resolution: 2048 x 1536
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
Is this what u want?
Enemy.h
class Enemy: cSurface<br />
{<br />
public:<br />
Enemy(LPDIRECTDRAWSURFACE7 lpDest, HINSTANCE hInst, LPDIRECTDRAW7 hDD,<br />
int destX, int destY, int nWidth, int nHeight, <br />
COLORREF dwColorKey = -1);<br />
Enemy();<br />
~Enemy();<br />
int PrintDestX(){return DestX;}<br />
int PrintDestY(){return DestY;}<br />
...<br />
private:<br />
static int Width, Height, DestX, DestY;<br />
}<br />
Enemy.cpp
int Enemy::Width;<br />
int Enemy::Height;<br />
int Enemy::DestX;<br />
int Enemy::DestY;<br />
<br />
Enemy::Enemy(LPDIRECTDRAWSURFACE7 lpDest, HINSTANCE hInst, LPDIRECTDRAW7 hDD,<br />
int destX, int destY, int nWidth, int nHeight,<br />
COLORREF dwColorKey)<br />
{<br />
Alive = true;<br />
<br />
hInstance = hInst;<br />
surface = lpDest;<br />
lpDD = hDD;<br />
Width = nWidth;<br />
Height = nHeight;<br />
DestX = destX;<br />
DestY = destY;<br />
<br />
this->Create(hDD, nWidth, nHeight, RGB(255, 0, 255));<br />
this->LoadBitmap(hInst, IDB_ENEMY, 0, 0, 48, 48);<br />
}
|
|
|
|
|
Hello,
I see your problem. change:
static int Width, Height, DestX, DestY;
to:
int Width, Height, DestX, DestY;
Your problem lies in the static qualifier. If you make member variables of one class static, than the viariable is shared among all instances of that class. If you remove the static qualifier, than each class has it's own copy of the variable.
I also got the blogging virus..[^]
|
|
|
|
|
SuperTank wrote:
I´m trying to make a 1d array of classes...
This is what I´ve done:
Enemy **enemy;
This is not the correct way to implement a one-dimensional array. Technically, an array is one-dimensional by default. See here for an example of a 3D array.
"Ideas are a dime a dozen. People who put them into action are priceless." - Unknown
|
|
|
|
|