Funkcja kwadratowa graficznie ze wstawkami assemblerowymi – kilka pytań

Odpowiedz Nowy wątek
2018-05-15 22:13
0

Witam!

Mam do stworzenia projekt a dokładnie to muszę zrobić Funkcje Kwadratową graficznie ze wstawkami assemblerowymi, także więc zacząłem tworzyć swój projekt w programie Visual Studio 2017 wersja edukacyjna pobrana ze strony producenta. Ale dążąc do meritum sprawy, mam dwa pytania z którymi sobie nie mogę poradzić, a tutaj możliwe że ktoś mi pomoże. Pierwsza sprawa to jest taka gdzie mogę w programie który podaje poniżej umieścić funkcje int main dzięki której będę mógł wstawić do programu obliczenia?
Drugi problem mam taki że nie wiem jak pobierać wartość wpisaną w okienku do zmiennej którą właśnie chciałbym zdeklarować w pliku głównym int main i wstawić do obliczeń, a także nie wiem jak wywołać obliczenia w okienku.

Jeżeli byłby jakieś błędy w kodzie, to proszę mi je wskazać, z trybem graficznym nie miałem jeszcze styczności, cały kod jest utworzony na podstawie informacji znalezionych w internecie.
Załączone zdjęcie przedstawia okienko które tworzy podany poniżej program.

Z góry dziękuję za pomoc!

Poniżej kod okienka które udało mi się utworzyć:

 
#include <windows.h>  
#include <stdlib.h>  
#include <string.h>  
#include <tchar.h>  
 
// Zmienne globalne 
 
/*Przycisk*/
HWND hwa;
HWND hwb;
HWND hwc;
HWND hDelta;
HWND hX1;
HWND hX2;
HWND hX0;
 
/*Teksty*/
 
HWND hTA;
HWND hTB;
HWND hTC;
HWND hTDelta;
HWND hTX1;
HWND hTX2;
HWND hTX0;
 
/*Statyczne*/
 
HWND hSA;
HWND hSB;
HWND hSC;
HWND hSDelta;
HWND hSX1;
HWND hSX2;
HWND hSX0;
 
// Główna nazwa klasy
static TCHAR szWindowClass[] = _T("Delta");
 
// Tytul okienka  
static TCHAR szTitle[] = _T("Funkcja kwadratowa");
 
HINSTANCE hInst;
 
// Forward declarations of functions included in this code module:  
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
 
int WINAPI WinMain(HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR lpCmdLine,
    int nCmdShow)
{
    WNDCLASSEX wcex;
 
    wcex.cbSize = sizeof(WNDCLASSEX);
    wcex.style = CS_HREDRAW | CS_VREDRAW;
    wcex.lpfnWndProc = WndProc;
    wcex.cbClsExtra = 0;
    wcex.cbWndExtra = 0;
    wcex.hInstance = hInstance;
    wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APPLICATION));
    wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
    wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
    wcex.lpszMenuName = NULL;
    wcex.lpszClassName = szWindowClass;
    wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_APPLICATION));
 
    if (!RegisterClassEx(&wcex))
    {
        MessageBox(NULL,
            _T("Call to RegisterClassEx failed!"),
            _T("Win32 Guided Tour"),
            NULL);
 
        return 1;
    }
 
    hInst = hInstance; // Store instance handle in our global variable  
 
                       // The parameters to CreateWindow explained:  
                       // szWindowClass: Nazwa aplikacji 
                       // szTitle: Tytuł okna 
                       // WS_OVERLAPPEDWINDOW: Typ okna do utworzenia 
                       // CW_USEDEFAULT, CW_USEDEFAULT: zainicjowana pozycja aplikacji przez komputer 
                       // 500, 100: wielkość okna  
                       // NULL: Rodzic okna
                       // NULL: Menu jeśliby istniało 
                       // hInstance: Pierwszy parametr z WinMain  
                       // NULL: not used in this application  
    HWND hWnd = CreateWindow(
        szWindowClass,
        szTitle,
        WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, CW_USEDEFAULT,
        400, 300,
        NULL,
        NULL,
        hInstance,
        NULL
    );
 
    /*Statyczny dla A*/
 
    hSA = CreateWindowEx
    (0, L"STATIC", NULL, WS_CHILD | WS_VISIBLE | SS_LEFT, 30, 30, 150, 15, hWnd, NULL, hInstance, NULL);
 
    /*Tekst statyczny A*/
 
    SetWindowText(hSA, L"Wprowadź wartość A");
 
    /*Wprowadzanie A*/
 
    hTA = CreateWindowEx
    (WS_EX_CLIENTEDGE, L"EDIT", NULL, WS_CHILD | WS_VISIBLE, 200, 30, 50, 20, hWnd, NULL, hInstance, NULL);
 
    /*Przycisk A*/
    hwa = CreateWindowEx
    (WS_EX_CLIENTEDGE, L"Button", L"AKCEPTUJ", WS_CHILD | WS_VISIBLE, 260, 30, 100, 20, hWnd, NULL, hInstance, NULL);
 
    /*Statyczny tekst dla B*/
 
    hSB = CreateWindowEx
    (0, L"STATIC", NULL, WS_CHILD | WS_VISIBLE | SS_LEFT, 30, 50, 150, 15, hWnd, NULL, hInstance, NULL);
 
    /*Tekst statyczny dla B*/
 
    SetWindowText(hSB, L"Wprowadź wartość B");
 
    /*Wprowadzenie B*/
 
    hTB = CreateWindowEx
    (WS_EX_CLIENTEDGE, L"EDIT", NULL, WS_CHILD | WS_VISIBLE, 200, 50, 50, 20, hWnd, NULL, hInstance, NULL);
 
    /*Przycisk B*/
    hwb = CreateWindowEx
    (WS_EX_CLIENTEDGE, L"Button", L"AKCEPTUJ", WS_CHILD | WS_VISIBLE, 260, 50, 100, 20, hWnd, NULL, hInstance, NULL);
 
    /*Statyczny tekst dla C*/
 
    hSC = CreateWindowEx
    (0, L"STATIC", NULL, WS_CHILD | WS_VISIBLE | SS_LEFT, 30, 70, 150, 15, hWnd, NULL, hInstance, NULL);
 
    /*Tekst statyczny dla C*/
 
    SetWindowText(hSC, L"Wprowadź wartość C");
 
    /*Wprowadź C*/
 
    hTC = CreateWindowEx
    (WS_EX_CLIENTEDGE, L"EDIT", NULL, WS_CHILD | WS_VISIBLE, 200, 70, 50, 20, hWnd, NULL, hInstance, NULL);
 
    /*Przycisk*/
    hwc = CreateWindowEx
    (WS_EX_CLIENTEDGE, L"Button", L"AKCEPTUJ", WS_CHILD | WS_VISIBLE, 260, 70, 100, 20, hWnd, NULL, hInstance, NULL);
 
    /*Statyczny tekst dla Delta*/
 
    hSDelta = CreateWindowEx
    (0, L"STATIC", NULL, WS_CHILD | WS_VISIBLE | SS_LEFT, 30, 90, 150, 15, hWnd, NULL, hInstance, NULL);
 
    /*Tekst statyczny dla Delta*/
 
    SetWindowText(hSDelta, L"Delta wynosi:");
 
    /*Wyprowadzenie Delty*/
 
    hTDelta = CreateWindowEx
    (WS_EX_CLIENTEDGE, L"EDIT", NULL, WS_CHILD | WS_VISIBLE, 200, 90, 50, 20, hWnd, NULL, hInstance, NULL);
 
    /*Statyczny tekst dla X1*/
 
    hSX1 = CreateWindowEx
    (0, L"STATIC", NULL, WS_CHILD | WS_VISIBLE | SS_LEFT, 30, 110, 150, 15, hWnd, NULL, hInstance, NULL);
 
    /*Tekst statyczny dla X1*/
 
    SetWindowText(hSX1, L"X1 wynosi:");
 
    /*Wyprowadzenie X1*/
 
    hTX1 = CreateWindowEx
    (WS_EX_CLIENTEDGE, L"EDIT", NULL, WS_CHILD | WS_VISIBLE, 200, 110, 50, 20, hWnd, NULL, hInstance, NULL);
 
    /*Statyczny tekst dla X2*/
 
    hSX2 = CreateWindowEx
    (0, L"STATIC", NULL, WS_CHILD | WS_VISIBLE | SS_LEFT, 30, 130, 150, 15, hWnd, NULL, hInstance, NULL);
 
    /*Tekst statyczny dla X2*/
 
    SetWindowText(hSX2, L"X2 wynosi:");
 
    /*Wyprowadzenie X2*/
 
    hTX2 = CreateWindowEx
    (WS_EX_CLIENTEDGE, L"EDIT", NULL, WS_CHILD | WS_VISIBLE, 200, 130, 50, 20, hWnd, NULL, hInstance, NULL);
 
    /*Statyczny tekst dla X0*/
 
    hSX0 = CreateWindowEx
    (0, L"STATIC", NULL, WS_CHILD | WS_VISIBLE | SS_LEFT, 30, 150, 150, 15, hWnd, NULL, hInstance, NULL);
 
    /*Tekst statyczny dla X0*/
 
    SetWindowText(hSX0, L"X0 wynosi:");
 
    /*Wyprowadzenie X0*/
 
    hTX0 = CreateWindowEx
    (WS_EX_CLIENTEDGE, L"EDIT", NULL, WS_CHILD | WS_VISIBLE, 200, 150, 50, 20, hWnd, NULL, hInstance, NULL);
 
    if (!hWnd)
    {
        MessageBox(NULL,
            _T("Call to CreateWindow failed!"),
            _T("Win32 Guided Tour"),
            NULL);
 
        return 1;
    }
 
    // The parameters to ShowWindow explained:  
    // hWnd: the value returned from CreateWindow  
    // nCmdShow: the fourth parameter from WinMain  
    ShowWindow(hWnd,
        nCmdShow);
    UpdateWindow(hWnd);
 
    // Main message loop:  
    MSG msg;
    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
 
    return (int)msg.wParam;
 
}
 
//  
//  FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM)  
//  
//  PURPOSE:  Processes messages for the main window.  
//  
//  WM_PAINT    - Paint the main window  
//  WM_DESTROY  - post a quit message and return  
//  
//  
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
 
    switch (message)
    {
 
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
        break;
    }
 
    return 0;
}
 
edytowany 1x, ostatnio: furious programming, 2018-05-16 00:01

Pozostało 580 znaków

2018-05-15 23:14
0

W WinAPI WinMain to jest Twój main.

Przycisk obsługujesz w komunikacie WM_COMMAND.

Z edita pobierasz tekst w ten sposób: https://stackoverflow.com/que[...]p;utm_campaign=google_rich_qa

Pozostało 580 znaków

2018-05-16 18:06
0

@Spine: dziękuję za odpowiedź, ale yhh dalej nie umiem sobie z tym poradzić, próbowałem wieloma kombinacjami ale daje nie umiem zrobić czegokolwiek, jedyne co umiem to za pomocą przycisku otworzyć MessageBox, ale dalej nie potrafię stworzyć takiego kodu żeby zamiast MessagBoxa, przekazywało mi wartość do jakiejś zmiennej, albo chociaż do innego okienka żeby nauczyć się wyrzucać to wszystko co pobierze na ekran. Mógłbym prosić o troszkę jaśniejszą pomoc w postaci jakiegoś kodu z opisem co i jak działa czy coś?

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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