Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Ba'el

Alter Hase

  • »Ba'el« ist der Autor dieses Themas

Beiträge: 409

Wohnort: Erfurt

Beruf: Student (6 FS angew. Info. - Richtung Medieninformatik)

  • Private Nachricht senden

1

03.06.2007, 00:27

[c++] 2 Fragen: 1. CreateWindow, 2. rand() [gelöst]

ich hab da ma 2 Fragen:

1. ich will ein paar child-Windows erstellen, nach diesem Schema

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
               hText = CreateWindow(TEXT("STATIC"),
                                    TEXT("Text"),
                                    WS_VISIBLE | WS_CHILD | ES_CENTER,
                                    0,
                                    0,
                                    300,
                                    80,
                                    hWnd,
                                    (HMENU)ID_TEXT,
                                    hInst,
                                    NULL);


nur will ich nicht einen Text als "Bezeichnung" sondern ein Bild, hab' dafür aber kein Bsp. gefunden, nur sowas ähnliches zum abspielen von Musik

C-/C++-Quelltext

1
PlaySound(TEXT("hellowin.wav"), NULL, SND_FILENAME | SND_ASYNC);


also scheint es ja so das man Dateien direkt ansprechen kann, ich weis bloß nicht was man da an Flags bei CreateWindow setzen muss damit ich eine Bilddatei ansprechen kann

2. 'ne Frage zu der rand()-Methode
kann man mit ihr auch einen bestimmten Wertebereich abfragen, also nicht rand()%10 für das Tupel {0,1,...,9}, sondern ihr bestimmte Werte übergeben bzw. durchgehen lassen z.B. das Tupel {20, 40, 60, 80, 100, 120} oder ähnliches, oder gibt es irgendeine andere Methode mit der sowas geht
aktuelle Projekte:
Ruby on Rails
XNA & Touchless
Progr. mobiler Endgeräte (GPS Trekking)

Das Gurke

Community-Fossil

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

2

03.06.2007, 00:37

2: Schau dir die Boost Random Number Library an. Trifft nicht 100% was du willst, bringt dich aber sehr viel weiter ;) http://www.boost.org/libs/random/index.html

Und ganz im Ernst: So schwierig ist das von Hand auch nicht ;) Ganz faule arbeiten mit random_shuffle und nem Vektor oder dergleichen.

big_muff

Alter Hase

Beiträge: 460

Wohnort: Schweiz

Beruf: Informatikstudent (4. Semester)

  • Private Nachricht senden

3

03.06.2007, 00:50

Zu 1:
Du musst bei den Styles SS_BITMAP angeben

Zitat von »"MSDN"«

Specifies that a bitmap is to be displayed in the static control. The text is the name of a bitmap (not a filename) defined elsewhere in the resource file. The style ignores the nWidth and nHeight parameters; the control automatically sizes itself to accommodate the bitmap.
Nur Idioten halten Ordnung, ein Genie beherrscht das Chaos.[size=7]

[/size]HardFate - Ein Start, Ein Ziel, Viele Wege[size=7]

[/size]Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.

Ba'el

Alter Hase

  • »Ba'el« ist der Autor dieses Themas

Beiträge: 409

Wohnort: Erfurt

Beruf: Student (6 FS angew. Info. - Richtung Medieninformatik)

  • Private Nachricht senden

4

03.06.2007, 01:46

thx

@Das Gurke
ja, ich glaub auch das is nich das was ich such, aber das les' ich mir morgen, ähh meine heute mittag durch ;)

@big_muff
jupp, das scheint schon das richtige zu sein, aber irgendwie funkt das noch nicht so, müsste ja jetzt so aussehen

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
HBITMAP hBmpHira = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_BITMAP1));

    hHiragana       = CreateWindow(TEXT("STATIC"),
                                   TEXT("Hiragana"),
                                   WS_VISIBLE | WS_CHILD | ES_CENTER | SS_BITMAP,
                                   0,
                                   0,
                                   300,
                                   80,
                                   hWnd,
                                   (HMENU)ID_HIRAGANA,
                                   hInst,
                                   NULL);

SendMessage(hHiragana,STM_SETIMAGE,IMAGE_BITMAP,(LPARAM) hBmpHira);


es kommt aber nur 'ne lehre Fläche, irgendwie steh ich heut' aufm Schlauch
aktuelle Projekte:
Ruby on Rails
XNA & Touchless
Progr. mobiler Endgeräte (GPS Trekking)

Dofter

Treue Seele

Beiträge: 159

Wohnort: im wunderbaren EBERMANNSTADT

Beruf: Schüler^^

  • Private Nachricht senden

5

03.06.2007, 12:36

Zitat

Tupel {20, 40, 60, 80, 100, 120}


würde doch eigentlich so gehen:

Zufallszahlen von 1-6 mal 20
also

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
// Zufallszahlen 1-6

int random = rand()%6+1;

// und mal 20

random*= 20;


// oder schneller

int random2 = (rand()%6+1)*20;


So kann man sich natürlich auch andere Zahlenfolgen machen, oder auch eine Funktion schreiben, bei der man die minimale und maximale Zahl die rauskommen soll eingibt, plus die Schrittweite, welche eine solche Zufallszahl zurückgibt.

mfg
Dofter
"Wo kämen wir hin, wenn alle sagten, wo kämen wir hin, und keiner ginge,
um zu sehen, wohin wir kämen, wenn wir gingen"

Ba'el

Alter Hase

  • »Ba'el« ist der Autor dieses Themas

Beiträge: 409

Wohnort: Erfurt

Beruf: Student (6 FS angew. Info. - Richtung Medieninformatik)

  • Private Nachricht senden

6

03.06.2007, 13:04

sowas ähnliches hab ich mir auch schon gedacht, aber das is nicht so einfach, da das oben genannte nur ein Bsp. war das eigentliche Tupel hat 46 Elemente und diese sind nicht alle in so einer Relation, aber naja hab mich damit abgefunden das ich den Baum halt nicht ganz so effizient implementieren kann wie ich wollte :(
aktuelle Projekte:
Ruby on Rails
XNA & Touchless
Progr. mobiler Endgeräte (GPS Trekking)

Ba'el

Alter Hase

  • »Ba'el« ist der Autor dieses Themas

Beiträge: 409

Wohnort: Erfurt

Beruf: Student (6 FS angew. Info. - Richtung Medieninformatik)

  • Private Nachricht senden

7

03.06.2007, 13:47

nochmal zu dem Bitmap

ich glaub ich tu' irgendwas wichtiges vergessen, ich poste ma' alles wo bei mir das Bitmap auftaucht

resourse.h

C-/C++-Quelltext

1
2
3
4
5
6
//{{NO_DEPENDENCIES}}

// Microsoft Visual C++ generated include file.

// Used by Kana.rc

//

#define IDB_BITMAP1                     101
..


Kana.rc

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
// Microsoft Visual C++ generated resource script.

//

#include "resource.h"
...
/////////////////////////////////////////////////////////////////////////////

//

// Bitmap

//


IDB_BITMAP1             BITMAP                  "D:\\studium\\2.sem\\programmieren\\Kana-Lingo\\res\\Hiragana.bmp"
#endif    // Deutsch (Deutschland) resources

/////////////////////////////////////////////////////////////////////////////

...


Window.h

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#ifndef WINDOW_H
#define WINDOW_H

#include"Window/resource.h"
#include<windows.h>

....
bool CreateControlElements(HWND hWnd, HINSTANCE hInst);


#define ID_HIRAGANA         4001
...
extern HWND hHiragana;
...
extern HBITMAP hbHira;
...


Window.cpp

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include"Window/Window.h"

HWND hHiragana;
...
HBITMAP hbHira;
...
bool CreateControlElements(HWND hWnd, HINSTANCE hInst)
{
    hbHira = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_BITMAP1));
    
    hHiragana       = CreateWindow(TEXT("STATIC"),
                                   TEXT(""),
                                   WS_VISIBLE | WS_CHILD | ES_CENTER | SS_BITMAP,
                                   0,
                                   0,
                                   300,
                                   80,
                                   hWnd,
                                   (HMENU)ID_HIRAGANA,
                                   hInst,
                                   NULL);

    SendMessage(hHiragana, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbHira);
