Форум программистов, компьютерный форум CyberForum.ru

KeyDown не работает - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ МАССИВ СТРУКТУР. очень нужно http://www.cyberforum.ru/cpp-beginners/thread127599.html
Здравствуйте люди добрые! Помогите с задачкой по С :"Разработать подалгоритм удаления заданного по номеру элемента массива структурных данных, если значение определённого поля совпадает со значением одноименного поля в каком либо другом элементе массива. Вроде легкая но не могу сделать и все хотя даже понимаю что происходит! Заранее спасибо!
C++ Не работает конструкция с new char**ex=new char*; for(i=0;i<n;i++) ex=new char; for(i=0;i<n;i++) cin>>ex; почему не работает http://www.cyberforum.ru/cpp-beginners/thread127592.html
Сообщение WM_MOUSEWHEEL C++
Подскажите а как можно определить направление прокрутки колесика, сообщение отлавливаю в WM_MOUSEWHEEL, а как определить вверх или вниз идет прокрутка не понятно !?
C++ связной список
Кто знает как сделать односвязной список для динамических масивов??????
C++ Создать одномерный массив, содержащий индексы элементов матрицы, меньших числа, введенного с клавиатуры http://www.cyberforum.ru/cpp-beginners/thread127570.html
Помогите решить задачки 1.Дан одномерный массив, состоящий из 17 вещественных чисел. Создать другой массив, содержащий элементы исходного массива в порядке их следования, пока их сумма не превысит число, введенное с клавиатуры. 2.Дана матрица 6х8 целого типа. Создать одномерный массив, содержащий индексы элементов матрицы, меньших числа, введенного с клавиатуры. 3.Дана матрица 6х8....
C++ Распечатать подстроки из каждой строки, заключенные в кавычки Даны две строки, содержащие не более 100 символов. Строки состоят из слов, разделенных пробелами. Распечатать подстроки из каждой строки, заключенные в кавычки. Сообщить количество вхождений таких «цитат» в каждую строку. помогите пожалуйста решить!!! подробнее

Показать сообщение отдельно
ssashas
0 / 0 / 0
Регистрация: 17.03.2009
Сообщений: 20
10.05.2010, 17:56     KeyDown не работает
Здравствуйте, я пишу программу судоку и сделал так что при нажатии на клеточку она выделяется после этого юзер нажимает клавишу с цифрой на клавиатуре и цифра ставится в клеточку. После этого я добавил кнопку и сообщение KEYDOWN перестало обрабатываться.
P. S. диалог я создаю в ресурсах(пустой диалог без кнопок с именем DIALOG).
P. P. S. Еще при вводе цифр в клетки одна из нижних клеток обнуляется и в нее невозможно ничего записать.
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
#include <windows.h>
#include <stdio.h>
#include "resource.h"
int s[9][9], otv[9][9], col[9][9];
int xPos,yPos;
int flag=0;
 
void Rand(int s[][9])
{
        for(int i=0;i<3;i++)
                for(int j=0;j<3;j++)
                {
                        int x1=rand()%3;
                        int y1=rand()%3;
                        int x2=x1, y2=y1;
                        while (x2==x1 && y2==y1) 
                        { 
                                x2=rand()%3;
                                y2=rand()%3;
                        }
                        int x3=x1,y3=y1;
                        while ((x3==x1 && y3==y1) || (x3==x2 && y3==y2))
                        {
                                x3=rand()%3;
                                y3=rand()%3;
                        }
                        s[x1+i*3][y1+j*3]=0;
                        s[x2+i*3][y2+j*3]=0;
                        s[x3+i*3][y3+j*3]=0;
                }
}
 
 
int WINAPI fn(HWND hwnd,int cmd,WPARAM wp,LPARAM lp)
{
        switch(cmd)
        {
 
        case WM_CLOSE:
        {
                EndDialog(hwnd,1);
                return 0;
        }
        
 
        case WM_INITDIALOG:
        {
                char c[6];
                c[0]=rand()%2+'1';
                c[1]='.';c[2]='s';c[3]='u';c[4]='d';c[5]=0;
                FILE * f=fopen(c,"rt");
                if (f!=NULL)
                {
                        for(int i=0;i<9;i++)
                        for(int j=0;j<9;j++)
                        {
                        fscanf(f,"%d",&s[i][j]);
                        otv[i][j]=s[i][j];
                        col[i][j]=0;
                        }
                        fclose(f);
                }       
                Rand(s);
                return 1;
        }
 
        case WM_KEYDOWN:
                {
                        if (flag==1)
                        {
                                int i,j,a,b;
                        char c=wp;
                        for( a=0;a<9;a++)
                                for( b=0;b<9;b++)
                                        if ((col[a][b]==1) && (s[a][b]==0))
                                        {
                                                i=a;j=b; a=10;
                                        
                                        }
                        if (c>'0' && c<='9') 
                                s[i][j]=c-'0';
                        else if (c>='a' && c<='i') s[i][j]=c-'a'+1;
                        col[a][b]=0;
                        flag=0;
                        }
                        InvalidateRect(hwnd,NULL,true);
                        return 1;
                        
 
                }
 
        case WM_SIZE:
        {
                InvalidateRect(hwnd,NULL,true);
                return 1;
        }
        
        
 
        case WM_LBUTTONDOWN:
                {
                        int i,j;
                         for(i=0; i<9;i++)
                        for(j=0;j<9;j++) col[i][j]=0;
                        xPos = LOWORD(lp); 
                        yPos = HIWORD(lp); 
                        i=xPos/50;
                        j=yPos/50;
                        if (s[i][j]==0)
                        {
                                flag=1;
                                col[i][j]=1;
                        }
                        InvalidateRect(hwnd,NULL,true);
                }
 
        case WM_PAINT:
                {                               
                PAINTSTRUCT ps;
                HDC hdc=BeginPaint(hwnd, &ps);
                int i, j;
                for(i=0; i<9;i++)
                        for(j=0;j<9;j++)
                        {
                                HBRUSH br;
                                if (col[i][j]==0)
                                br=CreateSolidBrush(RGB(255,255,255));
                                else
                                br=CreateSolidBrush(RGB(255,255,0));
                                HBRUSH old_br=(HBRUSH)SelectObject(hdc,br);
                                HFONT font=CreateFont(40,25,0,0,FW_HEAVY,false,false,false,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_CHARACTER_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,TEXT("EditText"));
                                HFONT old_font=(HFONT)SelectObject(hdc,font);
                                Rectangle(hdc,50*i,50*j,50*(i+1),50*(j+1));     
                                if (s[i][j]!=0)
                                {
                                        wchar_t buf[20];        
                                        swprintf(buf,L"%d",s[i][j]);
                                        TextOut(hdc,50*i+12,50*j+4,(LPCSTR) buf,wcslen(buf));
                                }
                                SelectObject(hdc,old_font);
                                DeleteObject(font);
                                SelectObject(hdc,old_br);
                                DeleteObject(br);
                        }
                EndPaint(hwnd, &ps);                    
                }
 
 
        return 0;
        }
        return 0;
}
 
 
 
 
int WINAPI WinMain(HINSTANCE hi,HINSTANCE,LPSTR,int) 
{
        srand(GetTickCount());
        return DialogBox(hi,MAKEINTRESOURCE(DIALOG),NULL,(DLGPROC)fn);
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 08:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru