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

WinApi Пятнашки ошибка

28.11.2015, 00:44. Показов 978. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите разобраться с ошибкой.16 кнопок на вывод и вывод цифр на каждую из 16ти по массиву.

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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
// stdafx.h : include file for standard system include files,
//  or project specific include files that are used frequently, but
//      are changed infrequently
//
 
#if !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_)
#define AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_
 
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
 
#define WIN32_LEAN_AND_MEAN     // Exclude rarely-used stuff from Windows headers
 
#include <windows.h>
#include <string.h>
#include <stdio.h>
 
#include <stdlib.h>
#include <vector>
using namespace std;
#include "PointStruct.h"
 
 
 
LRESULT CALLBACK WFunc (HWND,UINT,WPARAM,LPARAM);
void MyLine(HDC hdc, MyPoint pt, MyPoint pt1);
void ShowMas(HWND[],int[]);
TCHAR str[256] = "";
#include <time.h> 
 
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
 
#endif // !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_)
/////////////////////////////////////////////////////////////////////////////////////////////
// Sceleton.cpp : Defines the entry point for the application.
//
 
#include "stdafx.h"
 
 
 
char name[]="Qwerty";//Необходимо для регистрации окна
 
HINSTANCE hInst;
int APIENTRY WinMain(HINSTANCE hInstance,//хендлер приложения
                     HINSTANCE ,
                     LPSTR     lpCmdLine,//командная строка
                     int       nCmdShow)//вид окна
{
    
    hInst = hInstance;
    // 1.Создание внешнего вида ОКНА
    WNDCLASS win;//объект для информации об окне
    win.style=CS_HREDRAW|CS_VREDRAW;//Стили перерисовки
    win.lpfnWndProc=WFunc;//Имя оконной функции
    win.cbClsExtra=win.cbWndExtra=0;
    win.hInstance=hInstance;//имя приложения, к которому привязано окно
    win.hIcon=LoadIcon(NULL,IDI_ASTERISK);//иконка, идентификатор иконки ID_APPLIKATION
    win.hCursor=LoadCursor(NULL,IDC_ARROW); //курсор
    win.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);//Цвет фона
    win.lpszMenuName=NULL;//меню отсутствует
    win.lpszClassName=name;//Имя для регистрации
 
    //2.Регистрация окна в Операционной системе
    if (!RegisterClass(&win))
    {
        MessageBox(NULL,"Окно не зарегистрировано","Ошибка",MB_OK);
        return -1;//если окно не зарегистрировано
    }
 
    //3.Создание ОКНА
    HWND hwnd; //Объявление хендлера Окна
    static int x = 500-6,y=520-45;
    hwnd=CreateWindow(name,"Первое окно",WS_OVERLAPPEDWINDOW|WS_VISIBLE,0,0,
                      x,y,HWND_DESKTOP,NULL,hInstance,NULL);//Создание хендлера Окна
    
 
    //4*.Отображение окна
 
    //ShowWindow(hwnd,nCmdShow); //nCmdShow - для показа  окна
    //UpdateWindow (hwnd); //обновить сразу окно - перерисовка
 
    //5.создание насоса сообщений
    MSG msg; //описание переменной Сообщения
    while (GetMessage(&msg,0,0,0))
    {
        TranslateMessage(&msg);  //разрешает использовать клавиатуру
        DispatchMessage(&msg); //отправка обработанного сообщения в ОС
    }
    return msg.wParam; //корректное закрытие основной программы
}
 
 
/////////////////////////////////////////////////////////////////////////////////////////////////
// stdafx.cpp : source file that includes just the standard includes
//  Sceleton.pch will be the pre-compiled header
//  stdafx.obj will contain the pre-compiled type information
 
#include "stdafx.h"
 
extern HINSTANCE hInst;
 
