/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Anbefaling af gode C++ bøger til mit behov
Fra : Doe


Dato : 03-08-06 22:35

Hvis jeg skal gøre følgende (udelukkende til Windows):

Køre grafik mode (jeg går ud fra, at det skal være med DirectX?)
Afspille musik (f.eks. XM eller MP3 m.v.)
Lave lidt flydende grafik og en scrolltekst
Kompilere det hele til én EXE fil

... hvilke gode bøger kan I så anbefale?

Jeg kender kun det allermest grundlæggende i C++ (jeg har en del PHP
erfaring og for mange år siden lavede jeg noget C/C++ men det har jeg glemt
igen), så bogen må gerne give gode/mange eksempler - jeg lære bedst ud fra
eksempler frem for teori (så kan teorien komme sidenhen).



 
 
Bertel Brander (03-08-2006)
Kommentar
Fra : Bertel Brander


Dato : 03-08-06 23:05

Doe wrote:
> Hvis jeg skal gøre følgende (udelukkende til Windows):
>
> Køre grafik mode (jeg går ud fra, at det skal være med DirectX?)

Det behøver ikke være DirectX, man kan godt lave sjov med mindre:

#include <windows.h>
HINSTANCE InstanceHandle;
HWND MainWindow;

BITMAPINFOHEADER CreateHeader(int aWidth, int aHeight, WORD aBitPixel)
{
BITMAPINFOHEADER BitmapInfoHeader;
BitmapInfoHeader.biSize = sizeof(BITMAPINFOHEADER);
BitmapInfoHeader.biWidth = aWidth;
BitmapInfoHeader.biHeight = aHeight;
BitmapInfoHeader.biPlanes = 1;
BitmapInfoHeader.biBitCount = aBitPixel;
BitmapInfoHeader.biCompression = BI_RGB;
BitmapInfoHeader.biSizeImage = 0;
BitmapInfoHeader.biXPelsPerMeter = 0;
BitmapInfoHeader.biYPelsPerMeter = 0;
BitmapInfoHeader.biClrUsed = 0;
BitmapInfoHeader.biClrImportant = 0;

return BitmapInfoHeader;
}

BITMAPINFOHEADER Header;
char *Buffer;
int Width, Height, BytesPixel;
unsigned int Idx;

void Draw(HDC dc)
{
StretchDIBits(dc,
0, Idx, Width, Height - Idx, // Dest
0, Idx, Width, Height - Idx, // Src
Buffer,
(LPBITMAPINFO)&Header, DIB_RGB_COLORS, SRCCOPY);
StretchDIBits(dc,
0, 0, Width, Idx, // Dest
0, 0, Width, Idx, // Src
Buffer,
(LPBITMAPINFO)&Header, DIB_RGB_COLORS, SRCCOPY);
}

LRESULT WINAPI MainWndProc(HWND hwnd, UINT message, WPARAM wParam,
LPARAM lParam)
{
switch(message)
{
case WM_CREATE:
{
HDC dc = GetDC(0);
Width = GetDeviceCaps(dc, HORZRES);
Height = GetDeviceCaps(dc, VERTRES);
HDC MemDc = CreateCompatibleDC(dc);
HBITMAP BitMap = CreateCompatibleBitmap(dc, Width, Height);
SelectObject(MemDc, BitMap);
BitBlt(MemDc, 0, 0, Width, Height, dc, 0, 0, SRCCOPY);
BITMAP Bm;
GetObject(BitMap, sizeof(Bm), &Bm);
Header = CreateHeader(Width, Height, Bm.bmBitsPixel);
Buffer = new char [Width*Height*Bm.bmBitsPixel/8];
BytesPixel = Bm.bmBitsPixel/8;
GetDIBits(MemDc, BitMap, 0, Height, Buffer, (BITMAPINFO
*)&Header, DIB_RGB_COLORS);
ReleaseDC(0, dc);
ReleaseDC(0, MemDc);
DeleteObject(BitMap);
SetTimer(hwnd, 1025, 100, 0);
}
break;
case WM_DESTROY:
delete Buffer;
PostQuitMessage(0);
break;
case WM_LBUTTONDOWN:
delete Buffer;
PostQuitMessage(0);
break;

case WM_TIMER:
{
HDC dc = GetDC(0);
Idx = (Idx + 2)%Height;
Draw(dc);
ReleaseDC(0, dc);
}
break;
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC dc = BeginPaint(hwnd, &ps);
Draw(dc);
EndPaint(hwnd, &ps);
}
break;
}
return DefWindowProc(hwnd, message, wParam, lParam);
}

