Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
 Аватар для Golovastik
11 / 11 / 2
Регистрация: 25.05.2009
Сообщений: 435

НЕ компилится проект на студии 2005

02.10.2009, 14:15. Показов 1561. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Начал читать книгу по API, автор Щупак.
Во второй программе, этой книги создаётся оконное приложение. Набрал как в книге, проверял всё точь в точь, но программа не компилится, выдаёт ошибку:
c:\documents and settings\admin\рабочий стол\papka\forma_api\forma_api\forma.cpp (57) : error C2601: 'WindProc' : local function definitions are illegal
Все подробности программы я буду читать в книге,нужн оскомпилить проект,чтоб по нему смотреть.
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
#include <windows.h>
#include <winuser.h>
#include <tchar.h>
 
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow)
{
    HWND hMainWnd;
wchar_t szClassName[] = L"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          = LoadCursor(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,L"Класс не зарегестрирован",L"Ошибка",MB_ICONQUESTION);
       return 0;
   }
   //Создаём основное окно приложения   
   hMainWnd = CreateWindow(
       szClassName,L"Привет Украина",WS_OVERLAPPEDWINDOW,
       CW_USEDEFAULT, 0, CW_USEDEFAULT,0, (HWND)NULL, (HMENU)NULL,
       (HINSTANCE)hInstance,NULL);
 
   if(!hMainWnd)
   {
       MessageBox(NULL,L"Не можно создать основное окно",L"Ошибка",MB_OK);
       return 0;
   }
//Показываем наше окно
   ShowWindow(hMainWnd, nCmdShow);
   UpdateWindow(hMainWnd);
 
//Выполняем цикл обработки сообщений до закрытия программы
while(GetMessage(&msg,NULL,0,0))  
{
    TranslateMessage(&msg);
    DispatchMessage(&msg);
    return (int)msg.wParam;
}
//=======================================================================================
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    HDC hDC;
    PAINTSTRUCT ps;
    RECT rect;
    switch(uMsg)
    {
    case WM_PAINT: GetClientRect(hWnd, &rect);
                  DeawText(hDC, "Hello, World!", -1,&rect,
                  DT_SINGLELINE | DT_CENTER | DT_VCENTER);
                  EndPaint(hWnd,&s);
                  break;
 
    case WM_CLOSE:
    DestroyWindow(hWnd); break; 
 
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
 
    default:
          return DefWindowProc(hWnd,uMsg, wParam, lParam);
    }
    return 0;
 
    }
 
}
 
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.10.2009, 14:15
Ответы с готовыми решениями:

Как открыть проект 2008 в 2005 студии
У меня проблема создал проект в 2008 , можно ли открыть его в 2005.

VisualStudio 2005 - не компилируется проект из vs2012
Есть необходимость написать программу в vs2005, есть написанный модуль(класс) в vs2012(в vs2012 работает без проблем), подключаю эти файлы...

Не могу открыть проект в Microsoft Visual C++ 2005
Совсем недавно начал &quot;программировать&quot; на C++. Мне скинули проект, который содержит следующие файлы с расширениями: файлы *.h ...

14
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
02.10.2009, 15:27
а откуда там файл forma.cpp, если ты его не делал?
сдается мне, что у тебя приложение Window Forms, а не Win32.
0
 Аватар для Golovastik
