Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 13.04.2011
Сообщений: 7

Создать окно в Visual C++ 10 под Windows7

13.04.2011, 02:39. Показов 1749. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Может есть какой-то подробный туториал для тех, кто в танке??? Проги, написанные под vist'ой на VC++2005 тупо не запускаются
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.04.2011, 02:39
Ответы с готовыми решениями:

VirtualBox: можно ли установить гостевую Windows7 под хостовой системой Windows7?
можно ли установить Virtual Box с операционкой Windows 7 в реальную среду Windows 7 чтобы работать в виртуалке и ничего не повредить в...

Не модальное окно (без MFC) под Visual Studio
Есть диалоговое окно, которое создавалось через методы Visual Studio(2005) -> New Dialog в окне списков диалоговых окон. В меню Properties...

Как создать форму-новое окно в Visual Studio?
как создать форму-новое окно в visual studio? чтобы туда пихнуть processbar и вызов другой формы?

15
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
13.04.2011, 08:45
Что пишет при попытке запуска?
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
13.04.2011, 14:49
Пишут, что vcredist.exe установить надо.)))
0
0 / 0 / 0
Регистрация: 13.04.2011
Сообщений: 7
14.04.2011, 04:47  [ТС]
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
#include <Windows.h>
 
HWND hWnd;
void Main();
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam);
 
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, LPARAM lparam, WPARAM wparam)
{
    switch (msg)
    {
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    }
 
    return DefWindowProc(hwnd, msg, wparam, lparam);
}
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
    WNDCLASS wc;
 
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
    wc.hCursor = LoadCursor(0, IDC_ARROW);
    wc.hIcon = LoadIcon(0, IDI_APPLICATION);
    wc.hInstance = hInstance;
    wc.lpfnWndProc = (WNDPROC)WndProc;
    wc.lpszClassName = L"WC1";
    wc.lpszMenuName = 0;
    wc.style = CS_HREDRAW | CS_VREDRAW;
 
    if(!RegisterClass(&wc))
    {
        MessageBox(0, L"RegisterClass()", L"FAILED", MB_OK | MB_ICONERROR);
        return E_FAIL;
    }
 
    hWnd = CreateWindow(L"WC1", L"base", 
        WS_OVERLAPPED | WS_SYSMENU,
        0, 0, 800, 600, 0, 0, hInstance, NULL); 
    if(!hWnd)
    {
        MessageBox(0, L"CreateWindow()", L"FAILED", MB_OK | MB_ICONERROR);
        return E_FAIL;
    }
 
    ShowWindow(hWnd, SW_SHOW);
    UpdateWindow(hWnd);
 
    MSG msg;
    ZeroMemory(&msg, sizeof(MSG));
 
    while(msg.message != WM_QUIT)
    {
        if(PeekMessage(&msg, 0, 0, 0, PM_REMOVE))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
        else
        {
            Main();
        }
    }
 
    return msg.wParam;
}
 
void Main()
{
}
при компиляции пишет:"ссылка на внешний символ "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z) неразрешена в функции _WinMain@16

Добавлено через 5 минут
Цитата Сообщение от M128K145 Посмотреть сообщение
Что пишет при попытке запуска?
"Программа не запускается! (5)", но только откомпилированные с debug-конфигурацией. Есть одна с "release" - запускается!
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
14.04.2011, 07:05
Цитата Сообщение от doYob Посмотреть сообщение
но только откомпилированные с debug-конфигурацией.
Не хватает отладочных версий MFC'ей. vcredist.exe для дебага, кажется, нету. Нужно или вручную библиотеки к проге скопировать или компилятор установить. А лучше собрать в релизе.
0
Brainsbreaker
 Аватар для Digit@ll
899 / 374 / 54
Регистрация: 01.02.2011
Сообщений: 1,608
14.04.2011, 07:21
)), Deviaphan, до релиза дело не дойдет...

doYob, у меня этот код и на XP под VS 6.0 не компилируется.
!!? убрать раз:
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, LPARAM lparam, WPARAM wparam)
убрать все, что с этим связано два:
void Main();
И hWnd зачем-то глобально...
0
0 / 0 / 0
Регистрация: 13.04.2011
Сообщений: 7
14.04.2011, 14:55  [ТС]
а у меня всё компилировалось на vc++2005:black_eye.:
hwnd глобально - так мне удобнее
0
Brainsbreaker
 Аватар для Digit@ll
