S
Zitat:
Wenn ich jetzt den Button2 drücke holt der den text auch raus (das prüfe ich in dem ich ihn danach ausgebe). Klicke ich danach auf den ersten Button zum abspielen geht das jedoch nicht...
Das selbe Verständnisproblem - quelle ist lokal und wird bei jeder ankommenden Windows-Nachricht neu angelegt und initialisiert.
Naja... Wie gesagt... Genau über dieses verständnis problem habe ich bereits nachgedacht.. Doch leider wird die quelle bei einer neuen windows-nachrricht nicht neu initalisiert... Dann funktioniert es einfach garnicht mehr...
Vielleicht weißt du ja wieso das nicht klappt.
Das neu gelernt ist weitestgehend eingebaut.
ChildProc 2 ist nur der wichtige Teil. Der rest zeigt nur wie ich die fenster etc erstellt habe falls das wichtig sein sollte.
Hier mal der richtige quellcode:
#include <windows.h>
#include <stdio.h>
#include <iostream.h>
#include <stdlib.h>
#include <fstream.h>
#include <conio.h>
#include "winimage.h"
#include "fmod.hpp"
#include "fmod_errors.h"
#pragma comment(lib,"fmodex_vc.lib")
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK ChildProc(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK ChildProc2(HWND, UINT, WPARAM, LPARAM);
const char szChildName[] = "Farbtabelle";
const char szChildName2[] = "Anders";
char buffer[100] = "13 tanz.mp3";
unsigned int version;
bool playing = 0;
unsigned int ms = 0;
unsigned int lenms = 0;
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
MSG msg;
HWND hWnd;
WNDCLASS wc;
char szAppName[] = "Das Child Window";
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hbrBackground = (HBRUSH) GetStockObject(LTGRAY_BRUSH); //WHITE_BRUSH
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hInstance = hInstance;
wc.lpfnWndProc = WndProc;
wc.lpszClassName = szAppName;
wc.lpszMenuName = NULL;
wc.style = CS_HREDRAW | CS_VREDRAW;
RegisterClass(&wc);
wc.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH); //LTGRAY_BRUSH
wc.hIcon = NULL;
wc.lpfnWndProc = ChildProc;
wc.lpszClassName = szChildName;
RegisterClass(&wc);
wc.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH); //LTGRAY_BRUSH
wc.hIcon = NULL;
wc.lpfnWndProc = ChildProc2;
wc.lpszClassName = szChildName2;
RegisterClass(&wc);
hWnd = CreateWindow( szAppName,
szAppName,
WS_OVERLAPPEDWINDOW,
100,
100,
800,
600,
NULL,
NULL,
hInstance,
NULL);
ShowWindow(hWnd, iCmdShow);
UpdateWindow(hWnd);
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
static HWND hChild1;
static HWND hChild2;
static RECT rect;
switch (message)
{
case WM_SIZE:
{
rect.right=LOWORD(lParam);
rect.bottom=HIWORD(lParam);
MoveWindow(hChild1,5, 5,rect.right-10 , 100, TRUE);
MoveWindow(hChild2,5, 110, rect.right-10, rect.bottom-115, TRUE);
return 0;
}
case WM_CREATE:
{
GetClientRect(hWnd, &rect);
hChild1 = CreateWindow( szChildName,
NULL,
WS_CHILD | WS_VISIBLE | WS_DLGFRAME, // Erzeugt Rahmen um Child ->
5, // Startpunkt von Links
5, // Startpunkt von oben
(rect.right-10)/4, // Breite
rect.bottom - 10, // Höhe
hWnd,
NULL,
((LPCREATESTRUCT) lParam)->hInstance,
NULL);
hChild2 = CreateWindow( szChildName2,
NULL,
WS_CHILD | WS_VISIBLE | WS_DLGFRAME, // Erzeugt Rahmen um Child ->
rect.right/4+5, // Startpunkt von Links
5, // Startpunkt von oben
(rect.right) - (rect.right/4+5) - 5, // Breite
rect.bottom - 10, // Höhe
hWnd,
NULL,
((LPCREATESTRUCT) lParam)->hInstance,
NULL);
return 0;
}
case WM_DESTROY:
{
PostQuitMessage(0);
return 0;
}
}
return DefWindowProc(hWnd, message, wParam, lParam);
}
LRESULT CALLBACK ChildProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
static RECT rect;
switch (message)
{
case WM_PAINT:
{
GetClientRect(hWnd, &rect);
HDC hDC;
PAINTSTRUCT ps;
const char szText[] = "MP3-Player version 1.0.1.3";
hDC = BeginPaint(hWnd, &ps);
{
DrawText(hDC, szText, lstrlen(szText), &rect, DT_SINGLELINE | DT_CENTER);
}
EndPaint(hWnd, &ps);
return 0;
}
}
return DefWindowProc(hWnd, message, wParam, lParam);
}
LRESULT CALLBACK ChildProc2(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
static RECT rect;
static HWND hEdit;
static HWND hList;
static HWND hButton_Play;
static HWND hButton;
//static C_Image img;
//static C_ImageSet imgset;
//static C_AnimationWindow anim, anim2, anim3;
switch (message)
{
case WM_SIZE:
{
rect.left = 0;
rect.top = 0;
rect.right = LOWORD(lParam);
rect.bottom = HIWORD(lParam);
//anim.Display (10,100);
//anim2.Display (110,100);
//anim3.Display (210,100);
MoveWindow(hEdit,rect.right-220, rect.top+25, 200, 30, TRUE);
MoveWindow(hList,0, 60, rect.right, rect.bottom-60, TRUE);
MoveWindow(hButton,rect.right-320, rect.top+25, 100, 30, TRUE);
MoveWindow(hButton_Play,5, rect.top+25, 100, 30, TRUE);
return 0;
}
case WM_CREATE:
{
GetClientRect(hWnd, &rect);
char *buffer = NULL;
FILE *fp;
char pclinebuffer[1000];
fp = fopen("Text.txt", "a+");
//img.LoadBMP ("logo.bmp");
//imgset.LoadGIF("sample.gif");
//anim.Create (hWnd,(HMENU)1,&imgset);
//anim2.Create (hWnd,(HMENU)1,&imgset);
//anim3.Create (hWnd,(HMENU)1,&imgset);
hButton = CreateWindow("button",
"Suchen",
WS_CHILD | WS_VISIBLE,
0, 0, 0, 0,
hWnd,
NULL,
((LPCREATESTRUCT) lParam) -> hInstance,
NULL);
hButton_Play = CreateWindow("button",
"Play",
WS_CHILD | WS_VISIBLE,
0, 0, 0, 0,
hWnd,
NULL,
((LPCREATESTRUCT) lParam) -> hInstance,
NULL);
hEdit = CreateWindowEx(WS_EX_CLIENTEDGE,
"edit",
buffer,
WS_CHILD | WS_VISIBLE | ES_MULTILINE |ES_AUTOVSCROLL | WS_DLGFRAME, //sdgs /**/| WS_VSCROLL
0, 0, 0, 0,
hWnd,
NULL,
((LPCREATESTRUCT) lParam) -> hInstance,
NULL);
hList = CreateWindow ( TEXT("listbox"), TEXT(""),
WS_CHILD | WS_VISIBLE | LBS_STANDARD | LBS_MULTIPLESEL ,
0, 0, 0, 0, hWnd, (HMENU)8,
(HINSTANCE) GetWindowLong (hWnd, GWL_HINSTANCE), NULL);
while(fgets(pclinebuffer, sizeof(pclinebuffer), fp))
{
int i = lstrlen(pclinebuffer)-1;
pclinebuffer[i]=' ';
SendMessage(hList, LB_ADDSTRING, 0, (LONG)(LPCSTR)pclinebuffer);
}
return 0;
}
case WM_COMMAND:
{
char pclinebuffer2[7]="Hallo";
if(lParam == (LPARAM)hButton_Play)
{
if(HIWORD(wParam)==BN_CLICKED)
{
FMOD::System *system;
FMOD::Sound *sound1;
FMOD::Channel *channel = 0;
FMOD::Sound *currentsound = 0;
FMOD_RESULT result;
//unsigned int version;
//bool playing = 0;
//unsigned int ms = 0;
//unsigned int lenms = 0;
result = FMOD::System_Create(&system);
result = system->getVersion(&version);
result = system->init(32, FMOD_INIT_NORMAL, 0);
result = system->createSound(buffer, FMOD_HARDWARE, 0, &sound1);
result = system->playSound(FMOD_CHANNEL_FREE, sound1, false, &channel);
}
}
if(lParam == (LPARAM)hButton)
{
if(HIWORD(wParam)==BN_CLICKED)
{
int iLength;
iLength = GetWindowTextLength(hEdit);
//buffer = (char*)malloc(iLength);
GetWindowText(hEdit, buffer, iLength+1);
//buffer = "02 Red Flag.mp3";
SendMessage(hList, LB_ADDSTRING, 0, (LONG)(LPCSTR)buffer);
}
}
return 0;
}
case WM_PAINT:
{
GetClientRect(hWnd, &rect);
HDC hDC;
PAINTSTRUCT ps;
const char szText[] = "";
unsigned int ms = 0;
hDC = BeginPaint(hWnd, &ps);
{
DrawText(hDC, szText, lstrlen(szText), &rect, DT_SINGLELINE | DT_CENTER);
//img.GDIPaint (hDC,10,150);
}
EndPaint(hWnd, &ps);
return 0;
}
}
return DefWindowProc(hWnd, message, wParam, lParam);
}