Форум программистов, компьютерный форум CyberForum.ru

Win32 API, MFC, или Windows Forms? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Undefined reference to http://www.cyberforum.ru/cpp-beginners/thread1507454.html
Много уже тем создано по даннму вопросу, но решения так и не нашел.. Есть конечно догадки, но как реализовать все равно не знаю. Прошу сильно не пинать, пытался сам разобраться, так и не смог. Начну по порядку: Определил класс GradeBook не расскрывая реализации элемент функций: #include <iostream> using namespace std; class GradeBook { public: GradeBook(string);
C++ Заполнение символьной матрицы Здравствуйте, У меня такой вопрос, хочу сделать char матрицу, но к сожалению, оно почему -то отображает не верно,,, заполняет так как надо, а выводит на экран - не правильно, в чем проблема? #include<iostream> using namespace std; void main() { const int size=5; char Star={0}; http://www.cyberforum.ru/cpp-beginners/thread1507449.html
Задание имени файла пользователем при чтении и записи C++
Программа должна осуществлять запись в файл или чтение из файла (по выбору пользователя) целых чисел. Пока я написала вот такой код: #include <iostream> #include <fstream> using namespace std; int main() { int A,i, n; cout<<"Do you want to read or to write the file? Put 1 or 2."; cin>>A;
C++ Как работают ссылки
1 Здравствуйте маленький вопрос? int d; int &s=d; как работает почему их типы должны быть одинаковы?
C++ Возможно ли переопределение операторов для пользовательских типов? http://www.cyberforum.ru/cpp-beginners/thread1507307.html
Собственно преследуемая цель: Определить свой тип int - myint. Переопределить для него операторы как надо. Ну, например, надо мне при операции сложения не алгебраически складывать значения, а извранически: 0x0203 + 0x0501 = 0x0308. Или же иной способ создания своего типа со своими операциями.
C++ Как вернуться в главное меню! Всем привет!Я сделал простенькую программу,которая записывает что-то в файл и выводит то,что введено. Так вот я не могу сделать так,чтобы пользователь после того,как запишет что-то в файл или просмотрит содержимое файла,мог вернуться обратно в главное меню.Причем,я хочу,чтобы пользователь делал возврат,нажав Enter!Помогите плииз!!!Вот код: #include <iostream> #include <fstream> #include... подробнее

Показать сообщение отдельно
Qt
Заблокирован
04.08.2015, 12:14     Win32 API, MFC, или Windows Forms?
Цитата Сообщение от russian_pepper Посмотреть сообщение
У меня всегда при создании приложения Qt Widget появляется окно выбор комплекта, и там всегда по умолчанию стоят четыре галочки:
Desktop Qt 5.5.0 NSVC2013 64 bit , ...2012 32 bit, Desktop Qt5.4.2 NSVC2012 OpenGL 32 bit, Desktop Qt 5.4.2 NSVC2013 64 bit2.
Это последствия того, что при установки онлайн инсталялтором не был просмотрен перечень того, что он предлагает ставить. Нужно было с лишнего снять галочки.
Используй только последнюю версию, с других галочки снимай, тебе нужна Desktop Qt 5.5.0 MSVC2013 64bit
Цитата Сообщение от russian_pepper Посмотреть сообщение
Для эксперимента, появились ошибки. Этот пример у меня в VS тоже не работал, подсказали включить:
Use Multi-Byte Character Set тогда всё заработало...
В VS этот костыль для тех, кто не понимает разницы, когда пишет char и wchar_t
Ерунда всё это. В QtCreator такого конечно же включить нельзя включить, т.к. нужно только для VS.
В общем, в Qt так код никто не пишет. Зачем тебе суперкрутой фреймворк Qt, если ты пишешь код не на нём?
Под Qt пишут кодом самого Qt. В частности в нём есть QString (для решения проблем с юникодом )
Если ты будешь писать платформозависимые вещи в коде на Qt, тогда никакой кроссплатформенности ты не получишь. Понимаешь в чём фокус, всё подобные кроссплатформенные вещи вшиты в недра Qt и он сам знает посредствам всяких #ifdef-ов, когда ему какой код применять в зависимости от платформы. Ты же должен использовать классы Qt (начинаются на букву Q, допустим QString, QVector), стандарт С++, STL, свои класса с платформонезависимым кодом, а так же сторонние кроссплатформенные библиотеки.

Про всякие #include <windows.h> - забудь.

А что же до твоего примера выше, которые написан на VisualStudio... Ну что ж, если понимать суть, то можно хоть в командной строке собрать, тут ведь нет ничего сложного. Для его сборки в QtCreator тебе необходимо сделать следующее:
1. Создать пустой проект (делай именно так): Файл->Новый файл или проект->Другой проект->Empty qmake Project
2. Добавить туда CPP файл: Файл->Новый файл или проект->(снизу в разделе "файлы и классы")C++->C++ Source File. Вводишь там любое имя ему, жмёшь далее .. далее...
3. В этот файл нужно скопировать свой код под WinApi (VS) и подправить там следующее:
a) Короче, в коде перед текстом везде пиши буковку L, например, L"Hello World", это говорит о том, что текст в юникоде.
б) Подключи библиотеки винды для винапишных фнукций..
Догадываясь, что ты см это не сделаешь , я тебе всё подправил. Вот готовый код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include <windows.h>
#include <tchar.h>
 
#pragma comment ( lib , "User32.lib")
#pragma comment ( lib , "gdi32.lib")
 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
    static wchar_t szAppName[] = L"HelloWin";
    HWND hwnd;
    MSG msg;
    WNDCLASSEX wndclass;
    wndclass.cbSize = sizeof(wndclass);
    wndclass.style = CS_HREDRAW | CS_VREDRAW;
    wndclass.lpfnWndProc = WndProc;
    wndclass.cbClsExtra = 0;
    wndclass.cbWndExtra = 0;
    wndclass.hInstance = hInstance;
    wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
    wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    wndclass.lpszMenuName = NULL;
    wndclass.lpszClassName = szAppName;
    wndclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
    RegisterClassEx(&wndclass);
    hwnd = CreateWindow(
        szAppName, // window class name
        L"The Hello Program", // window caption
        WS_OVERLAPPEDWINDOW, // window style
        CW_USEDEFAULT, // initial x position
        CW_USEDEFAULT, // initial y position
        CW_USEDEFAULT, // initial x size
        CW_USEDEFAULT, // initial y size
        NULL, // parent window handle
        NULL, // window menu handle
        hInstance, // program instance handle
        NULL
        ); // creation parameters
    ShowWindow(hwnd, iCmdShow);
    UpdateWindow(hwnd);
    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
    HDC hdc;
    PAINTSTRUCT ps;
    RECT rect;
    switch (iMsg)
    {
    case WM_CREATE:
        //PlaySound("hellowin.wav", NULL, SND_FILENAME | SND_ASYNC);
        return 0;
 
    case WM_PAINT:
        hdc = BeginPaint(hwnd, &ps);
        GetClientRect(hwnd, &rect);
        DrawText(hdc, L"Hello, Windows 95!", -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
        EndPaint(hwnd, &ps);
        return 0;
    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;
    }
    return DefWindowProc(hwnd, iMsg, wParam, lParam);
}
Всё, собирай и запускай.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru