Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++: WinAPI
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
Why so seriouS
44 / 44 / 12
Регистрация: 12.03.2013
Сообщений: 167
#1

Первая программа

05.04.2013, 17:29. Просмотров 619. Ответов 18
Метки нет (Все метки)

Вот написал свою первую программу, но почему-то не работает. Писал по книге Юрий Щупак - Win32 API. Эффективная разработка приложений

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
#include <Windows.h>
 
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
 
int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine,int nCmdShow)
{
    HWND hMainWnd;
    char szClassName[] = "MyClass";
    MSG msg;
    WNDCLASSEX wc;
 
    wc.cbSize = sizeof(wc);
    wc.style = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc = WndProc;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hInstance = hinstance;
    wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    wc.hCursor = LoadCursor(NULL,IDC_ARROW);
    wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    wc.lpszMenuName = NULL;
    wc.lpszClassName = szClassName;
    wc.hIconSm = LoadIcon(NULL,IDI_APPLICATION);
 
    if(!RegisterClassEx(&wc)){
        MessageBox(NULL,"Error!","Error!",MB_OK);
        return 0;
    }
 
    hMainWnd = CreateWindow(
        szClassName, "A Hellol Application", WSJ1VERLAPPEDWIND0W,
        CW_USEDEFAULT, 0, CWJJSEDEFAULT, 0,
        (HWND)NULL, (HMENU)NULL,
        (HINSTANCE)hlnstance, NULL );
 
    if (!hMainWnd) {
        MessageBox(NULL, "Cannot create main window", "Error", MB_OK);
        return 0; 
    }
 
    ShowWindow(hMainWnd,  nCmdShow);
 
    while (GetMessage(&msg, NULL, 0, 0))    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
        return msg.wParam; 
}
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM IParam)
{
HDC hDC; PAINTSTRUCT ps; RECT rect;
switch (uMsg)
    {
    case WM_PAINT:
    hDC = BeginPaint(hWnd, &ps);
    GetClientRect(hWnd, &rect); DrawText(hDC,  "Hello, World!",  -1, &rect, DT_SINGLELINE  |  DT_CENTER  |  DT_VCENTER );
    EndPaint(hWnd, &ps); break;
    case WM_CLOSE:
    DestroyWindow(hWnd); break;
    case WM_DESTROY: PostQuitMessage(0); break;
    default:
    return DefWindowProc(hWnd,  uMsg, wParam,  IParam);
}
return 0;
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.04.2013, 17:29
Ответы с готовыми решениями:

Первая программа с WinApi
Вот код программы: #include &lt;windows.h&gt; bool RegClass(WNDPROC, LPCTSTR,...

Первая программа на WINAPI
Вот написал первую программу с 2 кнопками. при нажатии на которые получаю...

Первая программа написанная на C++,Win32 API, соединяющаяся с источником данных через ODBC
Добрый день, Уважаемые форумчане! Недавно увлекся программированием. Пишу...

Статичная первая строка в ListBox
Добрый день! Приложение построчно выводит информацию в ListBox. Первая строка...

Первая программа. Код не компилируется и не запускается программа.
Первая программа, первая ошибка Здравствуйте! Решил учить С++. Скачал книгу...

18
BeginerMan
49 / 48 / 14
Регистрация: 17.11.2012
Сообщений: 427
05.04.2013, 19:22 #2
Напиши хотя бы какие ошибки выдаёт компилятор
0
Why so seriouS
44 / 44 / 12
Регистрация: 12.03.2013
Сообщений: 167
05.04.2013, 19:32  [ТС] #3
Компилятор visual studio 2010 express
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
------ Построение начато: проект: kursiv, Конфигурация: Debug Win32 ------
  main.cpp
c:\documents and settings\admin\мои документы\visual studio 2010\projects\kursiv\kursiv\main.cpp(22): error C2440: =: невозможно преобразовать "char [8]" в "LPCWSTR"
          Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
c:\documents and settings\admin\мои документы\visual studio 2010\projects\kursiv\kursiv\main.cpp(26): error C2664: MessageBoxW: невозможно преобразовать параметр 2 из "const char [7]" в "LPCWSTR"
          Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
c:\documents and settings\admin\мои документы\visual studio 2010\projects\kursiv\kursiv\main.cpp(34): error C2065: WSJ1VERLAPPEDWIND0W: необъявленный идентификатор
c:\documents and settings\admin\мои документы\visual studio 2010\projects\kursiv\kursiv\main.cpp(34): error C2065: CWJJSEDEFAULT: необъявленный идентификатор
c:\documents and settings\admin\мои документы\visual studio 2010\projects\kursiv\kursiv\main.cpp(34): error C2065: hlnstance: необъявленный идентификатор
c:\documents and settings\admin\мои документы\visual studio 2010\projects\kursiv\kursiv\main.cpp(37): error C2664: MessageBoxW: невозможно преобразовать параметр 2 из "const char [26]" в "LPCWSTR"
          Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
c:\documents and settings\admin\мои документы\visual studio 2010\projects\kursiv\kursiv\main.cpp(57): error C2664: DrawTextW: невозможно преобразовать параметр 2 из "const char [14]" в "LPCWSTR"
          Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
0
Игорь с++
473 / 465 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
05.04.2013, 19:39 #4
Цитата Сообщение от BeginerMan Посмотреть сообщение
Напиши хотя бы какие ошибки выдаёт компилятор
да их там дохрена , в основном при создании окна . Вот твой код без ошибок -
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#include <Windows.h>
 
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
 
int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine,int nCmdShow)
{
    HWND hMainWnd;
    char szClassName[] = "MyClass";
    MSG msg;
    WNDCLASSEX wc;
 
    wc.cbSize = sizeof(wc);
    wc.style = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc = WndProc;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hInstance = hinstance;
    wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    wc.hCursor = LoadCursor(NULL,IDC_ARROW);
    wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    wc.lpszMenuName = NULL;
    wc.lpszClassName = szClassName;
    wc.hIconSm = LoadIcon(NULL,IDI_APPLICATION);
 
    if(!RegisterClassEx(&wc)){
        MessageBox(NULL,"Error!","Error!",MB_OK);
        return 0;
    }
 
    hMainWnd = CreateWindow(
        szClassName, "A Hellol Application", WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, CW_USEDEFAULT,500, 500,
        HWND_DESKTOP,NULL,
        hinstance, NULL );
 
    if (!hMainWnd) {
        MessageBox(NULL, "Cannot create main window", "Error", MB_OK);
        return 0; 
    }
 
    ShowWindow(hMainWnd,  nCmdShow);
 
    while (GetMessage(&msg, NULL, 0, 0))    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
        return msg.wParam; 
}
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM IParam)
{
        
HDC hDC; PAINTSTRUCT ps; RECT rect;
 
switch (uMsg)
    {
             
             
    case WM_PAINT:
 
    hDC = BeginPaint(hWnd, &ps);
 
    GetClientRect(hWnd, &rect); DrawText(hDC,  "Hello, World!",  -1, &rect, DT_SINGLELINE  |  DT_CENTER  |  DT_VCENTER );
 
    EndPaint(hWnd, &ps); 
    
    break;
 
 
 
    case WM_CLOSE:
    DestroyWindow(hWnd);
     break;
    
    
    case WM_DESTROY: 
         PostQuitMessage(0);
          break;
          
          
    default:
    return DefWindowProc(hWnd,  uMsg, wParam,  IParam);
}
return 0;
 
}
Добавлено через 2 минуты
если под студию сделай кодировку - Not Set
1
Why so seriouS
44 / 44 / 12
Регистрация: 12.03.2013
Сообщений: 167
05.04.2013, 19:43  [ТС] #5
Игорь с++, Ваш вариант тоже не работает, те же ошибки:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
------ Построение начато: проект: kursiv, Конфигурация: Debug Win32 ------
  main.cpp
c:\documents and settings\admin\мои документы\visual studio 2010\projects\kursiv\kursiv\main.cpp(22): error C2440: =: невозможно преобразовать "char [8]" в "LPCWSTR"
          Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
c:\documents and settings\admin\мои документы\visual studio 2010\projects\kursiv\kursiv\main.cpp(26): error C2664: MessageBoxW: невозможно преобразовать параметр 2 из "const char [7]" в "LPCWSTR"
          Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
c:\documents and settings\admin\мои документы\visual studio 2010\projects\kursiv\kursiv\main.cpp(34): error C2664: CreateWindowExW: невозможно преобразовать параметр 2 из "char [8]" в "LPCWSTR"
          Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
c:\documents and settings\admin\мои документы\visual studio 2010\projects\kursiv\kursiv\main.cpp(37): error C2664: MessageBoxW: невозможно преобразовать параметр 2 из "const char [26]" в "LPCWSTR"
          Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
c:\documents and settings\admin\мои документы\visual studio 2010\projects\kursiv\kursiv\main.cpp(63): error C2664: DrawTextW: невозможно преобразовать параметр 2 из "const char [14]" в "LPCWSTR"
          Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
c:\documents and settings\admin\мои документы\visual studio 2010\projects\kursiv\kursiv\main.cpp(86): fatal error C1075: конец файла обнаружен ранее, чем левая фигурная скобка "{" в "c:\documents and settings\admin\мои документы\visual studio 2010\projects\kursiv\kursiv\main.cpp(51)"
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========


