(WINAPI) problem z editem

0

Hmm... czy ktoś wie co robię nie tak???

 createwindow('EDIT', '0', ws_child or ws_visible, 200, 200, 100, 30, wnd, 0, hinstance, 0);

że nic do edita nie da się wpisać???

0

Aff... to samo mam z richeditem... może ktoś to rozumie???

0

Podaj caly kod, bo to co tu masz dziala u mnie. Da ise wpisac.

0

Jeżeli możesz przeprowadz u siebie prosty eksperyment wklej powyższy kod w on create pustej formy (w nowym projekcie i daj znać czy wtedy także istnieje ten problem)

0
program WndApp;

uses
  Windows,
  Messages,
  SysUtils;
var
  Wnd: TWndClass;  // klasa okna
  Msg: TMsg;
  text:PChar;
  Hlvlmet,Hlvlkr,Hlvldet,Hh,Htemp,Hposmet,Hposkr,Hposdet:HWND; //uchwyty do Editów
  Hlabelposmet, Hlabelposkr, Hlabelposdet, Hlabeldodmet, Hlabeldodkr, Hlabeldoddet,
  Hlabelallmet, Hlabelallkr, Hlabelalldet : HWND; //Uchwyty do Labeli

function WndProc(Wnd: HWND; uMsg: UINT; wPar: WPARAM; lPar: LPARAM): LRESULT; stdcall;
begin
{ na początek zwracamy wartość 0 ? meldunek jest przetwarzany }
  Result := 0;
  case uMsg of
   { w tym miejscu należy obsłużyć należne komunikaty }
   { w funkcji DefWindowProc przekazujemy takie same parametry, jak w funkcji okienkowej }
    WM_DESTROY: PostQuitMessage(0);
    WM_CREATE : begin
                CreateWindow('BUTTON', 'Przelicz', WS_CHILD or WS_VISIBLE, 200,400,100,30,Wnd,101,hInstance,0);
                CreateWindow('STATIC', 'Metal', WS_CHILD or WS_VISIBLE, 200, 480, 100, 30, Wnd, 0, hInstance,0);
                CreateWindow('STATIC', 'Krzyształ', WS_CHILD or WS_VISIBLE, 200, 510, 100, 30, Wnd, 0, hInstance,0);
                CreateWindow('STATIC', 'Deuter', WS_CHILD or WS_VISIBLE, 200, 540, 100, 30, Wnd,0, hInstance,0);
                CreateWindow('STATIC', 'Poziom kopalni metalu', WS_CHILD or WS_VISIBLE, 100, 150, 100, 30, Wnd,0,hInstance,0);
                Hlvlmet:=CreateWindow('EDIT', '0', WS_CHILD or WS_VISIBLE, 210, 150, 100, 20, Wnd, 0, hInstance,0);
                CreateWindow('STATIC', 'Poziom kopalni kryształu', WS_CHILD or WS_VISIBLE, 100, 180, 100, 40, Wnd, 0, hInstance,0);
                Hlvlkr:=CreateWindow('EDIT', '0', WS_CHILD or WS_VISIBLE, 210,190,100,20, Wnd, 0, hInstance, 0);
                CreateWindow('STATIC', 'Poziom ekstraktora deuteru', WS_CHILD or WS_VISIBLE, 100, 220, 100, 60,Wnd,0,hInstance,0);
                Hlvldet:=CreateWindow('EDIT', '0', WS_CHILD or WS_VISIBLE, 210, 235, 100,20, Wnd,0,hInstance,0);
                CreateWindow('STATIC', 'Liczba godzin', WS_CHILD or WS_VISIBLE, 100,280,100,30,Wnd,0,hInstance,0);
                Hh:=CreateWindow('EDIT', '1', WS_CHILD or WS_VISIBLE, 210,280,100,20,Wnd,0,hInstance,0);
                CreateWindow('STATIC', 'Maksymalna temperatura', WS_CHILD or WS_VISIBLE, 100, 310, 100, 30,Wnd,0,hInstance,0);
                Htemp:=CreateWindow('EDIT', '0', WS_CHILD or WS_VISIBLE, 210, 315, 100, 20, Wnd,0,hInstance,0);
                CreateWindow('STATIC', 'Posiadany metal', WS_CHILD or WS_VISIBLE, 360, 150, 100, 30, Wnd,0,hInstance,0);
                CreateWindow('STATIC', 'Posiadany kryształ', WS_CHILD or WS_VISIBLE, 360, 180, 100, 40, Wnd, 0, hInstance,0);
                CreateWindow('STATIC', 'Posiadany deuter', WS_CHILD or WS_VISIBLE, 360, 220, 100, 30, Wnd,0,hInstance,0);
                Hposmet:=CreateWindow('EDIT', '0', WS_CHILD or WS_VISIBLE, 470, 150, 100, 20, Wnd, 0, hInstance,0);
                Hposkr :=CreateWindow('EDIT', '0', WS_CHILD or WS_VISIBLE, 470, 190, 100, 20, Wnd, 0, hInstance,0);
                Hposdet:=CreateWindow('EDIT', '0', WS_CHILD or WS_VISIBLE, 470, 225, 100, 20, Wnd, 0 ,hInstance,0);
                Hlabelposmet:=CreateWindow('STATIC', '', WS_CHILD or WS_VISIBLE, 300, 480, 100, 30,Wnd,0,hInstance,0);
                end;
    WM_COMMAND: begin
                if WPar=101 then SetWindowText(Hlabelposmet, '')
                end;
    else Result := DefWindowProc(Wnd, uMsg, wPar, lPar);
  end;
end;



begin
  with Wnd do
  begin
    lpfnWndProc := @WndProc; // funkcja okienkowa
    hInstance := hInstance; // uchwyt do zasobów
    lpszClassName := 'OGame'; // klasa
    hbrBackground := COLOR_WINDOW; // kolor tła
  end;

  RegisterClass(Wnd); // zarejestruj nową klasę
  CreateWindow('OGame', 'Kalkulator OGame',
  WS_VISIBLE or WS_TILEDWINDOW,
        CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
  0, 0, hInstance, NIL);

  while GetMessage(msg, 0, 0, 0) do DispatchMessage(msg);
end.

Co do tego eksperymentu : wszystko działa na VCLowskiej formie...

0

nie tlumaczysz komunikatow

  while GetMessage(msg, 0, 0, 0) do
  begin
   TranslateMessage(msg);
   DispatchMessage(msg);
  end;
0

No dobra, teraz działa. Dzięki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1