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

Указатель this

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

как в windows Forms //
горячую клавишу?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.04.2011, 08:27
Ответы с готовыми решениями:

Зачем нужен указатель на указатель при работе с однонаправленным списком?
День добрый. Столкнулся с непониманием этой темы. В частности, совершенно...

Чем отличаются указатель на строку и константный указатель на строку?
Просто обьясните, как такое возможно? char *a="fff"; В чем отличие от этого?...

Указатель на функцию
Доброго времени суток! Кто может посоветовать способ присвоить указателю на...

Меняется указатель?
Привет всем. Поставил себе задачу, вытащить из одной игры данные (здоровье,...

friend указатель
Есть ли что-то типа этого в стандарте: class A { protected: double a; ...

26
taras atavin
4205 / 1768 / 211
Регистрация: 24.11.2009
Сообщений: 27,565
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
sektor2009
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
taras atavin
4205 / 1768 / 211
Регистрация: 24.11.2009
Сообщений: 27,565
19.04.2011, 08:22 4
Цитата Сообщение от sektor2009 Посмотреть сообщение
например нажал на "*" и вызывалась функция кнопки умножения
И какое это имеет отношение к указателю this?
0
sektor2009
3 / 3 / 2
Регистрация: 15.03.2009
Сообщений: 347
19.04.2011, 08:23  [ТС] 5
Цитата Сообщение от taras atavin Посмотреть сообщение
И какое это имеет отношение к указателю this?
В нете читал что через него делается
0
taras atavin
4205 / 1768 / 211
Регистрация: 24.11.2009
Сообщений: 27,565
19.04.2011, 08:26 6
Цитата Сообщение от sektor2009 Посмотреть сообщение
В нете читал что через него делается
А сломанный БЕЛАЗ ремонтируется методом поездки на нём в Москву? Для того, чтоб подняться на лифте на 12-й этаж, надо отвинтить колесо у такси?
0
sektor2009
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
solar_wind
761 / 752 / 58
Регистрация: 06.07.2009
Сообщений: 2,994
Завершенные тесты: 1
19.04.2011, 08:42 8
sektor2009,
this.KeyPreview = true; из этого примера можно убрать наверное даже, и суть от этого не поменяется.
0
sektor2009
3 / 3 / 2
Регистрация: 15.03.2009
Сообщений: 347
19.04.2011, 08:43  [ТС] 9
Цитата Сообщение от vitaly1981 Посмотреть сообщение
sektor2009,
this.KeyPreview = true; из этого примера можно убрать наверное даже, и суть от этого не поменяется.
это же конструктор
0
solar_wind
761 / 752 / 58
Регистрация: 06.07.2009
Сообщений: 2,994
Завершенные тесты: 1
19.04.2011, 08:47 10
Я так вижу, что ты саму задачу свою толком не понимаешь, выставляй описание самой задачи, тогда кто нить да поможет, а так это все пустая болтовня.

Добавлено через 1 минуту
sektor2009, И что с того что конструктор? this к перехвату нажатия клавиши вообще не имеет тут отношения.
0
taras atavin
4205 / 1768 / 211
Регистрация: 24.11.2009
Сообщений: 27,565
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
sektor2009
3 / 3 / 2
Регистрация: 15.03.2009
Сообщений: 347
19.04.2011, 08:49  [ТС] 12
Цитата Сообщение от vitaly1981 Посмотреть сообщение
Я так вижу, что ты саму задачу свою толком не понимаешь, выставляй описание самой задачи, тогда кто нить да поможет, а так это все пустая болтовня.

Добавлено через 1 минуту
sektor2009, И что с того что конструктор? this к перехвату нажатия клавиши вообще не имеет тут отношения.
У меня кнопка - Button, выполняет такое то действие, не подскажите, как привязать выполнение действия этой кнопки на нажатие кнопки Enter?
0
taras atavin
4205 / 1768 / 211
Регистрация: 24.11.2009
Сообщений: 27,565
19.04.2011, 08:52 13
Цитата Сообщение от sektor2009 Посмотреть сообщение
У меня кнопка - Button, выполняет такое то действие, не подскажите, как привязать выполнение действия этой кнопки на нажатие кнопки Enter?
Обработкой кнопок клавы в событии OnKeyDown. this применяется для других целей.
0
sektor2009
3 / 3 / 2
Регистрация: 15.03.2009
Сообщений: 347
19.04.2011, 08:53  [ТС] 14
Цитата Сообщение от taras atavin Посмотреть сообщение
Обработкой кнопок клавы в событии OnKeyDown. this применяется для других целей.
меня интерисует как все это сделать
0
taras atavin
4205 / 1768 / 211
Регистрация: 24.11.2009
Сообщений: 27,565
19.04.2011, 08:54 15
Кстати, перехваты и горячие кнопки вообще не имеют никакого отношения к чистым сям. Это системно-зависимые аспекты и тему надо рамещать соотвественно в сях для винды, или в сях для линя. Но ни как не в общем разделе. Или хотябы явно назови ось.
0
solar_wind
761 / 752 / 58
Регистрация: 06.07.2009
Сообщений: 2,994
Завершенные тесты: 1
19.04.2011, 08:55 16
sektor2009, Какую среду разработки используешь?
Если бы четко написал, и создал тему с адекватным названием, давно бы уже получил ответ!
0
sektor2009
3 / 3 / 2
Регистрация: 15.03.2009
Сообщений: 347
19.04.2011, 08:57  [ТС] 17
Цитата Сообщение от vitaly1981 Посмотреть сообщение
sektor2009, Какую среду разработки используешь?
Если бы четко написал, и создал тему с адекватным названием, давно бы уже получил ответ!
я же писал
vC++
WIndows Forms c++
0
solar_wind
761 / 752 / 58
Регистрация: 06.07.2009
Сообщений: 2,994
Завершенные тесты: 1
19.04.2011, 09:00 18
sektor2009, Тогда создай нормальную тему в соответствующем разделе!
Насколько помню там обработчики создаются чуть ли не по двойному нажатию на кнопку в реджиме построения формы, или как то очень просто. А потом помещаешь в обработчик что тебе надо.
0
sektor2009
3 / 3 / 2
Регистрация: 15.03.2009
Сообщений: 347
19.04.2011, 09:01  [ТС] 19
да это я знаю...а вот все как это записывается
0
taras atavin
4205 / 1768 / 211
Регистрация: 24.11.2009
Сообщений: 27,565
19.04.2011, 09:02 20
Это обработчики шелчка крысой.
0
19.04.2011, 09:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.04.2011, 09:02

Указатель на метод
struct abc{ int a; int b; int c; abc(int na = 0, int nb = 0, int nc...

Указатель на пользовательский тип
Чёто туплю, почему когда передаёшь переменную (например int) параметром через...

Указатель на метод класса.
Программа отказывается присваивать метод класса указателю. Как исправить? ...


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

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

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