View Full Version : Grafica in c++ crearla e posizionarla
Sethrian
05-10-2006, 18:46
Salve a tutti!
ho installato nel mio computer visual c++ 2005 e per creare i pulsanti non sarebbe neanche tanto difficile in se ma non capisco come attribuire delle funzioni hai pulsanti (onclick) e come posizionarli... cercando un pò nel forum ho trovato wx glade ma non ho capito a che serva essenzialmente... e i pulsanti (dato che non lo so usare) non li mette come desidero io)!
sareste così gentili da aiutarmi nella mia impresa di riuscire a creare una interfaccia grafica semidecente?
grazie mille a tutti! :D
In Visual C++ per assegnare un metodo ad un evento devi clickare su un componente della form con il pulsante destro e poi clicka su Aggiungi gestore eventi o qualcosa del genere...
Sethrian
06-10-2006, 07:38
ok grazie della risposta!
E come faccio a mettere in correlazione per esempio un pulsante con una text box?! tipo quando clicco sul pulsante carica una funzione al cui interno c'è una (o più) istruzionne "cout" che deve essere visualizzata nella text box... :doh:
come fare? :help:
immagino che il procedimento per collegare due "oggetti" sia univoco per tutti gli oggetti giusto?
grazie mille della risposta! :D :D
giangian2
06-10-2006, 08:08
Ciao,
hai due possibilita`:
1 - Nell'evento di click del pulsante fai
CWnd *pWnd = GetDlgItem(ID_DELLA_RISORSA);
if(pWnd != NULL)
{
pWnd->SetWindowText("prova");
}
2 - Dichiari una variabile collegata alla editbox premendo con il pulsante destro sulla edit e premi su "Add Variable" e appare una dialog con delle opzioni, su "Category" selezioni la categoria della variabile (selezioni "control"), poi nel campo "Variable Name" dichiari il nome della variabile (per esempio m_ctrlEditBox), alla fine metti nell'evento click del pulsante:
m_ctrlEditBox.SetWindowText("prova");
ciaoooooo
Sethrian
09-10-2006, 17:21
c'è un problema.... non c'è aggiungi variabile! e adesso che fò? :mc:
grazie per la risposta!
a me non fa cliccare su events... :cry: come mai?? grazie mille e scusate l'intrusione :)
Goten_ssj
09-10-2006, 17:50
Io vi consiglio Borland C++ Builder 6
Io lo sto usando per il C++ Visuale e mi trovo abbastanza bene...creare le interfacce è un gioketto da ragazzi...giusto quello, anke xkè di c++ non so ancora praticamente niente =_=
Sethrian
09-10-2006, 19:37
ok borland c++ 6 eccc...ecc.... non mi parte! lol cmq non cambiamo discorso per favore vorrei davvero imparare a creare iterfaccie i modo tale che i bottoni le textbox ecc interagiscano tra loro!
grazie mille per l'aiuto! :D
Goten_ssj
09-10-2006, 19:58
beh..è una delle poke cose ke sò fare cn il builder della borland..se usassi quello t saprei dare 1 mano anke xkè ho usato sl quello nella mia poca esperienza...
Sethrian
09-10-2006, 20:30
ok visto che sono disposto a tutto.... mi passi il programma? o il link diretto al file da scaricare per cortesia? chiaramente se mi aggiungi anche i modo per creare la grafica te ne sarei grato! :D :D
ciao e ancora grazie!
A questo punto scarica il nuovo Turbo C++: http://www.borland.com/downloads/download_turbo.html
In ogni caso il modo per aggiungere la variabile dipende dalla versione che hai, per il 2005 non ti posso aiutare...quindi non so cosa dirti...
tomminno
09-10-2006, 22:49
Io vi consiglierei di provare le wxWidgets o le Qt. Le MFC mi sembrano inutilmente complicate, non capisco per quale motivo un programmatore non debba scrivere il codice ma affidarsi agli strumenti automatici che in realtà complicano la vita piuttosto che semplificarla.
Oltretutto per il layout le MFC non hanno i box contrariamente a wx, Qt o Java e l'editor non ha certo la semplicità di quello per C#.
giangian2
09-10-2006, 23:13
c'è un problema.... non c'è aggiungi variabile! e adesso che fò? :mc:
grazie per la risposta!
non saprei, che versione hai di VC2005... la express per caso??
Sethrian
10-10-2006, 14:10
si esatto la express edition!
@tonino come dice il mio primo post l'ho provato ma non capisco a cosa ti riferisci quando dici che n programmatore non debba scrivere il codice....
dove trovo i codici per fare la grafica che effettivaente io preferirei scriverli aanche per capirli meglio! :D
proverò anche borland cmq!
edit :fiufiu: :fiufiu: UP!!
giangian2
11-10-2006, 08:19
boh... sinceramente non saprei il perche` non hai "Add Variable", in ogni caso puoi fare tranquillamente tutto a mano, visto che il wizard ti aggiunge in automatico le seguenti righe di codice.
nel file .h dichiari una variabile del tipo che vuoi, in questo caso CEdit:
CEdit m_ctrlEditBox;
poi nel .cpp nella funzione "DoDataExchange" della tua dialog aggiungi:
DDX_Control(pDX, IDC_RISORSA_EDITBOX, m_ctrlEditBox);
Ora hai la tua variabile (in questo caso m_ctrlEditBox) che implementa tutti i metodi della classe "CEdit".
ciaoooo
Sethrian
13-10-2006, 08:24
ecc qui il codice di un programmino fittizio che avevo fatto per sperimentare le classi appena le ho studiate!
// sistemi1.cpp : Defines the entry point for the console application.
#include "stdafx.h"
#include "form1.h"
#include <iostream>
using namespace std;
class sistema {
public:
int coefficientex;
int coefficientey;
int coefficientetn;
int coefficientez;
int coefficientew;
int coefficientetn2;
};
void riduzione();
int x, y, tn, z, w, tn2;
int main()
{
int scelta;
cout <<"la prima equazione" <<"\n" ;
cout <<"inserire il coefficiente della x" <<"\n";
cin >> x;
cout <<"inserire il coefficiente della y" <<"\n";
cin >> y;
cout <<"inserire il termine noto" <<"\n";
cin >> tn;
cout <<"inserire la seconda equazione " <<"\n";
cout <<"inserire il coefficiente di z" <<"\n";
cin >> z;
cout <<"inserire il coefficiente di w" <<"\n";
cin >> w;
cout <<"inserire il termine noto" <<"\n";
cin >> tn2;
cout <<"inserire 1 se si vuole che il programma usi il sistema di riduzione, 2 per il sistema di sostituzione";
cin >> scelta;
if(scelta = 1){riduzione(); }
else if(scelta |= 1)
{
cout <<"inserire o 1 o 2";}
return 0;
}
void riduzione()
{
//crea l'oggetto prima del mcm
sistema aftermcm;
// coefficientei della prima equazione
aftermcm.coefficientex = x * z;
aftermcm.coefficientey = y + z;
aftermcm.coefficientetn = tn * z;
// coefficieti della seconda equazione
aftermcm.coefficientez = z * x;
aftermcm.coefficientew = w * x;
aftermcm.coefficientetn2 = tn2 * x;
cout <<"equazioni dopo il mcm";
cout <<"\n";
cout << aftermcm.coefficientex << "x" << "+" << aftermcm.coefficientey << "y" << "+" << aftermcm.coefficientetn << "=0";
cout <<"\n";
cout <<aftermcm.coefficientez <<"z" <<"+" <<aftermcm.coefficientew <<"w" <<"+" <<aftermcm.coefficientetn2 <<"=0";
cout <<"\n";
//crea l'oggetto dopo il mcm
sistema riduzione;
riduzione.coefficientex = aftermcm.coefficientex - aftermcm.coefficientez;
riduzione.coefficientey = aftermcm.coefficientey - aftermcm.coefficientew;
riduzione.coefficientetn = aftermcm.coefficientetn - aftermcm.coefficientetn2;
//visualizza il risultato della riduzione
cout << "equazione dopo la riduzione";
cout <<"\n";
cout << riduzione.coefficientex <<"x" << "+" << riduzione.coefficientey <<"y" <<"=" <<riduzione.coefficientetn ;
cout <<"\n" <<"la y" <<"\n" ;
y = -riduzione.coefficientetn / riduzione.coefficientey;
cout << y;
cout <<" la x" ;
x = (riduzione.coefficientey * y) + riduzione.coefficientetn;
cout << x;
}
questo invece è il codice dell'header
#pragma once
namespace sistemi1 {
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
/// <summary>
/// Summary for Form1
///
/// WARNING: If you change the name of this class, you will need to change the
/// 'Resource File Name' property for the managed resource compiler tool
/// associated with all .resx files this class depends on. Otherwise,
/// the designers will not be able to interact properly with localized
/// resources associated with this form.
/// </summary>
public ref class Form1 : public System::Windows::Forms::Form
{
public:
Form1(void)
{
InitializeComponent();
//
//TODO: Add the constructor code here
//
}
protected:
/// <summary>
/// Clean up any resources being used.
/// </summary>
~Form1()
{
if (components)
{
delete components;
}
}
private: System::Windows::Forms::Button^ button1;
protected:
private: System::Windows::Forms::TextBox^ textBox1;
private: System::Windows::Forms::TextBox^ textBox2;
private: System::Windows::Forms::TextBox^ textBox3;
private: System::Windows::Forms::TextBox^ textBox4;
private: System::Windows::Forms::MenuStrip^ menuStrip1;
private: System::Windows::Forms::ToolStripMenuItem^ fileToolStripMenuItem;
private: System::Windows::Forms::ToolStripMenuItem^ saveToolStripMenuItem;
private: System::Windows::Forms::ToolStripMenuItem^ stampaToolStripMenuItem;
private: System::Windows::Forms::ToolStripMenuItem^ helpToolStripMenuItem;
private: System::Windows::Forms::ToolStripMenuItem^ toolStripMenuItem1;
private: System::Windows::Forms::TextBox^ textBox5;
private: System::Windows::Forms::TextBox^ textBox6;
private: System::Windows::Forms::TextBox^ textBox7;
private:
/// <summary>
/// Required designer variable.
/// </summary>
System::ComponentModel::Container ^components;
#pragma region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
void InitializeComponent(void)
{
this->button1 = (gcnew System::Windows::Forms::Button());
this->textBox1 = (gcnew System::Windows::Forms::TextBox());
this->textBox2 = (gcnew System::Windows::Forms::TextBox());
this->textBox3 = (gcnew System::Windows::Forms::TextBox());
this->textBox4 = (gcnew System::Windows::Forms::TextBox());
this->menuStrip1 = (gcnew System::Windows::Forms::MenuStrip());
this->fileToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem());
this->saveToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem());
this->stampaToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem());
this->helpToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem());
this->toolStripMenuItem1 = (gcnew System::Windows::Forms::ToolStripMenuItem());
this->textBox5 = (gcnew System::Windows::Forms::TextBox());
this->textBox6 = (gcnew System::Windows::Forms::TextBox());
this->textBox7 = (gcnew System::Windows::Forms::TextBox());
this->menuStrip1->SuspendLayout();
this->SuspendLayout();
//
// button1
//
this->button1->Location = System::Drawing::Point(194, 42);
this->button1->Name = L"button1";
this->button1->Size = System::Drawing::Size(86, 27);
this->button1->TabIndex = 0;
this->button1->Text = L"Riduzione";
this->button1->UseVisualStyleBackColor = true;
this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
//
// textBox1
//
this->textBox1->Location = System::Drawing::Point(15, 42);
this->textBox1->Name = L"textBox1";
this->textBox1->Size = System::Drawing::Size(45, 20);
this->textBox1->TabIndex = 1;
this->textBox1->TextChanged += gcnew System::EventHandler(this, &Form1::textBox1_TextChanged);
//
// textBox2
//
this->textBox2->Location = System::Drawing::Point(66, 42);
this->textBox2->Name = L"textBox2";
this->textBox2->Size = System::Drawing::Size(45, 20);
this->textBox2->TabIndex = 2;
//
// textBox3
//
this->textBox3->Location = System::Drawing::Point(120, 42);
this->textBox3->Name = L"textBox3";
this->textBox3->Size = System::Drawing::Size(45, 20);
this->textBox3->TabIndex = 3;
//
// textBox4
//
this->textBox4->Location = System::Drawing::Point(15, 116);
this->textBox4->Multiline = true;
this->textBox4->Name = L"textBox4";
this->textBox4->Size = System::Drawing::Size(259, 145);
this->textBox4->TabIndex = 4;
//
// menuStrip1
//
this->menuStrip1->Items->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^ >(3) {this->fileToolStripMenuItem,
this->helpToolStripMenuItem, this->toolStripMenuItem1});
this->menuStrip1->Location = System::Drawing::Point(0, 0);
this->menuStrip1->Name = L"menuStrip1";
this->menuStrip1->Size = System::Drawing::Size(286, 24);
this->menuStrip1->TabIndex = 5;
this->menuStrip1->Text = L"menuStrip1";
//
// fileToolStripMenuItem
//
this->fileToolStripMenuItem->DropDownItems->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^ >(2) {this->saveToolStripMenuItem,
this->stampaToolStripMenuItem});
this->fileToolStripMenuItem->Name = L"fileToolStripMenuItem";
this->fileToolStripMenuItem->Size = System::Drawing::Size(35, 20);
this->fileToolStripMenuItem->Text = L"File";
//
// saveToolStripMenuItem
//
this->saveToolStripMenuItem->Name = L"saveToolStripMenuItem";
this->saveToolStripMenuItem->Size = System::Drawing::Size(121, 22);
this->saveToolStripMenuItem->Text = L"save";
//
// stampaToolStripMenuItem
//
this->stampaToolStripMenuItem->Name = L"stampaToolStripMenuItem";
this->stampaToolStripMenuItem->Size = System::Drawing::Size(121, 22);
this->stampaToolStripMenuItem->Text = L"Stampa";
//
// helpToolStripMenuItem
//
this->helpToolStripMenuItem->Name = L"helpToolStripMenuItem";
this->helpToolStripMenuItem->Size = System::Drawing::Size(39, 20);
this->helpToolStripMenuItem->Text = L"help";
//
// toolStripMenuItem1
//
this->toolStripMenuItem1->Name = L"toolStripMenuItem1";
this->toolStripMenuItem1->Size = System::Drawing::Size(24, 20);
this->toolStripMenuItem1->Text = L"\?";
//
// textBox5
//
this->textBox5->Location = System::Drawing::Point(15, 75);
this->textBox5->Name = L"textBox5";
this->textBox5->Size = System::Drawing::Size(45, 20);
this->textBox5->TabIndex = 6;
//
// textBox6
//
this->textBox6->Location = System::Drawing::Point(66, 75);
this->textBox6->Name = L"textBox6";
this->textBox6->Size = System::Drawing::Size(45, 20);
this->textBox6->TabIndex = 7;
//
// textBox7
//
this->textBox7->Location = System::Drawing::Point(120, 75);
this->textBox7->Name = L"textBox7";
this->textBox7->Size = System::Drawing::Size(45, 20);
this->textBox7->TabIndex = 8;
//
// Form1
//
this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->ClientSize = System::Drawing::Size(286, 273);
this->Controls->Add(this->textBox1);
this->Controls->Add(this->textBox7);
this->Controls->Add(this->textBox6);
this->Controls->Add(this->textBox5);
this->Controls->Add(this->textBox4);
this->Controls->Add(this->textBox3);
this->Controls->Add(this->textBox2);
this->Controls->Add(this->button1);
this->Controls->Add(this->menuStrip1);
this->MainMenuStrip = this->menuStrip1;
this->Name = L"Form1";
this->Text = L"Form1";
this->menuStrip1->ResumeLayout(false);
this->menuStrip1->PerformLayout();
this->ResumeLayout(false);
this->PerformLayout();
}
#pragma endregion
private: System::Void textBox1_TextChanged(System::Object^ sender, System::EventArgs^ e) {
}
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
}
};
}
e questo è ciò che viene fuori!
[img=http://img207.imageshack.us/img207/300/form1rr5.th.jpg] (http://img207.imageshack.us/my.php?image=form1rr5.jpg)
giangian2
13-10-2006, 08:59
ciao,
ti avevo indicato male io nei post precedenti, perche` pensavo che l'applicazione fosse una MFC invece tu stai lavorando con un'applicazione WindowForms, che io non conosco molto.
In ogni caso ci ho dato un'occhiata veloce, e per fare quello che devi fare tu e` molto piu` semplice di quanto ti avevo descritto precedentemente.
Per aggiungere l'evento di click di un pulsante basta semplicemente farci doppio click sopra quando sei in modalita "Design". Altrimenti se vuoi vedere tutti gli eventi che puo` gestire un controllo e magari reimplementarli a tuo piacimento: sempre in modalita` "Design" selezioni il tuo oggetto (in questo caso un pulsante) e fai click con il pulsante destro e premi "Properties" a questo punto appare una finestra con le opzioni dove ci sono 5 icone, tu premi la pen'ultima (che e` un lampetto giallo) la quale visualizza tutti gli eventi di un controllo.
Una volta aggiunto l'evento di click nel file "Formi1.h" ti vengono aggiunte le seguenti righe di codice
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
}
ora per poter leggere, impostare e verificare i valori nelle varie caselle di testo la cosa e molto semplice perche esiste un metodo "Text" per gli oggetti "TextBox".
Verifica integrita dei dati inseriti:
if(textBox1->Text == "")
{
MessageBox::Show("Text Box 1 is empty", "Error", MessageBoxButtons::OK, MessageBoxIcon::Exclamation);
}
per modificare/visualizzare il valore di un edit:
textBox1->Text = "Prova e vedrai che funziona";
per copiare il valore da una editbox ad un'altro
textBox2->Text = textBox1->Text;
Per concludere:
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
if(textBox1->Text == "")
{
MessageBox::Show("Text Box 1 is empty", "Error", MessageBoxButtons::OK, MessageBoxIcon::Exclamation);
}
else
{
textBox2->Text = "Prova e vedrai che funziona";
textBox3->Text = textBox2->Text;
}
}
:)
Ciaooooooo
Ed_Bunker
30-10-2006, 10:04
Sempre in Visual C++ sapreste dirmi come poter utilizzare le wxWidgets per realizzare semplici controlli ?
Ho provato a compilare la libreria ma senza che vada a buon fine.
tomminno
30-10-2006, 18:06
Sempre in Visual C++ sapreste dirmi come poter utilizzare le wxWidgets per realizzare semplici controlli ?
Ho provato a compilare la libreria ma senza che vada a buon fine.
Quale versione di VC++ e quale versione delle wxWidgets?
Che errori ti dà il compilatore?
Con VS2003 e VS2005 il codice che si scarica dal sito compila senza problemi.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.