Program do wyswietlania komunikatow


(Mr Hektor) #1

Witam! Chcia艂bym w C++ stworzyc program w ktorym wpisuje sie tekst a pozniej po nacisnieciu przycisku wyswietla komunikat z tekstem ktory sie wczescniej wpisalo, jezeli nie wiecie o co chodzi, tutaj sa obrazki:

drtsetsct2.th.png

drugi:

Nie licze tutaj na kompletne kody zrodlowe, tylko na jakies wskazowki :slight_smile:

Z g贸ry dziekuje!


(Monczkin) #2

Taranos przeczytaj punkt 2.14 regulaminu i popraw temat - inaczej otrzymasz ostrze偶enie.


(rozwalkompa) #3

A w jakim j臋zyku programowania?

Og贸lnie musisz wczyta膰 do zmiennej wpisany napis i go wy艣wietli膰 w okienku.

W C++ (z WinAPI) b臋dzie jako艣 tak, tylko nie wiem jak zrobi膰 pole do wpisania tekstu:

#include 

#include 


using std::string;


LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);


HWND hPrzycisk;


int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nMode)

{

   HWND hOkno;

   MSG message;

   WNDCLASS okno;


   okno.hInstance = hInstance;

   okno.lpszClassName = "klasa1";

   okno.lpfnWndProc = WndProc;

   okno.lpszMenuName = MAKEINTRESOURCE(200);

   okno.style = 0;

   okno.hIcon = 0;

   okno.hCursor = LoadCursor (NULL,IDC_ARROW);

   okno.hbrBackground = (HBRUSH) GetStockObject (GRAY_BRUSH);

   okno.cbClsExtra = 0;

   okno.cbWndExtra = 0;


   if (!RegisterClass (& okno)) return 0;

   hOkno = CreateWindow (

   "klasa1", //nazwa klasy okna

   "NoName", //tytu艂 okna

   WS_OVERLAPPEDWINDOW, //styl - WS_OVERLAPPEDWINDOW to standardowe okienko

   100, 300, //wsp贸艂rz臋dne i..

   220, 180, //..wymiary okna

   NULL, //brak okna nadrz臋dnego, w艂a艣cicielem jest pulpit

   NULL, //brak menu

   hInstance, //uchwyt instancji

   NULL //brak dodatkowych danych

   );

//tu trzeba da膰 pole tekstowe przypisuj膮ce warto艣膰 zmiennej 'tekst'

   hPrzycisk = CreateWindowEx(0,"BUTTON","wy艣lij",WS_CHILD|WS_VISIBLE|BS_GROUPBOX,10,10,190,40,hOkno,(HMENU)150,hInstance,NULL);


   ShowWindow (hOkno, SW_SHOW);


while (GetMessage (&message, NULL, 0, 0))

 {

  TranslateMessage (&message);


  DispatchMessage (&message);

 }

}



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

  {

   switch (msg) 

   {

    case WM_CLOSE:

    if (MessageBox(hOkno,"Czy chcesz zamkn膮膰?","info",MB_YESNO) == IDYES)

    DestroyWindow(hOkno); 

    break;

    case WM_DESTROY:

    PostQuitMessage(0);

    return 0;

    break;

    case WM_COMMAND:

    if(LOWORD(wParam)==150) MessageBox(hOkno,tekst,"info",MB_OK);

    break;

   default:

   return DefWindowProc(hOkno,msg,wParam,lParam); 

   }

  }

najlepiej niech to jeszcze kto艣 sprawdzi :slight_smile:


(Mr Hektor) #4

Ja uzywam programu Dev-c++ i tam wystarczy na okno programu nalozyc komponenty ktore chce sie uzuc w programie, i wystarczy tam wybrac pole do pisania, a po podwojnym kliknieciu na ten komponent pojawaia sie pole z kodem zrodlowym i wlasnie niewiem w ktorym miejscu umiescic powyzszy kod, a dotychczas udalo mi sie stworzyc taki kod i wlasnie niewiem co dalej robic:

#include "BezNazwy1Dlg.h"





BEGIN_EVENT_TABLE(BezNazwy1Dlg,wxDialog)


	EVT_CLOSE(BezNazwy1Dlg::OnClose)

	EVT_BUTTON(ID_WXBUTTON1,BezNazwy1Dlg::WxButton1Click)

END_EVENT_TABLE()



BezNazwy1Dlg::BezNazwy1Dlg(wxWindow *parent, wxWindowID id, const wxString &title, const wxPoint &position, const wxSize& size, long style)

: wxDialog(parent, id, title, position, size, style)

{

	CreateGUIControls();

}


BezNazwy1Dlg::~BezNazwy1Dlg()

{

}


void BezNazwy1Dlg::CreateGUIControls()

{


	SetTitle(wxT("BezNazwy1"));

	SetIcon(wxNullIcon);

	SetSize(8,8,295,144);

	Center();



	WxEdit1 = new wxTextCtrl(this, ID_WXEDIT1, wxT("WxEdit1"), wxPoint(86,66), wxSize(121,19), 0, wxDefaultValidator, wxT("WxEdit1"));

	WxEdit1->SetFont(wxFont(8, wxSWISS, wxNORMAL,wxNORMAL, false, wxT("Tahoma")));


	WxButton1 = new wxButton(this, ID_WXBUTTON1, wxT("WxButton1"), wxPoint(106,28), wxSize(75,25), 0, wxDefaultValidator, wxT("WxButton1"));

	WxButton1->SetFont(wxFont(8, wxSWISS, wxNORMAL,wxNORMAL, false, wxT("Tahoma")));


}


void BezNazwy1Dlg::OnClose(wxCloseEvent& /*event*/)

{

	Destroy();

}


/*

 * WxButton1Click

 */

void BezNazwy1Dlg::WxButton1Click(wxCommandEvent& event)

{

	MessageBox(NULL, "Tekst1", "Tytul1", MB_OK | MB_ICONINFORMATION);



}

(rozwalkompa) #5

w dev-c++? te偶 u偶ywam, ale tego nie zauwa偶y艂em. Gdzie to jest?


(Fio艂ek) #6

S膮dz膮c po przedrostkach funkcji(wx) to jest wxWidgets. Nie pytaj si臋 nas jak to zrobi膰, tylko 艂ap za pierwszego lepszego tutoriala i si臋 ucz!


(Mr Hektor) #7

rozwalkompa, to jest tylko jezeli programujesz w WinApi, przy tworzeniu zwyklych aplikacji konsolowcyh nie ma tej funkcji.

A z tutoriali tez prubowalem sie czegos nauczyc ale nic z tego nierozumialem.


(Fio艂ek) #8

Przy aplikacjach konsolowych nie mo偶esz w og贸le tworzy膰 okien :wink:

Je艣li nie znasz WinApi to radze si臋 najpierw tego poduczy膰. Do艣膰 dobry kurs WinAPI


(Mr Hektor) #9

Fio艂ek no ja to wiem, dlatego aplikacja ktora chce stworzyc jest w WinApi, ale wlasnie nierozumiem jednej rzeczy i prosze Was o pomoc :slight_smile:


(rozwalkompa) #10

A偶 taki t臋py nie jestem. Ale gdzie to jest w menu, bo jako艣 nie widz臋 :smiley:


(Mr Hektor) #11

No po prawej stronie tam