LRESULT CALLBACK WFunc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    static HWND hBut[16], hStat, hStat1, hStat2, hStat3, hStat4, hStat5,
        hStat6, hStat7, hStat8, hStat9, hStat10, hStat11, hStat12, hStat13, hStat14, hStat15, hStat16;
    static int mas[16];
    //HDC hdc;
    PAINTSTRUCT ps;
    static double sx, sy;
    
    static int i,j;
    //HINSTANCE hPrevInstance;
    time_t t;
    static int x = 500 - 6, y = 520 - 45;
    
    switch (message)
    {
    case WM_CREATE:
        srand((unsigned)time(&t));
        
            hStat = CreateWindow("Пятнашки", "Первое окно", WS_OVERLAPPEDWINDOW | WS_VISIBLE, 0, 0,
            x, y, HWND_DESKTOP, NULL, hInst, NULL);//Создание хендлера Окна
 
        for (i = 0; i<16; i++)
        {
        xyz: mas[i] = rand() % 16;
                goto xyz;
        }
        ShowMas(hBut,mas);//Ошибка изза этой функции, как переделать чтобы выводила порядковый номер
 
        break;
        for (i = 0; i<16; i++)
            /*1*/hStat1 = CreateWindow("BUTTON","hBut[i]", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 0, 0, 0.25*x, 0.25*y, hwnd, (HMENU)10000, hInst, NULL);
        /*2*/hStat2 = CreateWindow("BUTTON", "hBut[i]", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 0.25*x, 0, 0.25*x, 0.25*y, hwnd, (HMENU)10000, hInst, NULL);
        /*3*/hStat3 = CreateWindow("BUTTON", "hBut[i]", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 0.5*x, 0, 0.25*x, 0.25*y, hwnd, (HMENU)10000, hInst, NULL);
        /*4*/hStat4 = CreateWindow("BUTTON", "hBut[i]", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 0.75*x, 0, 0.25*x, 0.25*y, hwnd, (HMENU)10000, hInst, NULL);
        /*5*/hStat5 = CreateWindow("BUTTON", "hBut[i]", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 0, 0.25*y, 0.25*x, 0.25*y, hwnd, (HMENU)10000, hInst, NULL);
        /*6*/hStat6 = CreateWindow("BUTTON", "hBut[i]", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 0.25*x, 0.25*y, 0.25*x, 0.25*y, hwnd, (HMENU)10000, hInst, NULL);
        /*7*/hStat7 = CreateWindow("BUTTON", "hBut[i]", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 0.5*x, 0.25*y, 0.25*x, 0.25*y, hwnd, (HMENU)10000, hInst, NULL);
        /*8*/hStat8 = CreateWindow("BUTTON", "hBut[i]", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 0.75*x, 0.25*y, 0.25*x, 0.25*y, hwnd, (HMENU)10000, hInst, NULL);
        /*9*/hStat9 = CreateWindow("BUTTON", "hBut[i]", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 0, 0.5*y, 0.25*x, 0.25*y, hwnd, (HMENU)10000, hInst, NULL);
        /*10*/hStat10 = CreateWindow("BUTTON", "hBut[i]", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 0.25*x, 0.5*y, 0.25*x, 0.25*y, hwnd, (HMENU)10000, hInst, NULL);
        /*11*/hStat11 = CreateWindow("BUTTON", "hBut[i]", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 0.5*x, 0.5*y, 0.25*x, 0.25*y, hwnd, (HMENU)10000, hInst, NULL);
        /*12*/hStat12 = CreateWindow("BUTTON", "hBut[i]", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 0.75*x, 0.5*y, 0.25*x, 0.25*y, hwnd, (HMENU)10000, hInst, NULL);
        /*13*/hStat13 = CreateWindow("BUTTON", "hBut[i]", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 0, 0.75*y, 0.25*x, 0.25*y, hwnd, (HMENU)10000, hInst, NULL);
        /*14*/hStat14 = CreateWindow("BUTTON", "hBut[i]", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 0.25*x, 0.75*y, 0.25*x, 0.25*y, hwnd, (HMENU)10000, hInst, NULL);
        /*15*/hStat15 = CreateWindow("BUTTON", "hBut[i]", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 0.5*x, 0.75*y, 0.25*x, 0.25*y, hwnd, (HMENU)10000, hInst, NULL);
        /*16*/hStat16 = CreateWindow("BUTTON", "hBut[i]", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 0.75*x, 0.75*y, 0.25*x, 0.25*y, hwnd, (HMENU)10000, hInst, NULL);
 
        break;
    case WM_SIZE:
    
        MoveWindow(hwnd, 50, 50, 500, 500, TRUE);
        break;
    
    case WM_PAINT:
        
        EndPaint(hwnd,&ps);
        break;
 
        
    case WM_DESTROY:
                    PostQuitMessage(0); //корректная обработка окончания сообщения
                    break;
    default:
        return
            DefWindowProc(hwnd,message,wParam,lParam);//возврат неотработанного сообщения
    }
    return 0L;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.11.2015, 00:44
