Другое С/С++ Вопрос - Ответ

Lil Xean

о да моя госпожа
214
225
Можно пожалуйста простенький гайд по структуре самой дллки, и как её перегнать в .asi?
 

papercut

Известный
93
14
Да, спасибо за совет(без рофла). Только из этого следует вопрос по wndproc:

При компиляции этого кода
По плану он должен исполняться:
void CALLBACK prtbtn(std::string c) {
    char* btn = _strdup(c.c_str());
    SF->getSAMP()->getChat()->AddChatMessage(-1, btn);
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    if (message == WM_KEYDOWN) {
        if(wParam == 'Y') prtbtn("Pressed");
        return 0L;
    }
    return DefWindowProc(hWnd, message, wParam, lParam);
}

Выходит ошибка:Ошибка LNK2019 ссылка на неразрешенный внешний символ __imp__DefWindowProcA@16 в функции "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z)
 

Musaigen

abobusnik
Проверенный
1,603
1,361
Какой адрес у функции, которую вызывает опкод 00с2 в клео?
 

f.lux

Новичок
8
0
есть две переменные типа string, под названием name, surname
вывод фразы: "Введите ваше имя и фамилию", если бы нужно было бы вести одно слово - можно было бы использовать просто cin, но так как вводится два слова, которых разделяет пробел - cin записывает второе слово (фамилию) сразу же второй переменной surname.
так как эти две переменные не являются символьным массивом (char), то cin.get или cin.getline становится проблематично использовать,, так как первый параметр - имя массива, а у меня просто переменная.
хотелось бы узнать, как в данном случае поступить.
спасибо за ответ.
 

SR_team

like pancake
BH Team
4,791
6,466
есть две переменные типа string, под названием name, surname
вывод фразы: "Введите ваше имя и фамилию", если бы нужно было бы вести одно слово - можно было бы использовать просто cin, но так как вводится два слова, которых разделяет пробел - cin записывает второе слово (фамилию) сразу же второй переменной surname.
так как эти две переменные не являются символьным массивом (char), то cin.get или cin.getline становится проблематично использовать,, так как первый параметр - имя массива, а у меня просто переменная.
хотелось бы узнать, как в данном случае поступить.
спасибо за ответ.
Тебе надо записать оба слова в одну переменную? Почему возникли проблемы с cin? код покажи, и отметь строки на которых возникают проблемы, а еще лучше пропиши проблемы комментариями к коду
 

SR_team

like pancake
BH Team
4,791
6,466
И зачем тебе asm и вообще вызов каких-либо функций?

Да, спасибо за совет(без рофла). Только из этого следует вопрос по wndproc:

При компиляции этого кода
По плану он должен исполняться:
void CALLBACK prtbtn(std::string c) {
    char* btn = _strdup(c.c_str());
    SF->getSAMP()->getChat()->AddChatMessage(-1, btn);
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    if (message == WM_KEYDOWN) {
        if(wParam == 'Y') prtbtn("Pressed");
        return 0L;
    }
    return DefWindowProc(hWnd, message, wParam, lParam);
}

Выходит ошибка:Ошибка LNK2019 ссылка на неразрешенный внешний символ __imp__DefWindowProcA@16 в функции "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z)
Надо использовать CallWindowProc, а не DefWindowProc

Можно пожалуйста простенький гайд по структуре самой дллки, и как её перегнать в .asi?
 

f.lux

Новичок
8
0
Тебе надо записать оба слова в одну переменную? Почему возникли проблемы с cin? код покажи, и отметь строки на которых возникают проблемы, а еще лучше пропиши проблемы комментариями к коду
заранее извиняюсь за хуйню которую написал выше, сам сейчас прочитал и понял что это выглядит так, как будто это писал умственно-отсталый
да, нужно записать два слова в одну переменную стринг.
зайду с далека, с символьных массивов.
Код:
char name[30], dessert[35];
    cout << "Enter ur name and surname:" << endl;
    cin >> name;
    cout << "Enter ur favorite dessert: " << endl;
    cin >> dessert;
    cout << "Ur name: " << name << ", ur favorite dessert: " << dessert;
- если написать код таким образом, то при вводе имени и фамилии (два слова, которых разделяет пробел) второе слово записывается сразу же в dessert, а фиксится это следующим образом:

Код:
char name[30], dessert[35];
    cout << "Enter ur name and surname:" << endl;
    cin.get(name,29).get();
    cout << "Enter ur favorite dessert: " << endl;
    cin.get(dessert,34).get();
    cout << "Ur name: " << name << ", ur favorite dessert: " << dessert;
либо же используя getline, разница не велика, суть одна и та же.
вот я хочу проделать тоже самое с string(сделать возможным записать в нее два слова, между которыми стоит пробел), но get() и getline() просто не дает мне этого сделать, ибо первый параметр название символьного массива, вместо которого я использую обычный string.
 

SR_team

like pancake
BH Team
4,791
6,466
заранее извиняюсь за хуйню которую написал выше, сам сейчас прочитал и понял что это выглядит так, как будто это писал умственно-отсталый
да, нужно записать два слова в одну переменную стринг.
зайду с далека, с символьных массивов.
Код:
char name[30], dessert[35];
    cout << "Enter ur name and surname:" << endl;
    cin >> name;
    cout << "Enter ur favorite dessert: " << endl;
    cin >> dessert;
    cout << "Ur name: " << name << ", ur favorite dessert: " << dessert;
- если написать код таким образом, то при вводе имени и фамилии (два слова, которых разделяет пробел) второе слово записывается сразу же в dessert, а фиксится это следующим образом:

Код:
char name[30], dessert[35];
    cout << "Enter ur name and surname:" << endl;
    cin.get(name,29).get();
    cout << "Enter ur favorite dessert: " << endl;
    cin.get(dessert,34).get();
    cout << "Ur name: " << name << ", ur favorite dessert: " << dessert;
либо же используя getline, разница не велика, суть одна и та же.
вот я хочу проделать тоже самое с string(сделать возможным записать в нее два слова, между которыми стоит пробел), но get() и getline() просто не дает мне этого сделать, ибо первый параметр название символьного массива, вместо которого я использую обычный string.
getline(cin, string, '\n'); -- будет считывать строку до символа переноса, т.е. пока не нажмешь enter
 
  • Нравится
Реакции: f.lux

bet.io

Известный
117
16
Дано натуральное число A > 0. Требуется вывести такое минимально возможное нечётное натуральное число K, при котором сумма 1*2 + 3*4 + … + K*(K+1) окажется больше A.
Объясните нормальным языком, что нужно сделать? Если сразу напишите программу, то сделайте пожалуйста комментарии
 
  • Нравится
Реакции: Vintik

SR_team

like pancake
BH Team
4,791
6,466
Дано натуральное число A > 0. Требуется вывести такое минимально возможное нечётное натуральное число K, при котором сумма 1*2 + 3*4 + … + K*(K+1) окажется больше A.
Объясните нормальным языком, что нужно сделать? Если сразу напишите программу, то сделайте пожалуйста комментарии
А чо сам домашку никак не можешь сделать? Вбей в гугл, давно решенная задачка.