294 / 200 / 6
Регистрация: 23.10.2010
Сообщений: 1,173
Записей в блоге: 1
1

Как создать окно в WinAPI

27.08.2011, 10:21. Показов 10687. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
У кого среда Rad Studio помогите!!! почему не создаётся окно через WinAPI, компиль ругается на 2 файла OBJ, кому не трудно напишите код правильного создания окна, в гугле искал, но сколько исходников не находил все не работают, может дело в моей среде???
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.08.2011, 10:21
Ответы с готовыми решениями:

Как создать окно на WinAPI
Здравствуйте ,я хочу создать окно на WinAPI ,как я выяснил есть такая функция как CreateWindow();...

Как создать блокирующее окно используя WinAPI?
Необходимо создать окно, которое будет полностью блокировать работу пользователя, пока он его не...

Создать окно WinAPI
выдает ошибку с2059: синтаксическая ошибка:, ругается на эту строчку hwnd =...

Не могу создать окно WINAPI
#define WIN32_LEAN_AND_MEAN #include<cstdlib> #include<math.h> #include<windows.h>...

4
174 / 170 / 19
Регистрация: 31.08.2010
Сообщений: 573
27.08.2011, 11:12 2
лучше всего переходи на Visual C++, она родная для создания чистых win api приложений. RAD Studio, а в твоем конкретном случае, скорее всего C++ Builder, заточен под работу с VCL, поэтому будет сложнее писать под WinApi. Обычные приложения там не прокатят, которые пишутся в книгах по WinAPI.

Если все-таки хочешь писать на C++Builder, то ищи как писать Win32API под C++Builder

Покажи код, который ты хочешь скомпилировать
0
294 / 200 / 6
Регистрация: 23.10.2010
Сообщений: 1,173
Записей в блоге: 1
27.08.2011, 11:50  [ТС] 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
#include "windows.h"
 
HINSTANCE hInst;        //дискриптор приложения
char szClassName[]="WindowAppClass";
 
BOOL RegClass(WNDPROC,LPCTSTR,UINT);    //РЕГИСТРАЦИЯ ОКНА
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);//ОБРАБОТЧИК ОКНА
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR IpszCmdLine, int nCmdShow)
{
MSG msg;
HWND hwnd;
hInst = hInstance;
if (!RegClass(WndProc,(LPCTSTR)szClassName,COLOR_WINDOW))
    return FALSE;
hwnd = CreateWindow((LPCTSTR)szClassName,(LPCTSTR)"test",
                    WS_OVERLAPPEDWINDOW | WS_VISIBLE,CW_USEDEFAULT,
                    CW_USEDEFAULT,CW_USEDEFAULT, CW_USEDEFAULT,
                    0, 0, hInstance, NULL);
if (!hwnd) return FALSE;
while (GetMessage(&msg,0,0,0)) DispatchMessage(&msg);
return (int)msg.wParam;
}

[ILINK32 Error] Error: Unresolved external '_main' referenced from C:\PROGRAM FILES\EMBARCADERO\RAD STUDIO\8.0\LIB\WIN32\RELEASE\C0X32.OBJ

хотя я вроде бы созда WinMAIN а он его всё ещё требует
0
174 / 170 / 19
Регистрация: 31.08.2010
Сообщений: 573
27.08.2011, 12:15 4
у тебя неполный код. Вот такой код должен работать (у меня на Visual C++ 2010 Express работает)

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
#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    = L"MyClass";
    wc.hIconSm          = LoadIcon(NULL, IDI_APPLICATION);
 
    // регистрируем класс окна
    if (!RegisterClassEx(&wc))
    {
        MessageBox(NULL, L"Cannot register class", L"Error", MB_OK);
        return 0;
    }
 
    // создаем основное окно приложения
    hMainWnd = CreateWindow(L"MyClass", L"A Hello1 Application", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, (HWND)NULL, (HMENU)NULL, (HINSTANCE)hInstance, NULL);
 
    if (!hMainWnd)
    {
        MessageBox(NULL, L"Cannot create main window", L"Error", MB_OK);
        return 0;
    }
 
    // Показываем наше окно
    ShowWindow(hMainWnd, nCmdShow);
    // UpdateWindow(hMainWnd);
 
    // Выполняем цикл обработки сообщений до закрытия приложения
    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
 
    return msg.wParam;
}
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    HDC hDC;
    PAINTSTRUCT ps;
    RECT rect;
 
    switch(uMsg)
    {
    case WM_PAINT:
        hDC = BeginPaint(hWnd, &ps);
 
        GetClientRect(hWnd, &rect);
        DrawText(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;
}
Выводит просто окно и в центре окна рисует текст "Hello world"
2
294 / 200 / 6
Регистрация: 23.10.2010
Сообщений: 1,173
Записей в блоге: 1
27.08.2011, 13:33  [ТС] 5
Спасибо! Тема закончена
0
27.08.2011, 13:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.08.2011, 13:33
Помогаю со студенческими работами здесь

Помогите создать окно на WinAPI c помощью классов
Добрый день всем.Хочу создать окно на основе классов,то есть регистрацию окна,создание,показ на...

Создать окно аналог WinApi
Вопрос наверное глупый,но пока нет понимания. С недавних пор стал счастливым обладателем Ubuntu...

Как через WinAPI реализовать окно?
У меня код, и в одной функции int doLauncher() { // КОД ЛАУНЧЕРА return 0; } нужно...

Как добавить Internet Explorer в WinAPI окно
Ну как например в C# элемент webbrowser... ну вы поняли про что я... есть окно...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru