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

Мышь откидывает в левый угол(windows.h) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как инициализировать такой массив http://www.cyberforum.ru/cpp-beginners/thread302425.html
Нужно в проге(консольное приложение Win32) испоьзовать массив таких размеров double massiv_resultatov={0}; просто так я не смог его инициализировать поэтому нужно выделять память динамически делаю так int I=0, J=0, K=0, G=0; double *****massiv_resultatov = new double****; for(I=0;I<14;I++) massiv_resultatov = new double***; for(I=0;I<14;I++) for(J=0;J<14;J++) massiv_resultatov =...
C++ процессы всем привет подскажите как создать процесс по имени например explorer.exe если можно то через system(...); http://www.cyberforum.ru/cpp-beginners/thread302419.html
C++ Обработка исключений при вводе некорректных данных
День добрый, начал разбираться с исключениями, пока не совсем понимаю в чем их удобство и зачем они нужны, какие преимущества и т.д... но вопрос, вобще-то, не в этом. Возможно ли применить обработку исключительной ситуации в случае некорректного (в плане типа) вводимых данных? Пример - есть переменная int a; я считываю в нее значение: cin >> a; и ввожу вместо числа, скажем, букву. программа,...
Какова роль new int в приведенном коде C++
Делаю лабораторную. Вот хочу разобраться. Это часть кода, где мы вводим двумерный массив. а что здесь выполняет new int? cout<<"Kol-vo strok massiva: "<< endl; cin>>n; cout<<"Kol-vo stolbtsov massiva: "<< endl; cin>>m; mas=new int*; for(i=0; i<n; i++) mas=new int;
C++ Запись в файл http://www.cyberforum.ru/cpp-beginners/thread302379.html
Подскажите, пожалуйста. Мне нужно создать файл и записать в него значения y=5*k, k изменяется в цикле от 0 до 10. Как это сделать? Спасибо.
C++ Вечный календарь Написал программу "Вечный календарь", которая определяет день недели введенной даты и подсчитует количество дней от введеной даты до сегодня. Но не работает проверка на количество дней в феврале. Помогите пожалуйста найти ошибку. #include "stdafx.h" #include <iostream> #include <time.h> #include <stdio.h> using namespace std; //Прототипы функций подробнее

Показать сообщение отдельно
VladSharikov
 Аватар для VladSharikov
22 / 22 / 1
Регистрация: 02.12.2010
Сообщений: 824
23.05.2011, 01:52     Мышь откидывает в левый угол(windows.h)
Привет!

Пишу курсовик и столкнулся с проблемкой. В общем делаю меню. Все вроде бы работает идеально. Есть одна проблема. Когда я вызываю функцию MakeVerticalMenu(int pos); курсов(в смысле саму мышь) откидывает в левый верхний угол экрана. При чем не в самый угол, а прижимает к левой стенке, но чуть ниже верхней границы.

Код привожу весь.
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
#include "stdafx.h"
#include <Windows.h>
#include <iostream>
#include <conio.h>
 
using namespace std;
 
void Header();
 
void KeyEventProc(KEY_EVENT_RECORD ker);
void MouseEventProc(MOUSE_EVENT_RECORD mer);
void SetPosCursor(int x, int y);
void MakeHorizontalMenu(int pos);
void MakeVerticalMenu(int pos);
 
HANDLE hStdin,
    hStdout,
    hStderror; 
 
int main(void) {
 
    Header();
    
    return 0;
 
}
 
 
 
void SetPosCursor(int x, int y) {
    COORD xy;
    xy.X = x;
    xy.Y = y;
    SetConsoleTextAttribute(hStdout, FOREGROUND_GREEN | FOREGROUND_INTENSITY);
    SetConsoleCursorPosition(hStdout, xy);
 
}
 
