Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 5.00/25: Рейтинг темы: голосов - 25, средняя оценка - 5.00
3 / 3 / 2
Регистрация: 15.03.2009
Сообщений: 347
1

Указатель this

18.04.2011, 08:27. Просмотров 4718. Ответов 26
Метки нет (Все метки)

как в windows Forms //
горячую клавишу?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.04.2011, 08:27
Ответы с готовыми решениями:

Если в класс нужно передать указатель на указатель на массив строк неизвестной длинны?
Как проинициализировать массив строк wchar_t * (произвольного размера) , если его нужно передать в...

Указатель на указатель, в чем смысл?
BOOL WTSEnumerateProcesses( _In_ HANDLE hServer, _In_ DWORD Reserved, _In_ DWORD...

Как получить ссылку на указатель или указатель на указатель в массиве?
В процессе реализации сортировки пузырьком натолкнулся на такую проблему: как поменять значения...

А почему нельзя передавать в ф-ю добавления элемента в стек один указатель? Почему нужен именно указатель на указатель?
Вот код ф-ии добавления элемента в стек: void push1(Node **top, int d) { // top...

26
4196 / 1789 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
19.04.2011, 08:02 2
При чём здесь формы, тем более кнопки? this - это неявный указатель в методах и операторах-членах.
C++
1
2
3
4
5
6
7
8
9
class A
{
 public:
 int a;
 A ()
 {
  a=0;
 }
};
эквивалентно
C++
1
2
3
4
5
6
7
8
9
class A
{
 public:
 int a;
 A ()
 {
  this->a=0;
 }
};
, причём, как не пиши, а получится всё равно только
C++
1
2
3
4
5
6
7
8
9
class A
{
 public:
 int a;
 A ()
 {
  this->a=0;
 }
};
. Нужно для обращения к члену, перекрытому параметром:
C++
1
2
3
4
5
6
7
8
9
class A
{
 public:
 int a;
 A (int a)
 {
  this->a=a; // this->a - член, a - параметр.
 }
};
и для возврата ссылки на this:
C++
1
2
3
4
5
6
7
8
9
10
11
class A
{
 ...
 public:
 ...
  A operator = (A& x)
  {
   ...
   return *this;
  }
}
.
1
3 / 3 / 2
Регистрация: 15.03.2009
Сообщений: 347
19.04.2011, 08:05  [ТС] 3
Цитата Сообщение от taras atavin Посмотреть сообщение
При чём здесь формы, тем более кнопки? this - это неявный указатель в методах и операторах-членах.
C++
1
2
3
4
5
6
7
8
9
class A
{
 public:
 int a;
 A ()
 {
  a=0;
 }
};
эквивалентно
C++
1
2
3
4
5
6
7
8
9
class A
{
 public:
 int a;
 A ()
 {
  this->a=0;
 }
};
, причём, как не пиши, а получится всё равно только
C++
1
2
3
4
5
6
7
8
9
class A
{
 public:
 int a;
 A ()
 {
  this->a=0;
 }
};
. Нужно для обращения к члену, перекрытому параметром:
C++
1
2
3
4
5
6
7
8
9
class A
{
 public:
 int a;
 A (int a)
 {
  this->a=a; // this->a - член, a - параметр.
 }
};
и для возврата ссылки на this:
C++
1
2
3
4
5
6
7
8
9
10
11
class A
{
 ...
 public:
 ...
  A operator = (A& x)
  {
   ...
   return *this;
  }
}
.

например нажал на "*" и вызывалась функция кнопки умножения
как так сделать?
Windows Forms c++
1
4196 / 1789 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
19.04.2011, 08:22 4
Цитата Сообщение от sektor2009 Посмотреть сообщение
например нажал на "*" и вызывалась функция кнопки умножения
И какое это имеет отношение к указателю this?
0
3 / 3 / 2
Регистрация: 15.03.2009
Сообщений: 347
19.04.2011, 08:23  [ТС] 5
Цитата Сообщение от taras atavin Посмотреть сообщение
И какое это имеет отношение к указателю this?
В нете читал что через него делается
0
4196 / 1789 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
19.04.2011, 08:26 6
Цитата Сообщение от sektor2009 Посмотреть сообщение
В нете читал что через него делается
А сломанный БЕЛАЗ ремонтируется методом поездки на нём в Москву? Для того, чтоб подняться на лифте на 12-й этаж, надо отвинтить колесо у такси?
0
3 / 3 / 2
Регистрация: 15.03.2009
Сообщений: 347
19.04.2011, 08:36  [ТС] 7
Цитата Сообщение от taras atavin Посмотреть сообщение
А сломанный БЕЛАЗ ремонтируется методом поездки на нём в Москву? Для того, чтоб подняться на лифте на 12-й этаж, надо отвинтить колесо у такси?
это на делфи
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (ssCtrl in Shift) andin ['A', 'a']) then
ShowMessage('Ctrl-A');
end;
как на с++ ?

Добавлено через 1 минуту
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
Для примера, перехватим комбинацию ALT + CONTROL + ENTER.
 
Сначала регистрируем горячую клавишу:
 
bool RHKret = RegisterHotKey(Form1->Handle,         // Handle окна, которому отправлять сообщения WM_HOTKEY
                             0x00F,                 // УСЛОВНЫЙ идентификатор горячего ключа
                             MOD_ALT + MOD_CONTROL, // модификаторы
                             VK_RETURN              // код клавиши
                             );
if (RHKret) // если всё о'кей
        {
        ShowMessage("Hot Key Registred");
        }
 
 
Затем размещаем на Form1 TApplicationEvents и в OnMessage пишем:
 
if (Msg.message == WM_HOTKEY) // сообщение наше
        {
        if (Msg.wParam == 0x00F) // идентификатор наш
                {
                ShowMessage("www.sources.ru"); // громко кричим "уря"
                }
        }
 
 
Когда горячая клавиша больше не нужна, отключаем ее:
 
UnregisterHotKey(Form1->Handle, // Handle окна
                 0x00F          // наш идентификатор горячего ключа
                 );

C++ Builder это!

Добавлено через 2 минуты
Цитата Сообщение от taras atavin Посмотреть сообщение
И какое это имеет отношение к указателю this?
вот
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public Form1()
        {
            InitializeComponent();
            this.KeyPreview = true;
        }
 
        protected override void OnKeyDown(KeyEventArgs e)
        {
            base.OnKeyDown(e);
            if (e.KeyCode == Keys.F1) 
            {
                MessageBox.Show("Тест");
                e.Handled = true;
            }
        }
0
769 / 759 / 59
Регистрация: 06.07.2009
Сообщений: 3,016
19.04.2011, 08:42 8
sektor2009,
this.KeyPreview = true; из этого примера можно убрать наверное даже, и суть от этого не поменяется.
0
3 / 3 / 2
Регистрация: 15.03.2009
Сообщений: 347
19.04.2011, 08:43  [ТС] 9
Цитата Сообщение от vitaly1981 Посмотреть сообщение
sektor2009,
this.KeyPreview = true; из этого примера можно убрать наверное даже, и суть от этого не поменяется.
это же конструктор
0
769 / 759 / 59
Регистрация: 06.07.2009
Сообщений: 3,016
19.04.2011, 08:47 10
Я так вижу, что ты саму задачу свою толком не понимаешь, выставляй описание самой задачи, тогда кто нить да поможет, а так это все пустая болтовня.

Добавлено через 1 минуту
sektor2009, И что с того что конструктор? this к перехвату нажатия клавиши вообще не имеет тут отношения.
0
4196 / 1789 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
19.04.2011, 08:48 11
Цитата Сообщение от sektor2009 Посмотреть сообщение
вот
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public Form1()
        {
            InitializeComponent();
            this.KeyPreview = true;
        }
 
        protected override void OnKeyDown(KeyEventArgs e)
        {
            base.OnKeyDown(e);
            if (e.KeyCode == Keys.F1) 
            {
                MessageBox.Show("Тест");
                e.Handled = true;
            }
        }
Здесь он не нужен. И потом, решётка обсуждается в другом разделе.
0
3 / 3 / 2
Регистрация: 15.03.2009
Сообщений: 347
19.04.2011, 08:49  [ТС] 12
Цитата Сообщение от vitaly1981 Посмотреть сообщение
Я так вижу, что ты саму задачу свою толком не понимаешь, выставляй описание самой задачи, тогда кто нить да поможет, а так это все пустая болтовня.

Добавлено через 1 минуту
sektor2009, И что с того что конструктор? this к перехвату нажатия клавиши вообще не имеет тут отношения.
У меня кнопка - Button, выполняет такое то действие, не подскажите, как привязать выполнение действия этой кнопки на нажатие кнопки Enter?
0
4196 / 1789 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
19.04.2011, 08:52 13
Цитата Сообщение от sektor2009 Посмотреть сообщение
У меня кнопка - Button, выполняет такое то действие, не подскажите, как привязать выполнение действия этой кнопки на нажатие кнопки Enter?
Обработкой кнопок клавы в событии OnKeyDown. this применяется для других целей.
0
3 / 3 / 2
Регистрация: 15.03.2009
Сообщений: 347
19.04.2011, 08:53  [ТС] 14
Цитата Сообщение от taras atavin Посмотреть сообщение
Обработкой кнопок клавы в событии OnKeyDown. this применяется для других целей.
меня интерисует как все это сделать
0
4196 / 1789 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
19.04.2011, 08:54 15
Кстати, перехваты и горячие кнопки вообще не имеют никакого отношения к чистым сям. Это системно-зависимые аспекты и тему надо рамещать соотвественно в сях для винды, или в сях для линя. Но ни как не в общем разделе. Или хотябы явно назови ось.
0
769 / 759 / 59
Регистрация: 06.07.2009
Сообщений: 3,016
19.04.2011, 08:55 16
sektor2009, Какую среду разработки используешь?
Если бы четко написал, и создал тему с адекватным названием, давно бы уже получил ответ!
0
3 / 3 / 2
Регистрация: 15.03.2009
Сообщений: 347
19.04.2011, 08:57  [ТС] 17
Цитата Сообщение от vitaly1981 Посмотреть сообщение
sektor2009, Какую среду разработки используешь?
Если бы четко написал, и создал тему с адекватным названием, давно бы уже получил ответ!
я же писал
vC++
WIndows Forms c++
0
769 / 759 / 59
Регистрация: 06.07.2009
Сообщений: 3,016
19.04.2011, 09:00 18
sektor2009, Тогда создай нормальную тему в соответствующем разделе!
Насколько помню там обработчики создаются чуть ли не по двойному нажатию на кнопку в реджиме построения формы, или как то очень просто. А потом помещаешь в обработчик что тебе надо.
0
3 / 3 / 2
Регистрация: 15.03.2009
Сообщений: 347
19.04.2011, 09:01  [ТС] 19
да это я знаю...а вот все как это записывается
0
4196 / 1789 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
19.04.2011, 09:02 20
Это обработчики шелчка крысой.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.04.2011, 09:02

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Функция, принимающая указатель и число байт и выделяющая память под указатель
Здравствуйте. Задача легкая, но почему-то завис Нужно написать функцию, принимающую указатель и...

Сохранить адрес из указателя в другой указатель, а потом первый указатель удалить
Добрый день всем. Возмём простейший пример: #include <iostream> using namespace std; int...

Функция, получающая указатель на обычную функцию, получает указатель на метод класса
Здравтсвуйте. Имеется вопрос по указателям на методы класса. Допустим, есть функция( f ), которая...

Указатель типа void. Использование косвенного связывания через универсальный указатель
Необходимо использовать косвенного связывания через универсальный указатель, примерный вид: struct...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.