Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на C / C++

Выпуск № 310
от 19.07.2003, 12:00

Администратор:
Имя: Nick.Box
URL: Информационный ресурс
ICQ: 365124
[censored], [censored]
О рассылке:
Задано вопросов: 944
Отправлено ответов: 2132
Активность: 225.8 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

baldr
Статус: Профессиональный
Общий рейтинг: 112.12
URL: Сайт об ОС DOS. Всем, кто любит эту ОС!
[Подробней >>]
Morgion
Статус: Доверительный
Общий рейтинг: 108.14
[Подробней >>]
Avl2k
Статус: Профессиональный
Общий рейтинг: 123.57
[Подробней >>]
 
Yuri Gordienko
Статус: Профессиональный
Общий рейтинг: 117.23
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 931. Дополнение моему ответу на 924... (ответов: 1)
Вопрос № 932. Доброго времени суток вопрос1: когда создаю несколько дочерних окон возникает такая проблема: если о... (ответов: 1)
Вопрос № 939. Здравствуйте, Обьясните пожалуйста, почему память защищена в этом случае. Ведь это-же не константа. ... (ответов: 2)

Вопросов: 3, ответов: 4


 Вопрос № 931

Дополнение моему ответу на 924


Приложение:


Вопрос отправлен: 14.07.2003, 11:18
Отправитель: Yuri Gordienko

[Следующий вопрос >>] [Список вопросов]

Отвечает baldr

Доброе время суток, Yuri Gordienko!
Отправляю.

Ответ отправлен: 14.07.2003, 16:34
Отправитель: baldr


 Вопрос № 932

Доброго времени суток
вопрос1: когда создаю несколько дочерних окон возникает такая проблема: если одно дочернее окно расположить поверх другого дочернего, а потом перетащить то окно, которое закрывается верхним, то оно перетаскивается вместе с "прилипшим" куском перекрывающего его окна. если же перемещать верхнее, то окно, что под ним, перерисовывается нормально. как сделать, чтобы и нижнее окошко нормально отображалось?
делаю так:
WNDCLASS wc;
GetClassInfo(hInst,ClassName,&wc);
wc.lpszClassName="ClassChildName";
wc.hInstance=hInst;
wc.lpfnWndProc=(WNDPROC)WndProc_overlapped;
RegisterClass(&wc);
HWND hWnd_2 = CreateWindow
(
"ClassChildName","CHILDWINDOW",
WS_CHILDWINDOW|WS_CAPTION|WS_MINIMIZEBOX|WS_MAXIMIZEBOX,
150,150,250,250, hWnd,NULL,hInst,NULL
);
ShowWindow(hWnd_2, SW_SHOWNORMAL); UpdateWindow(hWnd_2);
попробовал добавить в WndProc_overlapped такое(результат тот же):
case WM_PAINT:
{
HDC hDC;
PAINTSTRUCT ps;
hDC=BeginPaint(hWnd,&ps); //< Получить контекст окна
EndPaint(hWnd,&ps); //< Освободить контекст окна
}; break;
case WM_ACTIVATE :
{
SendMessage(hWnd, WM_PAINT, NULL, NULL);
}; break;
case WM_MOVE :
{
SendMessage(hWnd, WM_PAINT, NULL, NULL);
}; break;

спасибо



Вопрос отправлен: 14.07.2003, 13:31
Отправитель: вова

[Следующий вопрос >>] [Список вопросов]

Отвечает Morgion

Приветствую Вас, вова!
Нужно использовать стили WM_CLIPSIBLINGS и WM_CHILD- вроде они- если разберёшся- всё будет работать.

Ответ отправлен: 15.07.2003, 12:52
Отправитель: Morgion


 Вопрос № 939

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


Приложение:


Вопрос отправлен: 16.07.2003, 11:56
Отправитель: XShocK (reset@hotbox.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Avl2k

Приветствую Вас, XShocK!
Если у Вас в настройках проекта (VC++ 6.0) Debug Info установлена в Program Database For Edit And Continue (а это значение по умолчанию), то для компилятора автоматически устанавливается опция /GF и он объединяет повторяющиеся строки и кладет их в память _только для чтения_. Из-за попытки запись в эту память и выдается ошибка.
С уважением, Avl2k.
#include "stdafx.h"
#include <iostream>
#include <tchar.h>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
char* test= "Hello!";
char* test2 = "Hello!";
cout << "Same address: " << boolalpha << (test == test2) << endl;
return 0;
}

Ответ отправлен: 16.07.2003, 12:28
Отправитель: Avl2k


Отвечает Yuri Gordienko

Здравствуйте, XShocK!
В принципе, у тебя здесь потенциальная ошибка, которая на разных компиляторах может вести себя по разному.
char *test - это указатель на стоку "Hello!", которая на этапе компиляции может быть обработана так, как посчитает нужным компилятор, т.е. может быть упакована и т.п. - для компилятора это константа.
Опасно изменять константные переменные.
Для тебя лучше сделать так:
char test[] = "Hello!";
или
char test[10];
Успехов


Ответ отправлен: 17.07.2003, 15:22
Отправитель: Yuri Gordienko



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (35)
C / C++ (22)
Perl (5)
Builder / Delphi (18)
Pascal (24)
Basic / VBA (9)
Java / JavaScript (11)
PHP (9)
Криптография (6)
WinAPI (9)
Пользователю
Windows 95/98/Me (38)
Windows NT/2000/XP (32)
"Железо" (27)
Поиск информации (20)
Администратору
Windows NT/2000/XP (16)
Linux / Unix (7)
Юристу
Гражданское право (10)
Семейное право (5)
Трудовое право (9)
КоАП (5)

Отправить вопрос всем экспертам выбранной рассылки.




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2003 Россия, Москва. Авторское право: Калашников О.А.

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное