Zapis do zmiennej - WinApi

Witam! Przeszukałem kilka stron, kursów i nie znalazłem odpowiedzi na żadne z postawionych niżej pytań.

  1. W jaki sposób zapisać do zmiennej liczbę wprowadzoną do kontrolki edit?

  2. W jaki sposób wyświetlić wartość zmiennej w kontrolce edit?

  3. W jaki sposób wyczyścić pole edit?

Z góry dziękuję :slight_smile:

SetWindowText(hText, "");

SetWindowText(hText, nazwa_zmiennej);

Tak to jest to polecenie, działa podwarunkiem, że ustawie nie htext tylko hwnd tylko wtedy wymazuje mi tytuł okna, bo hwnd to uchwyt okna głównego a jak zrobić by wymazywać pole edit? czemu nie działa po ustawieniu uchwytu htext? nie ma problemu z kompilacją!

3.SetWindowText(hEdit, “”);

W miejscu hEdit podajesz uchwyt do kontrolki

u mnie ten uchwyt to hEdit

Tak zgadzam się z tobą, ale po ustawieniu tego uchwytu nie widzi kontrolki. Problem rozwiązałem w inny sposób, przeniosłem te wszystkie kontrolki (edit) do pętli komunikatów i teraz działa. Pojawił się kolejny problem, w moim programie znajduje się kilka button-ow i po naciśnięciu niezależnie, którego efekt jest taki sam np button C czyści kontrolki, ale to nie tylko on to robi, ale również pozostałe button-y.

#include 

#include 


HBITMAP bitmapa;

BITMAP info_bitmapy;

HWND hEdit, hEdit1, hEdit2, hEdit3, hEdit4, hEdit5, hEdit6, hEdit7, hEdit8, hEdit9, hEdit10, hEdita, hEditb, hEditaa, hEditbb, hEdits, hEditw, hButton, hButton1, hButton2, hButton3, hButton4, hButton5, hButton6, hButton7, hButton8, hButton9, hButton10, hButton11, hButtonok, hButtonob, hWnd;

HFONT hFont; //uchwyt do czcionki

CHAR szClassName[]="OknoRodzica";

HINSTANCE* hInst;


LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);


INT WINAPI WinMain(HINSTANCE hInstance,HINSTANCE,LPSTR lStart,INT nShow)

{


  bitmapa=(HBITMAP)LoadImage(0,"tlo.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);

  if(bitmapa==0)

  {

    MessageBox(0,"Nie można otworzyć pliku bitmap.bmp z folderu z aplikacją","Brak pliku",MB_ICONERROR);

    return 0;//zamkniecie programu w razie braku pliku bitmapy


  }

  GetObject(bitmapa,sizeof(BITMAP),&info_bitmapy);//pobieramy informacje o bitmapie, potrzebujemy jej wymiarów


  hInst=&hInstance;

  WNDCLASSEX wc;

  wc.hInstance=*hInst;

  wc.lpszClassName=szClassName;

  wc.lpfnWndProc=WndProc;

  wc.style=0;

  wc.cbSize=sizeof(WNDCLASSEX);

  wc.hIcon=LoadIcon(hInstance, MAKEINTRESOURCE(5));

  wc.hIconSm=LoadIcon(0,IDI_APPLICATION);

  wc.hCursor=LoadCursor(0,IDC_ARROW);

  wc.lpszMenuName=(hInstance, MAKEINTRESOURCE(200));

  wc.cbClsExtra=0;

  wc.cbWndExtra=0;

  wc.hbrBackground=(HBRUSH)COLOR_BACKGROUND;

  //pokazanie okna

  if(!RegisterClassEx(&wc)) return 0;

  hWnd=CreateWindowEx(WS_EX_DLGMODALFRAME,szClassName,"Ważona - ZSP Praszka Sportowa 8 :)",WS_SYSMENU | WS_MINIMIZEBOX,0,0,500,348,0,0,*hInst,0);

  ShowWindow(hWnd,nShow);

  MSG msgs;

  while(GetMessage(&msgs,0,0,0))

  {

    TranslateMessage(&msgs);

    DispatchMessage(&msgs);

  }

  return msgs.wParam;

}


// obsługa okna dilalogowego

BOOL CALLBACK DlgProc(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam)

{

 switch(Msg)

 {

  case WM_INITDIALOG:

  {

  }

  break;

  case WM_COMMAND:

  { 

       switch(LOWORD(wParam))

   {

    case IDOK: EndDialog(hwnd, IDOK); break;

    case IDCANCEL: EndDialog(hwnd, IDCANCEL); break;

   }

  }

  break;

  default: return FALSE;

 }

 return TRUE;

}


// osługa zdażeń!

LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wPar,LPARAM lPar)

{

        HDC hdc,hdcBitmapy;

//zmienne na 2 konteksty


  PAINTSTRUCT ps;

  switch(msg)

  {

    case WM_CREATE:

      //tworzymy kontrolkę edit

      hEdit=CreateWindowEx(WS_EX_CLIENTEDGE,WC_EDIT,"",

      WS_CHILD|WS_VISIBLE,32,60,28,25,hwnd,

      0,*hInst,0);

      hEdit1=CreateWindowEx(WS_EX_CLIENTEDGE,WC_EDIT,"",

      WS_CHILD|WS_VISIBLE,72,60,28,25,hwnd,

      0,*hInst,0);

      hEdit2=CreateWindowEx(WS_EX_CLIENTEDGE,WC_EDIT,"",

      WS_CHILD|WS_VISIBLE,112,60,28,25,hwnd,

      0,*hInst,0);

      hEdit3=CreateWindowEx(WS_EX_CLIENTEDGE,WC_EDIT,"",

      WS_CHILD|WS_VISIBLE,152,60,28,25,hwnd,

      0,*hInst,0);

      hEdit4=CreateWindowEx(WS_EX_CLIENTEDGE,WC_EDIT,"",

      WS_CHILD|WS_VISIBLE,192,60,28,25,hwnd,

      0,*hInst,0);

      hEdit5=CreateWindowEx(WS_EX_CLIENTEDGE,WC_EDIT,"",

      WS_CHILD|WS_VISIBLE,232,60,28,25,hwnd,

      0,*hInst,0);

      hEdit6=CreateWindowEx(WS_EX_CLIENTEDGE,WC_EDIT,"",

      WS_CHILD|WS_VISIBLE,272,60,28,25,hwnd,

      0,*hInst,0);

      hEdit7=CreateWindowEx(WS_EX_CLIENTEDGE,WC_EDIT,"",

      WS_CHILD|WS_VISIBLE,312,60,28,25,hwnd,

      0,*hInst,0);

      hEdit8=CreateWindowEx(WS_EX_CLIENTEDGE,WC_EDIT,"",

      WS_CHILD|WS_VISIBLE,352,60,28,25,hwnd,

      0,*hInst,0);

      hEdit9=CreateWindowEx(WS_EX_CLIENTEDGE,WC_EDIT,"",

      WS_CHILD|WS_VISIBLE,392,60,28,25,hwnd,

      0,*hInst,0);

      hEdit10=CreateWindowEx(WS_EX_CLIENTEDGE,WC_EDIT,"",

      WS_CHILD|WS_VISIBLE,432,60,28,25,hwnd,

      0,*hInst,0);

      hEdita=CreateWindowEx(WS_EX_CLIENTEDGE,WC_EDIT,"",

      WS_CHILD|WS_VISIBLE,172,98,28,25,hwnd,

      0,*hInst,0);

      hEditaa=CreateWindowEx(WS_EX_CLIENTEDGE,WC_EDIT,"0,3",

      WS_CHILD|WS_VISIBLE,212,98,28,25,hwnd,

      0,*hInst,0);

      hEditbb=CreateWindowEx(WS_EX_CLIENTEDGE,WC_EDIT,"0,7",

      WS_CHILD|WS_VISIBLE,252,98,28,25,hwnd,

      0,*hInst,0);

      hEditb=CreateWindowEx(WS_EX_CLIENTEDGE,WC_EDIT,"",

      WS_CHILD|WS_VISIBLE,291,98,28,25,hwnd,

      0,*hInst,0);

      hEdits=CreateWindowEx(WS_EX_CLIENTEDGE,WC_EDIT,"",

      WS_CHILD|WS_VISIBLE,295, 152, 37, 25,hwnd,

      0,*hInst,0);

      hEditw=CreateWindowEx(WS_EX_CLIENTEDGE,WC_EDIT,"",

      WS_CHILD|WS_VISIBLE,340, 152, 130, 25,hwnd,

      0,*hInst,0);


      //ustawienie czcionki

      hFont=CreateFont(0,0,0,0,0,0,0,0,0,0,0,0,0,"Arial");

      SendMessage(hEdit,WM_SETFONT,(WPARAM)hFont,0);

      SendMessage(hEdit1,WM_SETFONT,(WPARAM)hFont,0);

      SendMessage(hEdit2,WM_SETFONT,(WPARAM)hFont,0);

      SendMessage(hEdit3,WM_SETFONT,(WPARAM)hFont,0);

      SendMessage(hEdit4,WM_SETFONT,(WPARAM)hFont,0);

      SendMessage(hEdit5,WM_SETFONT,(WPARAM)hFont,0);

      SendMessage(hEdit6,WM_SETFONT,(WPARAM)hFont,0);

      SendMessage(hEdit7,WM_SETFONT,(WPARAM)hFont,0);

      SendMessage(hEdit8,WM_SETFONT,(WPARAM)hFont,0);

      SendMessage(hEdit9,WM_SETFONT,(WPARAM)hFont,0);

      SendMessage(hEdit10,WM_SETFONT,(WPARAM)hFont,0);

      SendMessage(hEdita,WM_SETFONT,(WPARAM)hFont,0);

      SendMessage(hEditaa,WM_SETFONT,(WPARAM)hFont,0);

      SendMessage(hEditb,WM_SETFONT,(WPARAM)hFont,0);

      SendMessage(hEditbb,WM_SETFONT,(WPARAM)hFont,0);

      SendMessage(hEdits,WM_SETFONT,(WPARAM)hFont,0);

      SendMessage(hEditw,WM_SETFONT,(WPARAM)hFont,0);


      //tworzymy przycisk

      hButton=CreateWindowEx(0,WC_BUTTON,"C",

      WS_CHILD|WS_VISIBLE,180,260,30,30,hwnd,(HMENU)1,*hInst,0);

      hButton1=CreateWindowEx(0,WC_BUTTON,"1",

      WS_CHILD|WS_VISIBLE,13, 220, 20, 30,hwnd,(HMENU)1,*hInst,0);

      hButton2=CreateWindowEx(0,WC_BUTTON,"1,5",

      WS_CHILD|WS_VISIBLE,40, 220, 30, 30,hwnd,(HMENU)1,*hInst,0);

      hButton3=CreateWindowEx(0,WC_BUTTON,"2",

      WS_CHILD|WS_VISIBLE,13, 260, 20, 30,hwnd,(HMENU)1,*hInst,0);

      hButton4=CreateWindowEx(0,WC_BUTTON,"2,5",

      WS_CHILD|WS_VISIBLE,40, 260, 30, 30,hwnd,(HMENU)1,*hInst,0);

      hButton5=CreateWindowEx(0,WC_BUTTON,"3",

      WS_CHILD|WS_VISIBLE,83, 220, 20, 30,hwnd,(HMENU)1,*hInst,0);

      hButton6=CreateWindowEx(0,WC_BUTTON,"3,5",

      WS_CHILD|WS_VISIBLE,110, 220, 30, 30,hwnd,(HMENU)1,*hInst,0);

      hButton7=CreateWindowEx(0,WC_BUTTON,"4",

      WS_CHILD|WS_VISIBLE,83, 260, 20, 30,hwnd,(HMENU)1,*hInst,0);

      hButton8=CreateWindowEx(0,WC_BUTTON,"4,5",

      WS_CHILD|WS_VISIBLE,110, 260, 30, 30,hwnd,(HMENU)1,*hInst,0);

      hButton9=CreateWindowEx(0,WC_BUTTON,"5",

      WS_CHILD|WS_VISIBLE,153, 220, 20, 30,hwnd,(HMENU)1,*hInst,0);

      hButton10=CreateWindowEx(0,WC_BUTTON,"5,5",

      WS_CHILD|WS_VISIBLE,180, 220, 30, 30,hwnd,(HMENU)1,*hInst,0);

      hButton11=CreateWindowEx(0,WC_BUTTON,"6",

      WS_CHILD|WS_VISIBLE,153, 260, 20, 30,hwnd,(HMENU)1,*hInst,0);

      hButtonok=CreateWindowEx(0,WC_BUTTON,"5,5",

      WS_CHILD|WS_VISIBLE,180, 220, 30, 30,hwnd,(HMENU)1,*hInst,0);

      hButtonob=CreateWindowEx(0,WC_BUTTON,"Oblicz średnią ważoną",

      WS_CHILD|WS_VISIBLE,13, 180, 160, 30,hwnd,(HMENU)1,*hInst,0);

      hButtonok=CreateWindowEx(0,WC_BUTTON,"Ok",

      WS_CHILD|WS_VISIBLE,180, 180, 30, 30,hwnd,(HMENU)1,*hInst,0);


      break;

      //obsługa przycisków

    case WM_COMMAND:

    if(((HWND) wPar != hButton))

    {

      if(wPar==1) SetWindowText(hEdit,"");

      if(wPar==1) SetWindowText(hEdit1,"");

      if(wPar==1) SetWindowText(hEdit2,"");

      if(wPar==1) SetWindowText(hEdit3,"");

      if(wPar==1) SetWindowText(hEdit4,"");

      if(wPar==1) SetWindowText(hEdit5,"");

      if(wPar==1) SetWindowText(hEdit6,"");

      if(wPar==1) SetWindowText(hEdit7,"");

      if(wPar==1) SetWindowText(hEdit8,"");

      if(wPar==1) SetWindowText(hEdit9,"");

      if(wPar==1) SetWindowText(hEdit10,"");

      if(wPar==1) SetWindowText(hEdita,"");

      if(wPar==1) SetWindowText(hEditb,"");

      if(wPar==1) SetWindowText(hEdits,"");

      if(wPar==1) SetWindowText(hEditw,"");

    }

    else // obsługa menu      

      if(LOWORD(wPar) == 106) PostQuitMessage(0);

      if(LOWORD(wPar) == 107)

                      ShellExecute(NULL, "open", "mailto:", NULL, NULL, SW_SHOWNORMAL);

      if(LOWORD(wPar) == 104)

                      ShellExecute(NULL, "open", "", NULL, NULL, SW_SHOWNORMAL);

      if(LOWORD(wPar) == 105)

                      ShellExecute(NULL, "open", "", NULL, NULL, SW_SHOWNORMAL);

      if(LOWORD(wPar = 1) == 108)

                      ShellExecute(NULL, "open", "", NULL, NULL, SW_SHOWNORMAL);

      if(LOWORD(wPar) == 100)

                      ShellExecute(NULL, "open", "Projekt_wazona.exe", NULL, NULL, SW_SHOWNORMAL);

      if(LOWORD(wPar) == 103)

                      int ret = DialogBox(GetModuleHandle(NULL), MAKEINTRESOURCE(200), hwnd, DlgProc);

      break;

      //obsługa entera

      case WM_KEYDOWN:

      {

      switch((int)wPar)

      {

      case VK_RETURN:

      if(wPar==1) SetWindowText(hEditw,"Enter!");

      break;

      case VK_ESCAPE:

      DestroyWindow(hwnd);

      break;

      }

      }

    // Obsługa bitmapy

    case WM_PAINT:

    hdc=BeginPaint(hwnd,&ps);//kontekst okna uzyskujemy w momencie odrysowywania

    hdcBitmapy=CreateCompatibleDC(hdc);//teraz musimy utworzyć kontekst pamięciowy dla bitmapy

    bitmapa=(HBITMAP)SelectObject(hdcBitmapy,bitmapa);//zamieniamy konteksty wiążąc bitmapę z kontekstem

    //tutaj możemy przeprowadzać jakieś operacje graficzne z naszym kontekstem bitmapy

    //uwaga te operacje będą przeprowadzane co każde odświeżenie okna

    //wyświetlenie bitmapy na oknie, operacja przekopiowania

    BitBlt(hdc,-50,0,info_bitmapy.bmWidth,info_bitmapy.bmHeight,hdcBitmapy,0,0,SRCCOPY);

    bitmapa=(HBITMAP)SelectObject(hdcBitmapy,bitmapa);//z powrotem zamieniamy bitmapy w kontekście

    DeleteDC(hdcBitmapy);//usuwamy kontekst pamięciowy bitmapy

    EndPaint(hwnd,&ps);

      break;

    case WM_DESTROY: //przed usunięciem okna

      DeleteObject(hFont); //zwalniamy czcionkę

      DestroyWindow(hEdit); //zwalniamy kontrolke edit

      DestroyWindow(hButton); //zwalniamy przycisk

      PostQuitMessage(0);

      break;

    default:

      return DefWindowProc(hwnd,msg,wPar,lPar);

  }

  return 0;

}

Uff :slight_smile: udało się dokonać czegoś, co wydawało się nie możliwe. Chciałbym podziękować za pomoc! Dziękuję :slight_smile: Działa :))