Ответы с готовыми решениями:

VisualStudio+WinApi ошибка
VisualStudio 2015. #include&lt;WIndows.h&gt; HWND hWnd = FindWindow(NULL,TEXT(&quot;&quot;)); HDC hDC = GetDC(hWnd); int main() { ...

В коде WinAPI ошибка
помогите пожалуйста найти ошибку в коде программы, строил на C++ в Microsoft Visual C++ 2010 Express lb.cpp #include...

В чем тут ошибка WinApi
В чем тут ошибка ? #include &lt;windows.h&gt; MainWinProc() LRESULT CALLBACK MainWinProc (HWND hwnd, UNIT msg, ...

2
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
28.11.2015, 10:32
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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
#include "stdafx.h"
#include "Win32Project1_кнопки.h"
#include <cstdlib>
#include <ctime>
 
#define MAX_LOADSTRING 100
 
// Глобальные переменные:
HINSTANCE hInst;                                // текущий экземпляр
TCHAR szTitle[MAX_LOADSTRING];                  // Текст строки заголовка
TCHAR szWindowClass[MAX_LOADSTRING];            // имя класса главного окна
 
// Отправить объявления функций, включенных в этот модуль кода:
ATOM                MyRegisterClass(HINSTANCE hInstance);
BOOL                InitInstance(HINSTANCE, int);
LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
INT_PTR CALLBACK    About(HWND, UINT, WPARAM, LPARAM);
 
int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
                     _In_opt_ HINSTANCE hPrevInstance,
                     _In_ LPTSTR    lpCmdLine,
                     _In_ int       nCmdShow)
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);
 
    // TODO: разместите код здесь.
    MSG msg;
    HACCEL hAccelTable;
 
    // Инициализация глобальных строк
    LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
    LoadString(hInstance, IDC_WIN32PROJECT1_, szWindowClass, MAX_LOADSTRING);
    MyRegisterClass(hInstance);
 
    // Выполнить инициализацию приложения:
    if (!InitInstance (hInstance, nCmdShow))
    {
        return FALSE;
    }
 
    hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_WIN32PROJECT1_));
 
    srand(time(NULL));
 
    // Цикл основного сообщения:
    while (GetMessage(&msg, NULL, 0, 0))
    {
        if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
    }
 
    return (int) msg.wParam;
}
 
 
 
//
//  ФУНКЦИЯ: MyRegisterClass()
//
//  НАЗНАЧЕНИЕ: регистрирует класс окна.
//
ATOM MyRegisterClass(HINSTANCE hInstance)
{
    WNDCLASSEX wcex;
 
    wcex.cbSize = sizeof(WNDCLASSEX);
 
    wcex.style          = CS_HREDRAW | CS_VREDRAW;
    wcex.lpfnWndProc    = WndProc;
    wcex.cbClsExtra     = 0;
    wcex.cbWndExtra     = 0;
    wcex.hInstance      = hInstance;
    wcex.hIcon          = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WIN32PROJECT1_));
    wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);
    wcex.hbrBackground  = (HBRUSH)(COLOR_WINDOW+1);
    wcex.lpszMenuName   = MAKEINTRESOURCE(IDC_WIN32PROJECT1_);
    wcex.lpszClassName  = szWindowClass;
    wcex.hIconSm        = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
 
    return RegisterClassEx(&wcex);
}
 