899 / 374 / 54
Регистрация: 01.02.2011
Сообщений: 1,608
14.04.2011, 23:04
Цитата Сообщение от doYob Посмотреть сообщение
а у меня всё компилировалось на vc++2005
Ну значит она была у тебя какая-то особенная, в единственном варианте.
Ресурсы проца не жрет? Это тебе для второго глаза...
C++
1
2
3
4
5
6
while(GetMessage(&msg, NULL, 0, 0))
{
    TranslateMessage(&msg);
    DispatchMessage(&msg);
}
return (msg.wParam);
0
0 / 0 / 0
Регистрация: 13.04.2011
Сообщений: 7
15.04.2011, 03:28  [ТС]
ссылка на внешний символ "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)(?WndProc@@YGJPAUHWND__@@IIJ@Z) неразрешена в функции _WinMain@16

Добавлено через 18 минут
попробовал WNDCLASSEX и всё заработало!:dance3:
всем спасибо за внимание
0
Brainsbreaker
 Аватар для Digit@ll
899 / 374 / 54
Регистрация: 01.02.2011
Сообщений: 1,608
15.04.2011, 04:13
Та подожди со "спасибо". А-ну выложи, что ты попробовал...
0
0 / 0 / 0
Регистрация: 13.04.2011
Сообщений: 7
15.04.2011, 15:24  [ТС]
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
#include <Windows.h>
 
void Main();
LRESULT CALLBACK MsgProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam);
 
LRESULT CALLBACK MsgProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
{
    switch(msg)
    {
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    }
 
    return (HRESULT)DefWindowProc(hwnd, msg, wparam, lparam);
}
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
    WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0L, 0L, 
    GetModuleHandle(NULL), NULL, NULL, NULL, NULL,
    L"WC", NULL };
 
    RegisterClassEx( &wc );
 
    HWND hWnd = CreateWindow(L"WC", L"base", 
    WS_OVERLAPPEDWINDOW, 100, 100, 800, 600,
    GetDesktopWindow(), NULL, wc.hInstance, NULL );
 
    ShowWindow(hWnd, SW_SHOW);
    UpdateWindow(hWnd);
 
    MSG msg;
    ZeroMemory(&msg, sizeof(MSG));
 
    while(msg.message != WM_QUIT)
    {
        if(PeekMessage(&msg, 0, 0, 0, PM_REMOVE))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
        else
        {
            Main();
        }
    }
 
    return msg.wParam;
}
 
void Main()
{
}
0
Brainsbreaker
 Аватар для Digit@ll
899 / 374 / 54
Регистрация: 01.02.2011
Сообщений: 1,608
15.04.2011, 15:59
Мда-а, уж... "Я его слепила, из того, что было..."

doYob, ты что, издеваешся?
0
0 / 0 / 0
Регистрация: 13.04.2011
Сообщений: 7
16.04.2011, 03:29  [ТС]
Цитата Сообщение от Digit@ll Посмотреть сообщение
Мда-а, уж... "Я его слепила, из того, что было..."

doYob, ты что, издеваешся?
?????
0
Brainsbreaker
 Аватар для Digit@ll
899 / 374 / 54
Регистрация: 01.02.2011
Сообщений: 1,608
16.04.2011, 11:12
Все равно какая-то странная конструкция:
1. void Main()
2. дубляж (и нафиг не надо) LRESULT CALLBACK MsgProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
3. класс "WC" (что-то новое)
4. PeekMessage (для чего в данном случае? Напроч грузит проц)
В общем все понятно. GetDesktopWindow()...
0
0 / 0 / 0
Регистрация: 13.04.2011
Сообщений: 7
16.04.2011, 15:30  [ТС]
просто привычка всё подряд декларировать, кроме WinMain...
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#include <Windows.h>
#include <WindowsX.h>
#include <D3D11.h>
#include <D3DX11.h>
#include <D3DX10.h>
 
#pragma comment (lib, "d3d11.lib")
#pragma comment (lib, "d3dx11.lib")
#pragma comment (lib, "d3d10.lib")
 
IDXGISwapChain* pSwapChain;
ID3D11Device* pDevice;
ID3D11DeviceContext* pDevCon;
ID3D11RenderTargetView* pRenderTargetView;
 
void Main()
{
    pDevCon->ClearRenderTargetView(pRenderTargetView, D3DXCOLOR(0.0f, 0.2f, 0.4f, 1.0f));
 
    pSwapChain->Present(0, 0);
}
 
HRESULT InitD3D(HWND hwnd)
{
    DXGI_SWAP_CHAIN_DESC scd;
    ZeroMemory(&scd, sizeof(DXGI_SWAP_CHAIN_DESC));
    scd.BufferCount = 1;                                    // one back buffer
    scd.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;     // use 32-bit color
    scd.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;      // how swap chain is to be used
    scd.OutputWindow = hwnd;                                // the window to be used
    scd.SampleDesc.Count = 4;                               // how many multisamples
    scd.Windowed = TRUE;                                    // windowed/full-screen mode
 
    if(FAILED(D3D11CreateDeviceAndSwapChain(NULL, D3D_DRIVER_TYPE_HARDWARE, NULL, NULL, NULL, NULL, 
        D3D11_SDK_VERSION, &scd, &pSwapChain, &pDevice, NULL, &pDevCon)))
    {
        MessageBox(hwnd, L"D3D11CreateDeviceAndSwapChain(..)", L"FAILED", NULL);
        return E_FAIL;
    }
 
    ID3D11Texture2D* pBackBuffer;
    pSwapChain->GetBuffer(0, __uuidof(ID3D11Texture2D), (void**)&pBackBuffer);
    pDevice->CreateRenderTargetView(pBackBuffer, NULL, &pRenderTargetView);
    pBackBuffer->Release();
 
    pDevCon->OMSetRenderTargets(1, &pRenderTargetView, NULL);
 
    D3D11_VIEWPORT viewport;
    ZeroMemory(&viewport, sizeof(D3D11_VIEWPORT));
    viewport.TopLeftX = 100;
    viewport.TopLeftY = 100;
    viewport.Width = 800;
    viewport.Height = 600;
 
    pDevCon->RSSetViewports(1, &viewport);
    
    return S_OK;
}
 
void CleanD3D()
{
    pRenderTargetView->Release();
    pDevCon->Release();
    pDevice->Release();
    pSwapChain->Release();
}
 
LRESULT CALLBACK MsgProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
{
    switch(msg)
    {
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    }
 
    return (HRESULT)DefWindowProc(hwnd, msg, wparam, lparam);
}
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
    WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0L, 0L, 
    GetModuleHandle(NULL), NULL, NULL, NULL, NULL,
    L"WC", NULL };
 
    RegisterClassEx( &wc );
 
    HWND hWnd = CreateWindow(L"WC", L"base", 
    WS_OVERLAPPEDWINDOW, 100, 100, 800, 600,
    NULL, NULL, wc.hInstance, NULL );
 
    ShowWindow(hWnd, SW_SHOW);
    UpdateWindow(hWnd);
 
    InitD3D(hWnd);
 
    MSG msg;
    ZeroMemory(&msg, sizeof(MSG));
 
    while(msg.message != WM_QUIT)
    {
        if(PeekMessage(&msg, 0, 0, 0, PM_REMOVE))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
        else
        {
            Main();
        }
    }
    CleanD3D();
 
    return msg.wParam;
}
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
16.04.2011, 16:01
А зачем десятый директ икс линковать, если одиннадцатый используешь?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.04.2011, 16:01
Помогаю со студенческими работами здесь

Возможно ли создать вместо консоли окно под Windows
Возможно ли создать вместо консоли окно под windows? Какие библиотеки надо подключить? т е можно вывести сообщение в окне по центру...

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

Много ошибок в файле не могу создать простое окно на OpenGL под Win32
Здравствуйте! Я искал в интернете как создать простое окно на OpenGL под Win32 (не консольное) и всегда много ошибок в файле: основная...

Не удаётся создать проект в Visual Studio 2012 Professional под Windows 8.1
Здравствуйте! Такая проблема: попытке создать проект пишет &quot;Не удалось создать &quot;imageSource&quot; на основе текста...

Visual Studio 2011 vs Windows7
Вопрос к тем кто пощупал уже Visual Stusio 2011. Не смотря на то что тип компиляции проекта стоит Release. Приложения Win32 на C++ не...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[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 и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru