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

ЧаВО от клуба программистов Весельчак У


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


Доброго времени суток уважаемые подписчики!
Перед вами первый (сигнальный) выпуск рассылки

"ЧАВО от клуба программистов Весельчак У".

Сайт рассылки http://club.shelek.com
Официальная страница ЧАВО http://club.shelek.com/faq/


Если Вы увидели вопрос на который можете дать более полный ответ, милости просим - просто щёлкните по ссылке и быть может кто-то будет Вам безгранично благодарен!
Ваши вопросы ждём на самом лучшем в Рунете форуме о программировании (и не только) http://shelek.com/forum

Новое из раздела Новичкам:

КАК обьявит переменную заведомо не зная какой тип данных будет введен ?

В VB это возможно. В нем есть тип данных, который называется Variant. По размеру выделенной под него памяти он может вместить в себя любой из используемых в VB типов. Но именно поэтому использовать его КРАЙНЕ не рекомендуют: он дает неоправданную занятость памяти. Не стоит также пользоваться послаблением VB, который разрешает не объявлять используемые переменные, в таком случае тип такой переменной по умолчанию определяется как Variant. По той же причине.

В С/С++ такого типа нет. Продумывайте четко при планировании вашей программы какие конкретные типы переменных вам понадобятся, «универсальные» средства обычно чреваты проблемами.

Последние обновление: 2004-01-28 21:04
Опубликовал: Never


Новое из раздела NET:

Как сделать, чтобы форма не отображалась в Task Bar'e?

Установить свойство Form.ShowInTaskbar в значение false.

Последние обновление: 2004-01-24 20:44
Опубликовал: Громозека
---------------------------------------------------------------------------------------------------------------------

Как запретить пользователю перемещать форму?

Пользователь может перемещать форму 2-мя способами - перетаскивая ее мышью за заголовок и после выбора в системном меню пункта Move. Первую возможность можно подавить при помощи перехвата нажатий мыши на заголовке формы. Для этого во время обработки сообщения WM_NCLBUTTONDOWN проверим в каком именно месте не клиентской области была нажата мышь (при помощи посылки сообщения WM_NCHITTEST), и если это заголовок - то не пропускаем только-что принятое сообщение WM_NCLBUTTONDOWN в оконную процедуру для обработки по умолчанию, таким образом, нажатия будут игнорироваться. Вот пример, в котором форму можно перемещать только при помощи пункта меню Move:


class UnMovableForm: Form
{
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_NCLBUTTONDOWN)
{
//Проверяем где именно нажали кнопку мыши
int result = SendMessage(m.HWnd, WM_NCHITTEST,
IntPtr.Zero, m.LParam);
if (result == HTCAPTION)
//Не позволяем этому сообщению быть обработанным
return;
}
base.WndProc(ref m);
}
static void Main()
{
Application.Run(new UnMovableForm());
}
//Win32 API функция и константы
const int WM_NCLBUTTONDOWN = 0x00A1;
const int WM_NCHITTEST = 0x0084;
const int HTCAPTION = 2;
[DllImport("User32.dll")]
static extern int SendMessage(IntPtr hWnd,
int Msg, IntPtr wParam, IntPtr lParam);
}

Если-же нужно запретить перемещать форму как при помощи перетаскивания за заголовок, так и при помощи пункта Move - то нужно лишь убрать из системного меню пункт Move, заменив там константу SC_CLOSE на SC_MOVE, определенную как:


const int SC_MOVE = 0xF010;

Последние обновление: 2004-01-24 20:48
Опубликовал: Громозека
---------------------------------------------------------------------------------------------------------------------

Как убрать некоторые пункты из системного меню формы при помощи Win32 API функций GetSystemMenu() и RemoveMenu():


class FormWithoutCloseButton: Form
{
//На момент вызова этого метода у нашей формы
//уже сформирован ее Handle (HWND)
protected override void OnHandleCreated(EventArgs e)
{
base.OnHandleCreated(e);
//Получаем Handle системного меню
IntPtr hMenu = GetSystemMenu(Handle, false);
//и удаляем пункт "Move"
RemoveMenu(hMenu, SC_CLOSE, MF_BYCOMMAND);
}

static void Main()
{
Application.Run(new FormWithoutCloseButton());
}

//Необходимые Win32 API функции и константы
const int SC_CLOSE = 0xF060;
const int MF_BYCOMMAND = 0;
[DllImport("User32.dll")]
static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert);
[DllImport("User32.dll")]
static extern bool RemoveMenu(IntPtr hMenu, int uPosition, int uFlags);
}

Последние обновление: 2004-01-24 20:51
Опубликовал: Громозека
---------------------------------------------------------------------------------------------------------------------

Новое из раздела С/С++:


Как я могу спрятать значок моей программы с панели задач? заранее спасибо!

Надо установить для окна стиль WS_EX_TOOLWINDOW

Последние обновление: 2004-01-28 11:23
Опубликовал: Hux
---------------------------------------------------------------------------------------------------------------------

Как я могу спрятать значок моей программы с панели задач в C++ Builder 6? Заранее спасибо !

//Событие после активизации Form1
//Для уддаления с панели задач
Application->Initialize();
Application->ShowMainForm = false;
ShowWindow(Application->Handle, SW_HIDE);
Application->Run();

Последние обновление: 2004-01-28 11:24
Опубликовал: Dimyan
---------------------------------------------------------------------------------------------------------------------

Новое из раздела Delphi:


Как сделать чтобы Windows вывалилась с ошибкой, например синий экран?

Своей проге даешь realtime приоритет.
Всякие kernel и svhost делашь normal.

Потом
beign
winexec(you program name);
winexec(you program name);
end;

Принцип пложения ежиков. P-100 валится за 2-3 сек.
P-600 - 5-6 сек. , P-1000 - 12 -15 сек. Причем 9x просто мрет, NT4,2000,XP,NET,2003 - даже через 5-6 часов на Ctrl-Alt-Del не выходят.
Дополнительная информация: http://shelek.com/forum/viewtopic.php?t=1587

Последние обновление: 2004-01-25 13:20
Опубликовал: Александр
---------------------------------------------------------------------------------------------------------------------

Как добавить горизонтальную полосу прокрутки в TListBox?

Компонент VCL TListBox автоматически реализует вертикальную полосу прокрутки.
Полоска прокрутки появляется, когда окно списка слишком мало для показа всех
элементов списка. Однако окно списка не показывает горизонтальной полосы
прокрутки, когда какие-либо элементы списка имеют большую ширину,
чем само окно списка. Конечно, есть возможность добавить горизонтальную
полосу прокрутки.
Добавьте следующий код в обработчик события OnCreate Вашей формы:

procedure TForm1.FormCreate(Sender: TObject);
var
i, MaxWidth: integer;
begin
MaxWidth := 0;
for i := 0 to ListBox1.Items.Count - 1 do
if MaxWidth

Последние обновление: 2004-01-25 19:58
Опубликовал: Александр
---------------------------------------------------------------------------------------------------------------------

Как сконверировать строку из одной кодировки в другую?

Для перекодирования из текущей кодировки DOS в текущую кодировку Windows
есть функции:
Win16: OemToAnsi, AnsiToOem;
Win32: OemToChar, CharToOem.
И они же с суффиксом Buf.

Если Вы хотите работать с другими кодировками (ISO, 4e) или
получить тот же результат вне зависимости системной локализации,

Примечание: не пытайся копировать таблицу из письма, так как здесь кодировка
KOI8r, а набей ее сам вручную.

type
TXlatTable = array[0..255] of Char;
PXlatTable = ^TXlatTable;
const
Cp866To1251 : TXlatTable = (
#0,#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,
,!,",#,$,%,&,,(,),*,+,,,-,.,/,
0,1,2,3,4,5,6,7,8,9,:,;,,?,
@,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,
P,Q,R,S,T,U,V,W,X,Y,Z,[,,],^,_,
,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,
p,q,r,s,t,u,v,w,x,y,z,{,|,},~,#127,
А,Б,В,Г,Д,Е,Ж,З,И,Й,К,Л,М,H,О,П,
Р,С,Т,У,Ф,Х,Ц,Ч,Ш,Щ,Ъ,Ы,Ь,Э,Ю,Я,
а,б,в,г,д,е,ж,з,и,й,к,л,м,н,о,п,
.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,
.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,
.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,
р,с,т,у,ф,х,ц,ч,ш,щ,ъ,ы,ь,э,ю,я,
Ё,ё,?,ё,?,?,?,?,°,∙,∙,#251,?,?,#254,#255);

function XlatConvert(const Value:string;
const CvtTable:PXlatTable): string;

Implementation

{***********************************
* Xlat Convering utility *
* for Transliterate, Upper, Lower *
***********************************}
function XlatConvert(const Value:string;
const CvtTable:PXlatTable) : string;
var
I : Integer;
begin
if CvtTable = nil then
Result := Value
else begin
Result := ;
for I := 1 to Length(Value) do begin
Result := Result + CvtTable^[Byte(Value[I])];
end;
end;
end; {XlatConvert}


Последние обновление: 2004-01-25 19:58
Опубликовал: Александр
---------------------------------------------------------------------------------------------------------------------

Новое из раздела Операционные системы -> Windows:


Где можно прочитать о всех ключах реестра Windows?

Справочник по реестру Windows -
http://winchanger.narod.ru/reg37.zip

Последние обновление: 2004-01-27 11:29
Опубликовал: ChaoticCube
---------------------------------------------------------------------------------------------------------------------

Где можно прочитать о всех ключах реестра Windows?

Насчёт всех - не знаю, но назначение очень большого количества ключей реестра
собрано на сайте Секреты реестра Windows NT/2000/XP/.NET Server.
Также немаленькая подборка располагается по адресу:
http://www.winguides.com/registry/ (на английском).

Последние обновление: 2004-01-27 11:29
Опубликовал: ABel
---------------------------------------------------------------------------------------------------------------------

Напоследок хочу пожелать Вам удачной рабочей недели!
Ведущий рассылки Release.

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

В избранное