//
//   ФУНКЦИЯ: InitInstance(HINSTANCE, int)
//
//   НАЗНАЧЕНИЕ: сохраняет обработку экземпляра и создает главное окно.
//
//   КОММЕНТАРИИ:
//
//        В данной функции дескриптор экземпляра сохраняется в глобальной переменной, а также
//        создается и выводится на экран главное окно программы.
//
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
   HWND hWnd;
 
   hInst = hInstance; // Сохранить дескриптор экземпляра в глобальной переменной
 
   hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW & ~WS_SIZEBOX,
      CW_USEDEFAULT, 0, 500, 500, NULL, NULL, hInstance, NULL);
 
   if (!hWnd)
   {
      return FALSE;
   }
 
   ShowWindow(hWnd, nCmdShow);
   UpdateWindow(hWnd);
 
   return TRUE;
}
 
//
//  ФУНКЦИЯ: WndProc(HWND, UINT, WPARAM, LPARAM)
//
//  НАЗНАЧЕНИЕ:  обрабатывает сообщения в главном окне.
//
//  WM_COMMAND  - обработка меню приложения
//  WM_PAINT    -Закрасить главное окно
//  WM_DESTROY   - ввести сообщение о выходе и вернуться.
//
//
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    int wmId, wmEvent;
    PAINTSTRUCT ps;
    HDC hdc;
 
    static HWND hBut[16];
    static int mas[16];
    TCHAR s[20];
    RECT r;
    int w, h;
 
    switch (message)
    {
    case WM_COMMAND:
        wmId    = LOWORD(wParam);
        wmEvent = HIWORD(wParam);
        // Разобрать выбор в меню:
        switch (wmId)
        {
        case IDM_ABOUT:
            DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
            break;
        case IDM_EXIT:
            DestroyWindow(hWnd);
            break;
        default:
            return DefWindowProc(hWnd, message, wParam, lParam);
        }
        break;
    case WM_PAINT:
        hdc = BeginPaint(hWnd, &ps);
        // TODO: добавьте любой код отрисовки...
        EndPaint(hWnd, &ps);
        break;
    case WM_CREATE:
 
        for (int i = 0; i < 16; ++i) mas[i] = rand() % 16;
 
        GetClientRect(hWnd, &r);
        w = r.right / 4;
        h = r.bottom / 4;
 
        for (int i = 0; i < 4; ++i)
            for (int j = 0; j < 4; ++j)
            {
                wsprintf(s, TEXT("%d"), mas[i * 4 + j]);
                hBut[i * 4 + j] = CreateWindow(TEXT("BUTTON"), s, WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, j * w, i * h, w, h, hWnd, (HMENU)(10000 + i * 4 + j), hInst, NULL);
            }
 
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}
 
// Обработчик сообщений для окна "О программе".
INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    UNREFERENCED_PARAMETER(lParam);
    switch (message)
    {
    case WM_INITDIALOG:
        return (INT_PTR)TRUE;
 
    case WM_COMMAND:
        if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
        {
            EndDialog(hDlg, LOWORD(wParam));
            return (INT_PTR)TRUE;
        }
        break;
    }
    return (INT_PTR)FALSE;
}
Миниатюры
WinApi Пятнашки ошибка  
0
518 / 410 / 188
Регистрация: 08.04.2013
Сообщений: 1,750
28.11.2015, 13:39
Пятнашки почти работают правильно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.11.2015, 13:39
Помогаю со студенческими работами здесь

Netsh.exe ошибка winapi
Netsh.exe ошибка winapi как я могу её исправить в своём проекте?

Оболочка для создания окон WinAPI и ошибка LNK2001
Хочу сделать для себя оболочку для создания окон WinAPI, но не могу решить ошибку LNK2001. Вот код: SKLWindow.h #include...

Ошибка при загрузке иконки и курсора (winapi, dev c++)
Всем доброго вечера! Изучаю winapi и как раз дошла до темы загрузки пользовательских иконок и курсоров в учебнике Петцольда. Программку...

WINAPI. Меню. Ошибка: "fatal error RC1004: unexpected end of file found"
Не понимаю в чём причина. Меню: #include &quot;resource.h&quot; myMenu MENU { POPUP &quot;File&quot; { MENUITEM...

Ошибка при запуске приложения из приложения WinAPI
Здравствуйте. Есть следующий код, найденный на просторах интернета. int main(int argc, char **argv) { STARTUPINFO si; ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru