консоль -> GUI

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by s_p_a_m, 23 May 2009.

  1. s_p_a_m

    s_p_a_m Elder - Старейшина

    Joined:
    8 Feb 2008
    Messages:
    100
    Likes Received:
    58
    Reputations:
    4
    есть простейшая консольная программа:

    Code:
    #include <stdio.h>                      
    #include <stdlib.h>                     
     
    int main(void)                          
    {
      int i;                                
      char buffer[500]; 
    
     
    loop: printf("Vvedite chislo: ");           
      scanf("%o", &i);     
     
      itoa(i,buffer,10);                    
      printf("decimal: %s\n", buffer);      
     
      itoa(i,buffer,16);
      printf("hexadecimal: %s\n", buffer);  
     
      itoa(i, buffer, 2);                  
      printf("binary: %s\n", buffer);
      printf ("\n");
      printf ("_____________________________\n");
    	  printf ("\n");
     getchar ();
     goto loop;
     getchar ();
      return 0;                             
    }
    помогите сделать ее на ГУИ чтобы ввод числа:
    Code:
     (  loop: printf("Vvedite chislo: ");        
      scanf("%o", &i);   ) 
    вводился в текстбокс и по нажатию кнопки результаты:
    Code:
    itoa(i,buffer,10);                    
      printf("decimal: %s\n", buffer);      
     
      itoa(i,buffer,16);
      printf("hexadecimal: %s\n", buffer);  
     
      itoa(i, buffer, 2);                  
      printf("binary: %s\n", buffer);
    выводились на форме
     
    #1 s_p_a_m, 23 May 2009
    Last edited: 23 May 2009
  2. _nic

    _nic Elder - Старейшина

    Joined:
    5 May 2006
    Messages:
    651
    Likes Received:
    54
    Reputations:
    3
    Я точно не понял чем ГУИ вариант должен отличатся от консольного.Но возможно это так
    Code:
    #include <vcl.h>
    #include <stdio.h>
    #pragma hdrstop
    
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
    	: TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    int i;
    char buffer[500];
    i=atoi(Edit1->Text.c_str());
    itoa(i,buffer,10);
    printf("decimal: %s\n", buffer);
    itoa(i,buffer,16);
    printf("hexadecimal: %s\n", buffer);
    itoa(i, buffer, 2);
    printf("binary: %s\n", buffer);
    Label1->Caption=buffer;
    }
    
     
  3. s_p_a_m

    s_p_a_m Elder - Старейшина

    Joined:
    8 Feb 2008
    Messages:
    100
    Likes Received:
    58
    Reputations:
    4
    гуи вариант должен отличатся от консольного визуальным интерфейсом :) и если можно то по порядку:) ато я в ГУИ темный лес... :( отблагодарю как могу
     
    7 people like this.
  4. kl0yn

    kl0yn New Member

    Joined:
    15 Dec 2008
    Messages:
    31
    Likes Received:
    3
    Reputations:
    0
    тебе дали пример на Builder C++. Там уже проще некуда
     
  5. _nic

    _nic Elder - Старейшина

    Joined:
    5 May 2006
    Messages:
    651
    Likes Received:
    54
    Reputations:
    3
    Сначала немного недопонял что делает консольній вариант.Кажется вот то что надо
    Code:
    #include <vcl.h>
    #include <stdio.h>
    #pragma hdrstop
    
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
    	: TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    int i;AnsiString out;
    char buffer[500];
    i=atoi(Edit1->Text.c_str());
    itoa(i,buffer,10);
    out=out+"decimal:"+AnsiString(buffer)+"\r";
    itoa(i,buffer,16);
    out=out+"exadecimal:"+AnsiString(buffer)+"\r";
    itoa(i, buffer, 2);
    out=out+"binary:"+AnsiString(buffer)+"\r";
    Label1->Caption=out;
    }
    
    На форму надо добавить TEdit,TButton,TLabel 2 раза жмакнуть по баттону и скопировать туда нужный код.
    ЗЫ:это код для Borland C++ Builder
     
    1 person likes this.
  6. s_p_a_m

    s_p_a_m Elder - Старейшина

    Joined:
    8 Feb 2008
    Messages:
    100
    Likes Received:
    58
    Reputations:
    4
    у меня VC++ 2008, при компиляции ошибки, просто если можно выложите готовые исходники для студии, с меня +++, буду благодарен
     
  7. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    делать нефиг...

    вот цени чисто на winAPI :) exe весит 3,5 кило... можно меньше хех

    скачать проект

     
    _________________________
    #7 Gar|k, 23 May 2009
    Last edited: 23 May 2009
    1 person likes this.
  8. Suteki

    Suteki Member

    Joined:
    18 May 2009
    Messages:
    10
    Likes Received:
    7
    Reputations:
    12
    Решение под MFC

    Проект реализован с использованием MFC

    Вот собственно рабочий кусок кода:


    PHP:
    // m_Dec - DDX переменная EDiT для DEC значений - iNT
    // m_Hex - DDX переменная EDiT для HEX значений - CString
    // m_Oct - DDX переменная EDiT для OCT значений - CString
    // m_Bin - DDX переменная EDiT для BiN значений - CString
    //
    // OnChangeEdit1 - Отклик на изменение EDiT куда вводит DEC числа
    // DecToBin - написанная мною функция для преобразования DEX в BiN

    void CCodeDlg::OnChangeEdit1()
    {
        
    UpdateData(true);
        
    m_Hex.Format("0x%08x"m_Dec );
        
    m_Oct.Format("%o"m_Dec );
        
    DecToBin(m_Dec);
        
    UpdateData(false);
    }

    void CCodeDlg::DecToBin(int X)
    {
        
    int b X;
        
    int ots 0;

        
    m_Bin "";

        while(
    b>0)
        {
            if (
    ots == 8)
                {
                
    m_Bin += " ";
                
    ots 0;
                }
            if(
    b%2==1)
            {
                
    m_Bin += "1";
                
    b/=2;
            }
            else
            {
                
    m_Bin += "0";
                
    b/=2;
            }
            
    ots++;
        }
        
    m_Bin.MakeReverse();
    }
    Скрин:
    [​IMG]

    ТУТ исходник + собранный EXE
     
    #8 Suteki, 23 May 2009
    Last edited: 23 May 2009
    1 person likes this.