11 / 11 / 2
Регистрация: 25.05.2009
Сообщений: 435
02.10.2009, 15:35  [ТС]
У меня приложение Win 32 Project
Я исправил вроде ошибки, вот исправленный немного код:
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
#include <windows.h>
#include <tchar.h>
 
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow)
{
    HWND hMainWnd;
    wchar_t szClassName[] = L"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          = LoadCursor(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,L"Класс не зарегестрирован",L"Ошибка",MB_ICONQUESTION);
       return 0;
   }
   //Создаём основное окно приложения   
   hMainWnd = CreateWindow(
       szClassName,L"Привет Украина",WS_OVERLAPPEDWINDOW,
       CW_USEDEFAULT, 0, CW_USEDEFAULT,0, (HWND)NULL, (HMENU)NULL,
       (HINSTANCE)hInstance,NULL);
   if(!hMainWnd)
   {
       MessageBox(NULL,L"Не можно создать основное окно",L"Ошибка",MB_OK);
       return 0;
   }
   //Показываем наше окно
   ShowWindow(hMainWnd, nCmdShow);
   UpdateWindow(hMainWnd);
   //Выполняем цикл обработки сообщений до закрытия программы
   while(GetMessage(&msg,NULL,0,0))  
   {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
   }
   return (int)msg.wParam;    // return был не на том месте
}
//=======================================================================================
LRESULT CALLBACK WindProc(HWND hWnd, UINT uMsg, WPARAM, LPARAM lParam)
{
    HDC hDC;
    PAINTSTRUCT ps;
    RECT rect;
    switch(uMsg)
    {
    case WM_PAINT:
        BeginPaint(hWnd, &ps);             // отсутствовало
        GetClientRect(hWnd, &rect);
        DeawText(hDC, L"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, lParam);
    }
    return 0;
 
}
Теперь странно, останавливается на :
C++
1
2
    DeawText(hDC, L"Hello, World!", -1,&rect,
            DT_SINGLELINE | DT_CENTER | DT_VCENTER);
Ошибка:
c:\documents and settings\admin\рабочий стол\papka\forma_api\forma_api\forma.cpp (62) : error C3861: 'DeawText': identifier not found
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
02.10.2009, 15:53
а что странного?
MSDN тоже функции DeawText не знает.
есть DrawText.
1
 Аватар для Golovastik
11 / 11 / 2
Регистрация: 25.05.2009
Сообщений: 435
02.10.2009, 16:15  [ТС]
Подкоректировал:

C++
1
2
         DeawText(hDC, L"Hello, World!", -1,&rect,
            DT_SINGLELINE | DT_CENTER | DT_VCENTER);

Заменил на DrawText
последняя извилина на этом месте:


C++
1
  return DefWindowProc(hWnd,uMsg, wParam, lParam);
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
02.10.2009, 16:30
судя по твоему коду, он не знает, что такое wParam
где ты-то нашел такую переменную?
0
 Аватар для Golovastik
11 / 11 / 2
Регистрация: 25.05.2009
Сообщений: 435
02.10.2009, 16:48  [ТС]
Так в книге написанно,я по книге изучаю. Что необходимо здесь поменять?
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
02.10.2009, 18:21
ну, но идее, вместо
LRESULT CALLBACK WindProc(HWND hWnd, UINT uMsg, WPARAM, LPARAM lParam)
написать
C++
1
LRESULT CALLBACK WindProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
0
 Аватар для Golovastik
11 / 11 / 2
Регистрация: 25.05.2009
Сообщений: 435
02.10.2009, 19:05  [ТС]
Когда заменил,как вы сказали, выдало такое сообщение:
FORMA.obj : error LNK2019: unresolved external symbol "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z) referenced in function _WinMain@16
0
 Аватар для Goodwin98
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
02.10.2009, 19:49
А если имя поменять обратно на WndProc ?
А еще от BeginPaint надо бы hDC получать.
C++
1
hDC=BeginPaint(hWnd, &ps);
0
 Аватар для Golovastik
11 / 11 / 2
Регистрация: 25.05.2009
Сообщений: 435
02.10.2009, 19:56  [ТС]
Программа выдаёт белую форму с исключением,если заменить как вы сказали,вот фото,что происхдит.
После этого, полностью виснет компьютер.
Миниатюры
НЕ компилится проект на студии 2005  
0
 Аватар для Goodwin98
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
02.10.2009, 20:00
То, что я написал про hDC вы исправили?
1
 Аватар для Golovastik
11 / 11 / 2
Регистрация: 25.05.2009
Сообщений: 435
02.10.2009, 20:04  [ТС]
Всё,заработало,когда прописал,спасибо.
0
 Аватар для Goodwin98
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
02.10.2009, 20:10
Пожалуйста.
0
 Аватар для Golovastik
11 / 11 / 2
Регистрация: 25.05.2009
Сообщений: 435
02.10.2009, 20:20  [ТС]

Спасибо,просто не успел прочитать,так как вы добавили позже.

Тут уже мучался до этого, по книге не мог найти, не скажете как разместить кнопку Батон1, как в билдере, только здесь по центру?
Ещё вопрос,почему в коментарии вы прописали "Ошибка".
C++
1
         EndPaint(hWnd,&ps);              // ошибка
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.10.2009, 20:20
Помогаю со студенческими работами здесь

coredll.dll Не компилируется проект Visual 2005
Всем привет. У меня: Проект(диалог ) + tools.dll начинаю компилировать Debug: Пишет не найдена coredll.dll (скачали и залили в...

Как создать оконный проект в MS Visual C++ 2005 ?
Только что установил, ожидал найти пункт Win32 Application, но увы. Я нуб, но все же как мне создать проект, в который включен MFC?

Не компилится проект
Здравствуйте. Недавно начал изучать OpenGL. С книги в точности переписал проект и начал компилировать, но компиль выдает ошибки ...

Не компилится проект
Дано задание: http://code.makery.ch/library/javafx-8-tutorial/ru/part1/ Я все сделал как так как сказано, но проект выполняется с...

Не компилится проект
Доброго времени суток, форумчане! Обращаюсь к супермегаспецам по Java, подскажите почему не компилится проект, несколько дней над ним...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru