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

Программирование на WinApi c примерами


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



Программирование на WinApi c примерами

Выпуск #1

Сегодня в выпуске:

От автора

Приветствую вас новые читатели!
Вот перед вами первый выпуск...
Итак, для кого и о чем будет эта рассылка. Рассылка рассчитана как на подготовленного программиста, так и на новичка. Мне бы очень хотелось, чтобы она стала противоядием против заблуждения, что программирование на "чистом" WinApi сложно и невозможно, дескать "у нас в VC++ или Delphi есть готовые MFC/VCL а напрасно тратить время на глюкаватый и заумный АПИ не хочется..".
Так вот, данной рассылкой я хочу показать, что создание программ на чистом API не только просто но и очень красиво, неговоря уж о компактности кода... Но об этом чуть поздже..


План рассылки

1. Теория. Описание 3-4 функций API
2. Пример включающий использование этих функций с полным коментарием
3. Ваши вопросы и ответы на них.


О выборе компилятора

Я долго думал, какой компилятор больше всего подойдет для создания примеров в этой рассылке..
И все же мой выбор пал на РУССКИЙ компилятор "Странник Modula2-C-Pascal"! Только не надо так удивляться, поскольку данный компилятор во первых: поддерживает 3 языка - Модулу-2, Си и Паскаль, а значит, не будет извечной борьбы между Си-шниками и Паскалистами - каждому свое ;)) Во вторых: компилятор настолько компактен, что его можно поместить даже на дискету. В третьих: генерируемый код не включает ничего лишнего и схож с кодом, если бы вы писали под Вин на АСМе - начинается с 4Кб.
И в 4-х: этот компилятор принципиально фриварный, и кроме того поставляется со своими исходниками.
Скачать компилятор и получить полную информацию вы можете на его сайте: http://home.perm.ru/~strannik
А для любителей других сред программирования могу сказать, что не будут обходиться стороной и компиляторы: VC++ и LCCWin32.


Пример

Подобрались потихоньку к самому главному. Итак, обещанный пример:

module m;
import Win32;
const hINSTANCE=0x400000;
hid=101;
sht=102;
gd=103;
var handle:HWND;
dc:HDC;
regt:RECT;

dialog DLG 132,91,118,57,
WS_POPUP | WS_CAPTION | WS_SYSMENU | DS_MODALFRAME,
"Приложение к первому выпуску"
begin
control "Hide Task Bar",hid,"Button",WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON | BS_FLAT,6,8,108,13
control "GDI proc",gd,"Button",WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON | BS_FLAT,6,40,108,13
control "Let's shut &down",sht,"Button",WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON | BS_FLAT,6,24,108,13
control "",-1,"Button",WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_GROUPBOX,0,0,118,56
end;
procedure procDLG(wnd:HWND; message,wparam,lparam:integer):boolean;
begin
case message of
WM_INITDIALOG:|
WM_COMMAND:case loword(wparam) of
hid: handle := FindWindow('Shell_TrayWnd', nil);ShowWindow(handle, SW_HIDE);|
sht: ExitWindowsEx(EWX_SHUTDOWN,0);|
gd: dc:=GetDC(0); with regt do
left:=50;
top:=100;
right:=800;
bottom:=200;
end;
SetTextColor(dc,0x0000FF);
SetBkColor(dc,0x00000F);
DrawText(dc,"Вроде как наш текст - УРА!!! ПОЛУЧИЛОСЬ!!!!!!!!",45,regt,0);|
IDOK:EndDialog(wnd,1);|
IDCANCEL:EndDialog(wnd,0);|
end;|
else return false
end;
return true
end procDLG;
begin
DialogBoxParam(hINSTANCE,"DLG",0,addr(procDLG),0);
MessageBox(0,"Конец!","Завершение программы",MB_ICONINFORMATION);
ReleaseDC(0,dc);
end m.

А где же теория, описание?? - Скомпилируйте, и попробуйте разобраться - что к чему. В следующем выпуске будет полный коментарий и описание использованных функций.
PS: А относительно компиляции - сохраните исходник в допустим proga.m, и компилите, наздоровье;))
До встречи!!!

Copyright © 2002 by Atma Manas

Вопросы и предложения пожалуйста отправляйте сюда: atma_manas@mtu-net.ru

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

В избранное