HWND CreateMainWindow()
{
WNDCLASS wc;
memset(&wc, 0, sizeof(WNDCLASS));
wc.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS ;
wc.lpfnWndProc = (WNDPROC )MainWndProc;
wc.hInstance = InstanceHandle;
wc.hbrBackground = (HBRUSH )(COLOR_WINDOW + 1);
wc.lpszClassName = "SimpleWinWndClass";
wc.lpszMenuName = 0;
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
if(!RegisterClass(&wc))
return 0;

return CreateWindow("SimpleWinWndClass",
"Simple-Window",
WS_MINIMIZEBOX | WS_VISIBLE |
WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_MAXIMIZEBOX |
WS_CAPTION | WS_BORDER | WS_SYSMENU | WS_THICKFRAME,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0,
0,
0,
InstanceHandle,
0);
}

int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
INT nCmdShow)
{
InstanceHandle = hInstance;

if((MainWindow = CreateMainWindow()) == (HWND )0)
{
MessageBox(0, "Failed to create MainWindow!", "Warning", MB_OK);
return 0;
}
ShowWindow(MainWindow, SW_SHOW);
MSG Msg;
while(GetMessage(&Msg, 0, 0, 0))
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
InvalidateRect(0, 0, TRUE);
return Msg.wParam;
}
Tryk på vinduet for at få den til at holde op.

> Afspille musik (f.eks. XM eller MP3 m.v.)

Se den anden tråd.

> Lave lidt flydende grafik og en scrolltekst
> Kompilere det hele til én EXE fil

Se den anden tråd.
>
> .. hvilke gode bøger kan I så anbefale?

Det ved jeg ikke, jeg er ikke så meget til bøger.

--
Absolutely not the best homepage on the net:
http://home20.inet.tele.dk/midgaard
But it's mine - Bertel

Doe (03-08-2006)
Kommentar
Fra : Doe


Dato : 03-08-06 23:57

> Det behøver ikke være DirectX, man kan godt lave sjov med mindre:
>
> #include <windows.h>
> HINSTANCE InstanceHandle;
> HWND MainWindow;
[CUT]

Denne kan jeg ikke kompilere, men hvordan ved jeg hvordan det kompileres? Er
der en måde at se det på, når man finder eksempler på nettet?
En reference til "sådan kompilere du... husk de her switches hvis..." kunne
være godt



Bertel Brander (04-08-2006)
Kommentar
Fra : Bertel Brander


Dato : 04-08-06 00:11

Doe wrote:
>> Det behøver ikke være DirectX, man kan godt lave sjov med mindre:
>>
>> #include <windows.h>
>> HINSTANCE InstanceHandle;
>> HWND MainWindow;
> [CUT]
>
> Denne kan jeg ikke kompilere, men hvordan ved jeg hvordan det kompileres? Er
> der en måde at se det på, når man finder eksempler på nettet?
> En reference til "sådan kompilere du... husk de her switches hvis..." kunne
> være godt

Du starter med default:
g++ screenfun.cpp -o screenfun.exe

Så skriver den noget i stil med:
screenfun.cpp: undefined reference to `StretchDIBits@52'

Så går du til google og søger efter "StretchDIBits windowssdk"
Første link:
http://windowssdk.msdn.microsoft.com/en-us/library/ms532289.aspx

Nederst står der:
Library: Use Gdi32.lib.

Så du prøver:
g++ screenfun.cpp -lgdi32 -o screenfun.exe

And thats it.

--
Absolutely not the best homepage on the net:
http://home20.inet.tele.dk/midgaard
But it's mine - Bertel

Doe (04-08-2006)
Kommentar
Fra : Doe


Dato : 04-08-06 00:19

>> Denne kan jeg ikke kompilere, men hvordan ved jeg hvordan det kompileres?
>> Er der en måde at se det på, når man finder eksempler på nettet?
>> En reference til "sådan kompilere du... husk de her switches hvis..."
>> kunne være godt
>
> Du starter med default:
> g++ screenfun.cpp -o screenfun.exe
>
> Så skriver den noget i stil med:
> screenfun.cpp: undefined reference to `StretchDIBits@52'
>
> Så går du til google og søger efter "StretchDIBits windowssdk"
> Første link:
> http://windowssdk.msdn.microsoft.com/en-us/library/ms532289.aspx
>
> Nederst står der:
> Library: Use Gdi32.lib.
>
> Så du prøver:
> g++ screenfun.cpp -lgdi32 -o screenfun.exe

Det er jo rent guld for mig, mange tak!



Doe (04-08-2006)
Kommentar
Fra : Doe


Dato : 04-08-06 11:12

> Hvis jeg skal gøre følgende (udelukkende til Windows):
>
> Køre grafik mode (jeg går ud fra, at det skal være med DirectX?)
> Afspille musik (f.eks. XM eller MP3 m.v.)
> Lave lidt flydende grafik og en scrolltekst
> Kompilere det hele til én EXE fil
>
> .. hvilke gode bøger kan I så anbefale?

Er der slet ingen anbefalinger? Jeg har ikke brug for objekt orienteret
programmering og alt det andet fine, så hvis bare bogen dækker ovenstående
er det fint.



Bent Frøslev (04-08-2006)
Kommentar
Fra : Bent Frøslev


Dato : 04-08-06 11:59


"Doe" <doe@invalid.xyz> wrote in message
news:44d26bec$0$60786$157c6196@dreader1.cybercity.dk...
> Hvis jeg skal gøre følgende (udelukkende til Windows):
>
> Køre grafik mode (jeg går ud fra, at det skal være med DirectX?)
> Afspille musik (f.eks. XM eller MP3 m.v.)
> Lave lidt flydende grafik og en scrolltekst
> Kompilere det hele til én EXE fil
>
> .. hvilke gode bøger kan I så anbefale?
>
> Jeg kender kun det allermest grundlæggende i C++ (jeg har en del PHP
> erfaring og for mange år siden lavede jeg noget C/C++ men det har jeg
> glemt igen), så bogen må gerne give gode/mange eksempler - jeg lære bedst
> ud fra eksempler frem for teori (så kan teorien komme sidenhen).
>
>
Jeg vil anbefale dig at dele det op; Find en god bog om DirectX, hvis det så
kniber med programmeringen så find en grundlæggende bog om c++ (der er mange
henvisninger i denne gruppe), og endelig kan du søge info om dit værktøj
(oversætter ect.)

/b



Doe (04-08-2006)
Kommentar
Fra : Doe


Dato : 04-08-06 21:52

> Hvis jeg skal gøre følgende (udelukkende til Windows):
>
> Køre grafik mode (jeg går ud fra, at det skal være med DirectX?)
> Afspille musik (f.eks. XM eller MP3 m.v.)
> Lave lidt flydende grafik og en scrolltekst
> Kompilere det hele til én EXE fil
>
> .. hvilke gode bøger kan I så anbefale?
>
> Jeg kender kun det allermest grundlæggende i C++ (jeg har en del PHP
> erfaring og for mange år siden lavede jeg noget C/C++ men det har jeg
> glemt igen), så bogen må gerne give gode/mange eksempler - jeg lære bedst
> ud fra eksempler frem for teori (så kan teorien komme sidenhen).

Ok, kan man så dele bøgerne op, så man kan få en god C++ bog om grafik og én
om musik m.v.?
Jeg kunne godt bruge nogle titler, så jeg kan finde dem på biblioteket eller
købe dem



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste