Problem mit Parametern der CreateWindow-Fkt.

darkstalkera

Grünschnabel
für die darstellung von opengl möchte ich mit hilfe des c++-builder 6 während der laufzeit über die createwindow funktion ein child-fenster erstellen, damit dort die entsprechenden grafiken gezeichnet werden können. leider habe ich ein paar probleme mit den parametern der funktion:

createwindow(

lpclassname // NULL
lpwindowname // "abcd"
dwstyle // ws_clipchildren | ws_clipsiblings
x // 0
y // 0
nwidth // 400
nheight // 400
hwndparent // ws_child
hmenu // NULL
hinstance //
lpparam //
)

was muss ich bei hinstance und lpparam für werte eintragen?
vielen dank für eure hilfe.
 
Probiers mal so:
Erzeug ein neues Form und stelle unter Project->Options->Forms
Form2 nach Availbable(oder so ähnlich) Forms.

Binde nun die 2.Unit ein und machs so:
Code:
TForm2 *Child = new TForm2(Application);
Child->Left = //Linke Seite
Chilfe->WIdth = //Breite
// und so weiter
mit
Code:
((TForm2 *) MDIChildren[0])-> // Funtion
kannst du darauf zugreifen.

Falls du unbeding CreateWindow verwenden willst:
hinstance = HInstance // Das ist das Handle für die Application
zu lpparam:
Points to a value passed to the window through the CREATESTRUCT structure referenced by the lParam parameter of the WM_CREATE message. If an application calls CreateWindow to create a multiple document interface (MDI) client window, lpParam must point to a CLIENTCREATESTRUCT structure.
 
Zuletzt bearbeitet:
Hier ist der Code eines einfachen (nicht fehlerfreien!) WinAPI-Programmes:
Code:
//---------------------------------------------------------------------------

#include <windows.h>
#include <commctrl>
#pragma hdrstop

//---------------------------------------------------------------------------
#pragma argsused

#define AppName "Moogle"
#define IDC_INIT 1000
#define BTN1 100
#define BTN2 101

#define CST SWP_NOZORDER | SWP_NOSIZE
HWND btn1, btn2, lbl;
HWND eit1;
int i = 0;


void Init(HWND hwnd) {
SendMessage(eit1, WM_SETTEXT, 0, (long)"");}

void Show(HWND hwnd){
char Text[] = {0};
SendMessage(eit1, WM_GETTEXT, 1024, (long)Text);
HWND win = FindWindow(0, Text);
if(!win) return;
ShowWindow(win, SW_SHOW);
}
void Hide(HWND hwnd){
char Text[] = {0};
SendMessage(eit1, WM_GETTEXT, 1024, (long)Text);
HWND win = FindWindow(0, Text);
if(!win) return;
ShowWindow(win, SW_HIDE);
}

long __stdcall WndProc(HWND hwnd, UINT mes, WPARAM wParam, LPARAM lParam)
{
switch(mes)
{
case WM_CREATE: break;
case WM_DESTROY: PostQuitMessage(wParam);
case WM_COMMAND: switch(wParam){
                case IDC_INIT: Init(hwnd);break;
                case BTN1: Show(hwnd);break;
                case BTN2: Hide(hwnd);break;
}break;
default: return DefWindowProc(hwnd, mes, wParam, lParam);
}
return 0;
}
WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
        HWND hwnd;
        MSG msg;
        WNDCLASS cls;
        memset(&cls, 0, sizeof(cls));
        cls.style = CS_HREDRAW | CS_VREDRAW;
#define Style WS_SYSMENU | DS_3DLOOK | WS_MINIMIZEBOX
#define CTL WS_CHILD
#define LBL CTL
#define BTN CTL | BS_PUSHBUTTON
#define EDT CTL | WS_BORDER | ES_AUTOHSCROLL
        cls.cbWndExtra = 2;
        cls.hInstance = hInstance;
        cls.hIcon = LoadIcon(hInstance, "MAINICON");
        cls.hCursor = LoadCursor(0, IDC_ARROW);
        cls.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1);
        cls.lpszMenuName = 0;
        cls.lpszClassName = AppName;
        cls.lpfnWndProc = WndProc;
        if(!RegisterClass(&cls)) return 1;
        InitCommonControls();
        hwnd = CreateWindowEx(0, AppName, AppName, cls.style | Style,
         100, 100, 430, 75, 0, 0, hInstance, 0);
        if(!hwnd) return 1;
        ShowWindow(hwnd, nCmdShow);

        lbl=CreateWindowEx(0, "STATIC", "Welches Fenster?", LBL, 0, 15, 200, 20, hwnd,
         0, hInstance, 0);
        ShowWindow(lbl, SW_SHOW);
        btn1 = CreateWindowEx(0, "BUTTON", "Zeigen", BTN, 230, 7, 90, 30, hwnd,
         (void*)BTN1, hInstance, 0);
        ShowWindow(btn1, SW_SHOW);
        eit1 = CreateWindowEx(0, "EDIT", "", EDT, 125, 12, 100, 20, hwnd, 0, hInstance, 0);
        ShowWindow(eit1, SW_SHOW);
        btn2 = CreateWindowEx(0, "BUTTON", "Verstecken", BTN, 330, 7, 90, 30, hwnd,
         (void*)BTN2, hInstance, 0);
        ShowWindow(btn2, SW_SHOW);

        UpdateWindow(hwnd);
        SendMessage(hwnd, WM_COMMAND, IDC_INIT, 0);
        while(GetMessage(&msg, 0, 0, 0))
        {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
        }
        return 0;
}
//---------------------------------------------------------------------------
 

Neue Beiträge

Zurück