...
LRESULT CALLBACK WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{   
    switch(message)
    {
        case WM_DESTROY:
        {
            PostQuitMessage(0);
            DeleteObject(hbHira);
            return 0;
...


und das ist meine main

main.cpp

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include"Window/BinaryTree.h"
#include"Window/Window.h"

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpcmdline, int ncmdshow)
{
    HWND hWnd;
    MSG message;
    /*
    CTree tree;

    createTree(tree);
*/
    hWnd = CreateMainWindow(hInst);
    
    if(hWnd == NULL)    return 0;
    
    CreateControlElements(hWnd, hInst);
    
    if(false)   return 0;

    while(GetMessage(&message, NULL, 0, 0))
    {
        TranslateMessage(&message);
        DispatchMessage(&message);
    }
    
    return (int)(message.wParam);
}


fehlt da noch irgendwas, vieleicht bei der CALLBACK

[edit]
ich hab' hinter das SendMessage noch schnell 'ne Fehlerabfrage gemacht es kommt haber keine Meldung, also scheint das laden zu klappen

C-/C++-Quelltext

1
if(hbHira == NULL)  MessageBox(hWnd, TEXT("Error"), NULL, MB_OK);

[/edit]
aktuelle Projekte:
Ruby on Rails
XNA &amp; Touchless
Progr. mobiler Endgeräte (GPS Trekking)

Ba'el

Alter Hase

  • »Ba'el« ist der Autor dieses Themas

Beiträge: 409

Wohnort: Erfurt

Beruf: Student (6 FS angew. Info. - Richtung Medieninformatik)

  • Private Nachricht senden

8

03.06.2007, 15:49

OK, der Code ist insoweit richtig, ich hab mal nen bissel rumprobiert und hab' aus dem STATIC einen BUTTON gemacht

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    hbHira = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_BITMAP1));
    
    hHiragana       = CreateWindow(TEXT("BUTTON"),
                                   TEXT(""),
                                   WS_VISIBLE | WS_CHILD | ES_CENTER | BS_BITMAP,
                                   0,
                                   0,
                                   300,
                                   80,
                                   hWnd,
                                   (HMENU)ID_HIRAGANA,
                                   hInst,
                                   NULL);

    SendMessage(hHiragana, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM) hbHira);


wenn ich also das Bitmap auf einen Button lade funkt es komischerweise, warum geht das dann nicht mit dem STATIC :?:
aktuelle Projekte:
Ruby on Rails
XNA &amp; Touchless
Progr. mobiler Endgeräte (GPS Trekking)

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

9

03.06.2007, 17:26

Google ist dein Freund (solange, bis es all deine Daten hat -,..,-)

Versuch es doch mal mit dem hier:

C-/C++-Quelltext

1
2
3
hBild = CreateWindow("static","", WS_CHILD | WS_VISIBLE | SS_BITMAP | SS_NOTIFY, 1, 1, 100, 100, Win[1], (HMENU) 4, hInstance, NULL); 
hbBitmap = (HBITMAP) LoadImage(NULL,"test.bmp",IMAGE_BITMAP, NULL, NULL, LR_LOADFROMFILE | LR_DEFAULTSIZE); 
SendMessage(hBild,STM_SETIMAGE,IMAGE_BITMAP,(LPARAM) hbBitmap);


Quelle: http://www.c-plusplus.de/forum/viewtopic-var-p-is-83724.html

P.S: schau an was Google noch so rausrückt https://www.spieleprogrammierer.de/phpBB2/viewtopic.php?p=78864&sid=fc48883a709df2cf4ee1398d93a49b92
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Ba'el

Alter Hase

  • »Ba'el« ist der Autor dieses Themas

Beiträge: 409

Wohnort: Erfurt

Beruf: Student (6 FS angew. Info. - Richtung Medieninformatik)

  • Private Nachricht senden

10

03.06.2007, 19:12

glaub mir ich hab genug gegoogled, daher kannt' ich das vom c-plusplus-Forum schon, das funkt aber nicht

naja das aus diesem Forum war mir aber neu, das hab' ich weder bei der foreninternen noch bei der Googlesuche gesehen :oops:
aber was da steht hab' ich auch schon alles probiert aber irgendwie klappt es nicht
aktuelle Projekte:
Ruby on Rails
XNA &amp; Touchless
Progr. mobiler Endgeräte (GPS Trekking)

Werbeanzeige