Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.07.2012, 01:48   #1
vova65
Пользователь
 
Регистрация: 05.06.2011
Сообщений: 48
По умолчанию Исходники WinAPI

Здравствуйте!
Подскажите пожалуйста где можно раздобыть исходники win api?? если такие существуют в свободном плавании нетом.... или какой-то аналог..?
мне нужно > допустим есть функция DrawText.......вот мне и интересно посмотреть как она реализована и поковырять ее...

Извените если я не туда написал или я такой слепой что их не нашел!!!
Заранее спасибо!
vova65 вне форума Ответить с цитированием
Старый 03.07.2012, 06:40   #2
QunneD
C++ & PHP & Asm
Форумчанин
 
Аватар для QunneD
 
Регистрация: 06.12.2008
Сообщений: 300
По умолчанию

Код:
function DrawText; external user32 name 'DrawTextA';
Включайте IDA Pro и анализируйте user32.dll.

Или же как вариант, написать мини-приложение без мусора, с динамической подгрузкой DrawTextA, и затем аналогично IDA Pro проанализировать интересующий кусок.
QunneD вне форума Ответить с цитированием
Старый 03.07.2012, 09:39   #3
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

Цитата:
Сообщение от vova65 Посмотреть сообщение
Подскажите пожалуйста где можно раздобыть исходники win api??
это тоже самое что получить исходники Windows
rpy3uH вне форума Ответить с цитированием
Старый 03.07.2012, 11:29   #4
StIX-S
Пользователь
 
Регистрация: 24.06.2011
Сообщений: 69
По умолчанию

На сколько я знаю, часть исходников виндовс 2000 есть в интернете. Ещё можно посмотреть иходники ReactOS.
StIX-S вне форума Ответить с цитированием
Старый 03.07.2012, 19:33   #5
vova65
Пользователь
 
Регистрация: 05.06.2011
Сообщений: 48
По умолчанию

спасибо всем! как нибудь на досуге поковыряю ReactOS и исполняемый код Windows...
vova65 вне форума Ответить с цитированием
Старый 03.07.2012, 19:58   #6
vova65
Пользователь
 
Регистрация: 05.06.2011
Сообщений: 48
По умолчанию

собственно еще один вопрос не совсем по теме но он относится в функции DrawText...
я написал функцию для подсчета строк выводимого текста только с учетом пробелов (без учета использовании перевода строки #13 ) функцией DrawText...
Код:
function ChPr1(DC:HDC; p:pChar; w:integer):integer;
var c,c1,z:integer;
    s:pChar;
    sz:size;
    f:Boolean;
begin
  c:=CharPos(' ',0,p);
  if c=0 then
   result:=1
  else
  begin
  result:=0;
  z:=0;
  s:=p;
   while c<>0 do
   begin
   c1:=CharPos(' ',c,p);
   if c1>0 then begin
   GetTextExtentPoint32(DC,s,c1-z,sz);
   if sz.cx>=w then
   begin
   s:=p;
   z:=c;
   inc(s,c);
   f:=false;
   inc(result);
   end else f:=true;
   end else if f then inc(result);
   c:=c1;
   end;
  end;
end;
вспомогательная функция
Код:
function CharPos(z:Char; i:integer; p:pChar):integer;
begin
 result:=i;
 inc(p,i);
 while p^<>#0 do
 begin
  inc(result);
  if p^=z then exit;
  inc(p);
 end;
 result:=0;
end;
вопрос: как можно функцию ChPr1 оптимизировать для более быстрой обработки ее ПК??? или здесь уже нечего оптимизировать?
и это я случайно не собираю велосипед наново с привинчиванием запчастей от трактора???
vova65 вне форума Ответить с цитированием
Старый 03.07.2012, 22:01   #7
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

А что должна делать эта функция?
s-andriano вне форума Ответить с цитированием
Старый 03.07.2012, 22:14   #8
vova65
Пользователь
 
Регистрация: 05.06.2011
Сообщений: 48
По умолчанию

Цитата:
А что должна делать эта функция?
считать количество строк выводимого текста функцией DrawText.. при условии что в тексте нет переходов (#13) на новую строку.. а только визуальные символы и пробелы..
vova65 вне форума Ответить с цитированием
Старый 04.07.2012, 01:14   #9
vova65
Пользователь
 
Регистрация: 05.06.2011
Сообщений: 48
По умолчанию

решение нашлось такое:
Код:
DrawText(DC,@sd,CharLeng(@sd),r,DT_CALCRECT or DT_WORDBREAK or DT_EDITCONTROL);
DrawText(DC,@sd,CharLeng(@sd),r, DT_WORDBREAK or DT_EDITCONTROL);
GetTextExtentPoint32(DC,@sd,1,sz);
showmessage(inttostr((r.Bottom-r.Top) div sz.cy)); - количество строк
может кто-то подкинуть алгоритм или готовый код который подсчитает количество строк (строки переносятся по пробелам) которые ограничены максимальной шириной(тойсть максимальная ширина одной строки допустим 20 пикселей)?

моя функция ChPr1 практически с задачей справляется.. только там есть некоторые траблы с выявлением последней строки... в связи с чем на 1 строку в ряде случае функция врет!!

Последний раз редактировалось vova65; 04.07.2012 в 01:37.
vova65 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Различие кода mfc и WinApi(mfc ручками набили, а WinApi автоматически с генерировался!! нужно явное отличие, не могу найти) Артём1991 Помощь студентам 0 25.03.2012 17:13
Исходники... FLASH-KILLER Общие вопросы C/C++ 2 20.03.2010 21:03
Исходники на С# JeyKip Общие вопросы C/C++ 10 16.01.2010 00:59
Исходники FTP. Lamer2009 Общие вопросы C/C++ 2 17.11.2009 12:09