void MouseEventProc(MOUSE_EVENT_RECORD mer) {
    COORD xy;
    switch(mer.dwEventFlags) {
    case 0:
        if(mer.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED) {
            xy.X = mer.dwMousePosition.X;
            xy.Y = mer.dwMousePosition.Y;
            if(xy.Y != 0) {
                SetConsoleCursorPosition(hStdout, xy);
                SetPosCursor(20,20);
                printf("                ");
                SetPosCursor(20,20);
                printf(" x = %d     y = %d", xy.X, xy.Y);
                SetPosCursor(0, 1);
                MakeHorizontalMenu(4);
                MakeVerticalMenu(0);
            } else {    
                if(xy.X <= 18) {
                    SetPosCursor(20,20);
                    printf("Menu select #1          ");
                    MakeHorizontalMenu(0);
                    
                    MakeVerticalMenu(0);
                    MakeVerticalMenu(1);
                }
                if(xy.X > 18 && xy.X < 29) {
                    SetPosCursor(20, 20);
                    printf("Menu select #2          ");
                    MakeHorizontalMenu(1);
 
                    MakeVerticalMenu(0);
                    MakeVerticalMenu(2);
                }
                if(xy.X >=77 && xy.X < 80) {
                    MakeHorizontalMenu(2);
                    SetPosCursor(20, 20);
                    printf("Exit        / Press any key!");
                    _getch();
                    exit(1488);
 
                }
 
            }
        }
    }
}
 
void KeyEventProc(KEY_EVENT_RECORD ker) {
 
    char ch = ker.uChar.AsciiChar;
    SetPosCursor(20, 20);
 
    switch(ch) {
    case 'q':
        exit(1488);
    }
}
 
void MakeHorizontalMenu(int menu_selected) {
    CHAR *names[] = {"Initialization    ", "Testing    ", "\t\t\t\t\t\t     [x]"};
    SetPosCursor(0, 0);
    for(int i = 0; i < 3; i++) {
        if(i == menu_selected) 
            SetConsoleTextAttribute(hStdout, FOREGROUND_RED | FOREGROUND_INTENSITY);
        if(i != menu_selected)
            SetConsoleTextAttribute(hStdout, FOREGROUND_GREEN | FOREGROUND_INTENSITY);
        cout << names[i];
    }
    
}
 
void MakeVerticalMenu(int menu_selected) {
    
    if(menu_selected == 0) {
        int i = 0;
        while(i != 5) {
            SetCursorPos(0, i); printf("\t\t\t\t\t\n");
            i++;
        }
        SetCursorPos(0, 1);
    }
 
    if(menu_selected == 1) {
        CHAR *names[] = {"Element count   ", "Default values  "};
 
        for(int i = 0; i < 2; i++) {
            if(i == menu_selected)
                SetConsoleTextAttribute(hStdout, FOREGROUND_RED | FOREGROUND_INTENSITY);
            if(i != menu_selected)
                SetConsoleTextAttribute(hStdout, FOREGROUND_GREEN | FOREGROUND_INTENSITY);
            SetPosCursor(0, i+1);
            cout << names[i];
        }
    }
 
    if(menu_selected == 2) {
        CHAR *names[] = {"Base class    ", "String ident  ",
                        "Self class    ", "Operands      "};
 
        for(int i = 0; i < 4; i++) {
            SetPosCursor(18, i+1);
            cout << names[i];
        }
    }
        
}
 
 
void Header() {
 
    DWORD dwNewMode, dwOldMode, dw;
    INPUT_RECORD InRec;
    SetConsoleTitle(L"KURSOVIK #1");
    hStdin = GetStdHandle(STD_INPUT_HANDLE);
    hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
 
    MakeHorizontalMenu(4);
 
    GetConsoleMode(hStdin, &dwOldMode);
    dwNewMode = ENABLE_WINDOW_INPUT | ENABLE_MOUSE_INPUT;
    SetConsoleMode(hStdin, dwNewMode);
    while(true) {
        ReadConsoleInput(hStdin, &InRec, 1, &dw);
        switch(InRec.EventType) {
        case KEY_EVENT:
            KeyEventProc(InRec.Event.KeyEvent);
            break;
        case MOUSE_EVENT:
            MouseEventProc(InRec.Event.MouseEvent);
            break;
        }
    }
    SetConsoleMode(hStdin, dwOldMode);
 
}
Добавлено через 13 секунд
Как решить проблему?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 22:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru