Загрузка...

Помогите сделать код уникальным.

Тема в разделе C/C++ создана пользователем Leonid13123 21 май 2023. 221 просмотр

  1. Leonid13123
    Leonid13123 Автор темы 21 май 2023 1 2 ноя 2018
    Пожалуйста сделайте код немного уникальным, что бы препод не выстегнул за чужой код. Код так же дольше остаться на C.

    НИЖЕ КОД ПОЛНОСТЬЮ РАБОЧИЙ ДОПОЛНИТЕЛЬНО ДЕЛАТЬ НИЧЕГО НЕ НАДО, ПРОСТО НЕМНОГО СДЕЛАТЬ УНИКАЛЬНЫМ.

    Код на C
    C
    #include <windows.h>
    #include <stdio.h>
    typedef int(*Function)(char*); // указатель на тип функции

    // ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ
    char szClassName[] = "CLASS"; // имя класса окна
    char szTitle[] = "WindowsDir"; // заголовок окна
    HWND hWnd; // дескриптор окна
    HANDLE hThread; // дескриптор потока
    char buf[256]; // строка для возвращенной информации


    //ФУНКЦИЯ ПОТОКА
    DWORD WINAPI ThreadFunc(void*)
    {
    // загружаем динамическую библиотеку Dll.dll и получаем дескриптор
    HMODULE hdll = LoadLibraryA("dllmain.dll");
    if (hdll == NULL)// если получить дескриптор не удалось
    {
    //Выводим сообщение об ошибке
    MessageBox(NULL, "Файл dllmain.dll не найден", "Ошибка", MB_ICONERROR);
    ExitProcess(0);
    return 0;
    }
    // получаем адрес нашей функции
    Function addrfunc = (Function)GetProcAddress(hdll, "GetWindowsDir");
    addrfunc(buf); // вызываем функцию из динамической библиотеки
    FreeLibrary(hdll); // выгружаем библиотеку
    return 1;
    }


    //ФУНКЦИЯ: WndProc(HWND, UINT, WPARAM, LPARAM)
    LRESULT CALLBACK WndProc
    (HWND hwnd, // дескриптор окна
    UINT umsg, // сообщение
    WPARAM wparam, // эти параметры
    LPARAM lparam) // используются некоторыми сообщениями
    {
    HDC hdc;// контекст устройства
    PAINTSTRUCT ps;
    DWORD IdThread; // идентификатор потока

    switch (umsg)
    {
    case WM_PAINT:
    hdc = BeginPaint(hwnd, &ps); // инициализация контекста устройства
    TextOut(hdc, 20, 20, buf, strlen(buf)); // строкa buf
    EndPaint(hwnd, &ps);
    break;

    case WM_CREATE:
    // создаем поток
    hThread = CreateThread(NULL, 0, ThreadFunc, NULL, 0, &IdThread);
    WaitForSingleObject(hThread, INFINITE); // вечное ожидание завершение потока
    CloseHandle(hThread); // закрытие дескриптора
    break;

    case WM_KEYDOWN:
    switch (wparam)
    {
    case 0x000d://Enter
    case 0x001b://Esc
    PostQuitMessage(0); break;
    default: break;
    }
    break;

    case WM_DESTROY:
    PostQuitMessage(NULL); // Завершение работы
    break;
    default:
    return DefWindowProc(hwnd, umsg, wparam, lparam);
    }
    return 0;
    }

    //Создание окна и обработка сообщений
    int WINAPI WinMain(HINSTANCE hThisInst, // дескриптор текущего процесса
    HINSTANCE hPrevInst, // дескриптор предыдущего процесса
    LPSTR str, // указатель на командную строку
    int nWinMode) // используется для функции отображения окна
    {
    MSG msg;// информация о сообщении
    WNDCLASS wcl; // атрибуты окна
    // заполняем структуру wcl
    wcl.hInstance = hThisInst; // дескриптор процесса
    wcl.lpszClassName = szClassName; // имя класса
    wcl.lpfnWndProc = WndProc; // указатель на функцию окна
    wcl.style = CS_HREDRAW | CS_VREDRAW; // стиль окна
    wcl.hIcon = LoadIcon(NULL, IDI_APPLICATION); // иконка
    wcl.hCursor = LoadCursor(NULL, IDC_ARROW); // курсор
    wcl.lpszMenuName = NULL; // меню нет
    wcl.cbClsExtra = 0;
    wcl.cbWndExtra = 0;
    wcl.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); // цвет фона ( закраска белой кистью)
    RegisterClass(&wcl); // регистрируем класс
    hWnd = CreateWindow // создаем окно
    (szClassName, // имя класса
    szTitle, // строка заголовка
    WS_CAPTION, // стиль окна
    80, // верхний левый угол окна и длинна с шириной
    50,
    300,
    100,
    NULL, // дескриптор родительского окна
    NULL, // дескриптор меню
    hThisInst,
    NULL);

    ShowWindow(hWnd, nWinMode);
    UpdateWindow(hWnd);
    while (GetMessage(&msg, NULL, 0, 0)) // сообщения от windows
    {
    TranslateMessage(&msg); // ввод с клавиатуры
    DispatchMessage(&msg); // пересылает сообщение функции окна
    }
    return 1;
    }

    void main()
    {
    HMODULE hInstance = GetModuleHandle(NULL); // получаем дескриптор процесса
    LPSTR str = GetCommandLine(); // получаем имя текущей программы
    WinMain(hInstance, NULL, str, SW_SHOWDEFAULT);
    }
    Вариант задания.[IMG]
    Примечание к заданию
    [IMG]
     
    21 май 2023 Изменено
  2. abibasman
    abibasman 21 май 2023 7 10 ноя 2019
    CHAGPT BAI
    --- Сообщение объединено с предыдущим 21 май 2023
    #include <cstdlib>
    #include <iostream>
    #include <windows.h>
    #include <stdio.h>

    typedef int (*Func)(char*);

    char szClassName[] = "CLASS";
    char szTitle[] = "WindowsDir";
    HWND hWnd;
    HANDLE hThread;
    char buffer[256];

    DWORD WINAPI ThreadFunction(void*) {
    HMODULE hdll = LoadLibraryA("dllmain.dll");
    if (hdll == NULL) {
    MessageBox(NULL, "Файл dllmain.dll не найден", "Ошибка", MB_ICONERROR);
    ExitProcess(0);
    return 0;
    }

    Func addrfunc = (Func)GetProcAddress(hdll, "GetWindowsDir");
    addrfunc(buffer);
    FreeLibrary(hdll);
    return 1;
    }

    LRESULT CALLBACK WndProc(HWND hwnd, UINT umsg, WPARAM wparam, LPARAM lparam) {
    HDC hdc;
    PAINTSTRUCT ps;
    DWORD IdThread;

    switch (umsg) {
    case WM_PAINT:
    hdc = BeginPaint(hwnd, &ps);
    TextOut(hdc, 20, 20, buffer, strlen(buffer));
    EndPaint(hwnd, &ps);
    break;
    case WM_CREATE:
    hThread = CreateThread(NULL, 0, ThreadFunction, NULL, 0, &IdThread);
    WaitForSingleObject(hThread, INFINITE);
    CloseHandle(hThread);
    break;
    case WM_KEYDOWN:
    switch (wparam) {
    case 0x000d:
    case 0x001b:
    PostQuitMessage(0);
    break;
    default:
    break;
    }
    break;
    case WM_DESTROY:
    PostQuitMessage(NULL);
    break;
    default:
    return DefWindowProc(hwnd, umsg, wparam, lparam);
    }
    return 0;
    }

    int WINAPI WinMain(HINSTANCE hThisInst, HINSTANCE hPrevInst, LPSTR str, int nWinMode) {
    MSG msg;
    WNDCLASS wcl;

    wcl.hInstance = hThisInst;
    wcl.lpszClassName = szClassName;
    wcl.lpfnWndProc = WndProc;
    wcl.style = CS_HREDRAW | CS_VREDRAW;
    wcl.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    wcl.hCursor = LoadCursor(NULL, IDC_ARROW);
    wcl.lpszMenuName = NULL;
    wcl.cbClsExtra = 0;
    wcl.cbWndExtra = 0;
    wcl.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    RegisterClass(&wcl);
    hWnd = CreateWindow(szClassName, szTitle, WS_CAPTION, 80, 50, 300, 100,NULL, NULL, hThisInst,NULL);

    ShowWindow(hWnd, nWinMode);
    UpdateWindow(hWnd);

    while(GetMessage(&msg, NULL, 0, 0)) {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
    }

    return EXIT_SUCCESS;
    }

    void main() {
    HMODULE hInstance = GetModuleHandle(NULL);
    LPSTR str = GetCommandLine();
    WinMain(hInstance, NULL, str, SW_SHOWDEFAULT);
    }

    забил в BAI , проверяй сам
     
  3. Джустер
    Джустер 21 май 2023 1139 26 окт 2019
     
  4. Daemon
    Daemon 21 май 2023 1680 8 янв 2021
    Это не C++, а C
     
Загрузка...
Top