Добавлено через 1 минуту
Цитата Сообщение от Игорь с++ Посмотреть сообщение
если под студию сделай кодировку - Not Set
А это как?
0
Игорь с++
473 / 465 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
05.04.2013, 19:44 #6
Цитата Сообщение от Why so seriouS Посмотреть сообщение
А это как?
А это сначало надо было спросить а , потом уже говорить , что код который я 5 минут назад компильнул под студию не рабочий
1
Игорь с++
473 / 465 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
05.04.2013, 19:49 #7
вот скрины -
1
Миниатюры
Первая программа   Первая программа  
Why so seriouS
44 / 44 / 12
Регистрация: 12.03.2013
Сообщений: 167
05.04.2013, 20:00  [ТС] #8
Еще одна ошибка:
C++
1
2
3
4
5
------ Построение начато: проект: kursiv, Конфигурация: Debug Win32 ------
  main.cpp
MSVCRTD.lib(crtexe.obj) : error LNK2019: ссылка на неразрешенный внешний символ _main в функции ___tmainCRTStartup
C:\Documents and Settings\Admin\мои документы\visual studio 2010\Projects\kursiv\Debug\kursiv.exe : fatal error LNK1120: 1 неразрешенных внешних элементов
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
0
Игорь с++
473 / 465 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
05.04.2013, 20:05 #9
какую строчку ошибку показывает
0
Why so seriouS
44 / 44 / 12
Регистрация: 12.03.2013
Сообщений: 167
05.04.2013, 20:08  [ТС] #10
Никакую. Просто выбивает сообщение что в ходе выполнения произошла ошибка и все.
0
Игорь с++
473 / 465 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
05.04.2013, 20:24 #11
Цитата Сообщение от Why so seriouS Посмотреть сообщение
ссылка на неразрешенный внешний символ _main в функции ___tmainCRTStartup
я что то не вижу в программе такой функции . Открой студию , создай чистый проект , сделай настройки как я говорил и вставь мой код , нажми F5
0
Why so seriouS
44 / 44 / 12
Регистрация: 12.03.2013
Сообщений: 167
05.04.2013, 20:43  [ТС] #12
Не помогло
0
Игорь с++
473 / 465 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
05.04.2013, 20:50 #13
Цитата Сообщение от Why so seriouS Посмотреть сообщение
Не помогло
тогда покажи мне эту функцию в твоей программе
0
Игорь с++
473 / 465 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
05.04.2013, 20:52 #14
вот архив , только студия 8
1
Вложения
Тип файла: rar zxc.rar (2.12 Мб, 4 просмотров)
Why so seriouS
44 / 44 / 12
Регистрация: 12.03.2013
Сообщений: 167
05.04.2013, 21:04  [ТС] #15
Так это и есть вся программа Я компилюю ваш код и выскакивает ошибка. Пробовал на dev c++ скомпилюваты там выдало ошибку вот на эту функцию.
[Linker error] undefined reference to `GetStockObject@4'

Добавлено через 7 минут
А ваш проект работает!!

Добавлено через 3 минуты
Но почему проект, который я создаю не хочет работать?
0
Игорь с++
473 / 465 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
05.04.2013, 21:07 #16
Цитата Сообщение от Why so seriouS Посмотреть сообщение
Пробовал на dev c++ скомпилюваты там выдало ошибку вот на эту функцию
у меня не выдаёт , только что проверил

Добавлено через 48 секунд
Why so seriouS, кинь свой проект , посмотрю
1
Why so seriouS
44 / 44 / 12
Регистрация: 12.03.2013
Сообщений: 167
05.04.2013, 21:07  [ТС] #17
Я кажется понял почему. Наверное нужно было создавать проект не консольный вариант а просто проект Win32
0
Игорь с++
473 / 465 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
05.04.2013, 21:08 #18
проект я надеюсь win32 , при пустом проекте
1
Why so seriouS
44 / 44 / 12
Регистрация: 12.03.2013
Сообщений: 167
05.04.2013, 21:09  [ТС] #19
Цитата Сообщение от Игорь с++ Посмотреть сообщение
проект я надеюсь win32 , при пустом проекте
Уже да))
0
05.04.2013, 21:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.04.2013, 21:09

Первая программа
Здравствуйте форумчане. Только не давно начал изучать delphi(а верней три дня...

Qt-первая программа
Я начал изучать Qt4 и первую прогу(диалоговое окно поиска) списал из учебника...

Первая программа С++
Вобщем, начал изучать С++, переписываю пример из книги, и в каждой строке...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru