|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
21.10.2011, 14:59 | #1 |
Форумчанин
Регистрация: 11.02.2011
Сообщений: 131
|
InvalidateRect() и LPCRECT
Помогите, пожалуйста, новичку.
Как я понял, функция InvalidateRect() позволяет стереть содержимое прямоугольника в окне. Её второй параметр - прямоугольник типа LPCRECT. Если он равен NULL, то стирается всё окно. Так вот, как сделать его не NULL? Ведь, как я понял, LPCRECT - это практически указатель на тип CONST RECT. То есть это константа, которую нельзя изменять на протяжении программы. Как тогда придать значения свойствам rect, left, top и bottom? Компилятор ругается на изменение константы! |
21.10.2011, 15:03 | #2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
вообще то это константный указатель на тип RECT
что означает что данные через указатель не будут изменены. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
21.10.2011, 16:06 | #3 |
Форумчанин
Регистрация: 05.10.2011
Сообщений: 368
|
cоздать обычную переменную RECT и передать указатель на неё в функцию InvalidateRect
Не стоит будить спящего Бога! (с) Меланхолия Харухи Судзумии
|
21.10.2011, 17:59 | #4 |
Форумчанин
Регистрация: 11.02.2011
Сообщений: 131
|
Так я пытался так делать. Вот код.
Код:
|
21.10.2011, 18:11 | #5 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
а где у вас данные на которые указатель указывает?
обьявили указатель, думаете он будет волшебным? учите основы про указатели и операцию взяимя указателя. Код:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
21.10.2011, 23:37 | #6 |
Форумчанин
Регистрация: 11.02.2011
Сообщений: 131
|
Так я вроде создавал указатель и передавал его в функции. Адрес и указатель - это вроде одно и тоже... Да, с указателями, признаюсь, у меня проблема, хотя до сих пор думал, что работать с ними умею.
Всё получилось. Спасибо большое всем за помощь! |
22.10.2011, 10:15 | #7 | ||
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
||
23.10.2011, 00:26 | #8 | |
C++,DirectX/OpenGL
Форумчанин
Регистрация: 09.01.2011
Сообщений: 422
|
Цитата:
Функция как бы говорит нам: "Я буду использовать ваши данные по указателю только для чтения ! Trust me !". А нам остается лишь поверить ей на слово ! Ибо в C++ полно хаков способных обойти этот модификатор : const_cast, mutable и тд. |
|
23.10.2011, 14:45 | #9 | |
Старожил
Регистрация: 19.08.2009
Сообщений: 2,119
|
Цитата:
LPCRECT - это указатель на константный объект RECT что означает что данные через указатель не будут изменены А теперь - правильный ответ: :D данные на которые указывает константный указатель, менять можно. А само значение указателя - нет.
А вы почему со мной не соглашаетесь, у вас что, импотенция? (c) ACE Valery
|
|
24.12.2013, 12:29 | #10 | |
Регистрация: 18.01.2012
Сообщений: 3
|
Цитата:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перерисовка окна при момощи InvalidateRect | assch | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 01.07.2011 19:49 |
Мерцание, перепрорисовка не всей формы,InvalidateRect... | Lelya-perinya | Мультимедиа в Delphi | 5 | 11.12.2010 07:56 |
Перерисовать окно InvalidateRect где указывать | delias | Win Api | 2 | 25.03.2010 01:15 |