Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
12 / 12 / 3
Регистрация: 09.05.2010
Сообщений: 384

Почему возникают ошибки в этом примере??

16.06.2010, 01:05. Показов 1018. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
// Proj.cpp : Defines the entry point for the application.
//
 
 
#include "stdafx.h"
#include "windows.h"
#include "windowsx.h"
 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM,LPARAM);
 
int APIENTRY WinMain(
        HINSTANCE hInstance,
        HINSTANCE hPrevInstance,
        LPSTR lpCmdLine,
        int nCmdShow)
{
    HWND hwnd;
    MSG msg;
    WNDCLASS w;
    char szClassName[]="Hello World";
    memset(&w,0,sizeof(WNDCLASS));
    w.style = CS_HREDRAW | CS_VREDRAW;
    w.lpfnWndProc = WndProc;
    w.cbClsExtra = 0;
    w.cbWndExtra = 0;
    w.hInstance = hInstance;
    w.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    w.hCursor = LoadCursor(NULL, IDC_ARROW);
    w.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
    w.lpszMenuName = NULL;
    w.lpszClassName = szClassName;
    RegisterClass(&w);
    hwnd = CreateWindow("C Windows","C Windows", WS_OVERLAPPEDWINDOW,
        10,10,600,480,NULL,NULL,hInstance,NULL);
    ShowWindow(hwnd,nCmdShow);
    UpdateWindow(hwnd);
    while(GetMessage(&msg,NULL,0,0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.wParam;
}
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT Message, WPARAM wparam,LPARAM lparam)
{
    HDC hDC;
    PAINTSTRUCT PaintStruct;
    RECT Rect;
    switch (Message)
    {case WM_PAINT:
        hDC = BeginPaint(hWnd, &PaintStruct);
        GetClientRect(hWnd,&Rect);
        DrawText(hDC, "Hello world!", -1, &Rect, DT_SINGLELINE|DT_CENTER|DT_VCENTER);
        EndPaint(hWnd, &PaintStruct);
        return 0;
     case WM_DESTROY:
        PostQuitMessage(0);
        return 0;
    }
    return DefWindowProc(hWnd,Message,wparam,lparam);
}
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/Proj.exe : fatal error LNK1120: 1 unresolved externals
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.06.2010, 01:05
Ответы с готовыми решениями:

Почему возникают ошибки при запуске графической оболочки?
Всем привет. Пытаюсь запустить графическую оболочку GNOME3 на только что установленной FreeBSD. Нашел в сети кучу инструкций, как это...

В этом примере Стиль есть а в панели «Стили» не виден. Почему ?
Стиль «ЛБ Список» в панели «управление стилями» - есть, а в панели «Стили» не виден !!! В "Параметры" установлено -...

На моем компе во время установки игры часто возникают ошибки, зависания и ошибки копирования файлов с установочного диска.
Добрый вечер! На моем компе во время установки игры часто возникают ошибки, зависания и ошибки копирования файлов с установочного диска....

3
Заказ софта
 Аватар для Search..
343 / 188 / 21
Регистрация: 26.05.2009
Сообщений: 863
16.06.2010, 01:56
Какие я вижу погрешности в Вашем коде :
0. Код сгенерирован каким-то Wizard из Microsoft Visual Studio.
1. Используется два ненужных заголовочных файла : 1. windowsx.h 2. stdafx.h
2. В строке #20 объявляется массив НЕ UNICODE символов.
3. В строке #31 производится попытка присвоить НЕ UNICODE строку указателю на UNICODE строку.
4. В строке #32 производится регистрация класса окна, но при этом не проверяется возвращаемое значение.
5. В строке #33 вызывается UNICODE версия функции создания окна, а передаются НЕ UNICODE строки.
6. Не проверяется возвращаемое значение функции CreateWindow.
7. В строке #36 вызывается функция UpdateWindow, хотя она на самом деле не нужна ( хоть о ней и пишут в книгах ).
8. В конструкции switch оконной процедуры нет такого кода:

C++
1
2
default:
    return DefWindowProc(hWnd, Message, wparam, lparam);
9. В строке #61 вместо FALSE возвращается результат работы функции DefWindowProc, которая должна быть там, где описано выше.


Вот Вам пример нормального Hello World с использованием WinAPI :

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
#define  UNICODE
#define _UNICODE
 
#include <windows.h>
#include <tchar.h>
 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
 
INT WINAPI _tWinMain(HINSTANCE hInst, HINSTANCE, PTSTR pszCmd, INT iSc)
{
    MSG msg;
    HWND hWnd;
    WNDCLASSEX wnd;
 
    wnd.cbSize      = sizeof(wnd);
    wnd.cbClsExtra      = NULL;
    wnd.cbWndExtra      = NULL;
    wnd.hbrBackground   = (HBRUSH)GetStockObject(WHITE_BRUSH);
    wnd.hCursor     = LoadCursor(NULL, IDC_ARROW);
    wnd.hIcon       = LoadIcon(NULL, IDI_WINLOGO);
    wnd.hIconSm     = LoadIcon(NULL, IDI_WINLOGO);
    wnd.hInstance       = hInst;
    wnd.lpfnWndProc     = WndProc;
    wnd.lpszClassName   = _T("My_class_name");
    wnd.lpszMenuName    = NULL;
    wnd.style       = CS_HREDRAW | CS_VREDRAW;
 
    if(!RegisterClassEx(&wnd))
    {
        // Error ...
        // MessageBox(NULL, _T("ERROR #1"), _T("Error"), MB_ICONSTOP | MB_OK);
        return FALSE;
    }
 
    hWnd = CreateWindowEx(NULL, _T("My_class_name"), _T("WinAPI Programme"), WS_OVERLAPPEDWINDOW, 200, 200, 500, 300, 0, 0, hInst, 0);
 
    if(!hWnd)
    {
        // Error ...
        // MessageBox(NULL, _T("ERROR #2"), _T("Error"), MB_ICONSTOP | MB_OK);
        return FALSE;
    }
 
    ShowWindow(hWnd, iSc);
 
    while(GetMessage(&msg, NULL, NULL, NULL))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
 
    return msg.wParam;
}
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    HDC hDC;
    PAINTSTRUCT ps;
    static RECT rect;
 
    switch(uMsg)
    {
    case WM_PAINT:
        hDC = BeginPaint(hWnd, &ps);
        DrawText(hDC, _T("Hello Win32 world ! :)"), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
        EndPaint(hWnd, &ps);    
        break;
 
    case WM_SIZE:
        GetClientRect(hWnd, &rect);
        break;
 
    case WM_CLOSE:
        DestroyWindow(hWnd);
        break;
 
    case WM_DESTROY:
        PostQuitMessage(NULL);
        break;
 
    default:
        return DefWindowProc(hWnd, uMsg, wParam, lParam);
    }
 
    return FALSE;
}
0
306 / 187 / 26
Регистрация: 14.02.2010
Сообщений: 547
16.06.2010, 22:16
Проект типа "Console Application", судя по тому, что компилятор ищет "main" в качестве точки входа,
а у Вас она обозвана WinMain - для проекта типа "Windows Application".
Поменяйте тип проекта
0
1130 / 789 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
23.06.2010, 15:24
Первый параметр CreateWindow - имя класса( один из возможных вариантов).
C++
1
2
3
4
5
6
        hwnd = CreateWindow( szClassName,"C Windows", WS_OVERLAPPEDWINDOW,
                10,10,600,480,NULL,NULL,hInstance,NULL);
        if ( !hwnd ) { 
            MessageBox(  NULL, "CreateWindow : error ", "Error", MB_OK|MB_ICONERROR); 
            return 1; 
        }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.06.2010, 15:24
Помогаю со студенческими работами здесь

В php возникают ошибки
Всем привет! прошу помощи так как я сам не могу разобраться. Я переношу сайт на opencart. Но в php, возникают ошибки при чем при подсветке...

Периодически возникают ошибки подключения
Вот такие ошибочки

Возникают 2 ошибки, не пойму из-за чего
const Cons = ; type TChars = array of Char; procedure ExcludeStr(var m: TChars; const s: String); var e: Char; begin for e in s...

Сериализация по примерам, возникают ошибки
Доброй ночи. В общем, не могу понять в чём заключается ошибка, создаю пустые параметры конструктора, как написано на многих сайтах и в...

При запуске лазаруса возникают ошибки
При установке лазаруса стоял антивирус аваст с deep screen и усиленным режимом. Он во время установки блокировал пару файлов, но я их...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru