Win API

Тема в разделе "WASM.BEGINNERS", создана пользователем Mark, 30 дек 2011.

  1. yashechka

    yashechka Ростовский фанат Нарвахи

    Публикаций:
    90
    Регистрация:
    2 янв 2012
    Сообщения:
    1.449
    Адрес:
    Россия
    Ты слишком много пытаешся познать сразу. У ебя голова лопнет. ВЫучи потихоньки си и си-- а потом уже на апи. Джефри Рихтера читай
     
  2. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
    Mark
    Разделители не возвращаются, возвращается только то, что не является разделителем.
     
  3. Mark

    Mark Марк

    Публикаций:
    0
    Регистрация:
    15 сен 2011
    Сообщения:
    304
    AsmGuru62

    А не подскажите, есть ли все-таки такая функция, которая читает либо случайную строку, либо случайное слово?
     
  4. yashechka

    yashechka Ростовский фанат Нарвахи

    Публикаций:
    90
    Регистрация:
    2 янв 2012
    Сообщения:
    1.449
    Адрес:
    Россия
    т.е. случайное слово, есть генератор случайных чисел
     
  5. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
    Mark
    Такой функции я не знаю.

    Вот простой генератор чисел:
    http://en.wikipedia.org/wiki/Xorshift

    Получаешь число и затем:
    Код (Text):
    1. UINT random32 = <next value from XorShift128>;
    2. double _0_to_1 = (double) random32 / 4294967296.0;
    3. UINT linesInFile = <count the lines in your file>;
    4. UINT randomLine = (UINT) ((double) linesInFile * _0_to_1 + .5);
    5.  
    6. FILE* f = fopen (".....", "rt");
    7. CHAR line[256];
    8. UINT index = 0;
    9.  
    10. while (fgets (line, 256, f))
    11. {
    12.     ++index;
    13.     if (index == randomLine)
    14.     {
    15.         // 'line' содержит случайную строку из файла
    16.         break;
    17.     }
    18. }
    19. fclose (f);
     
  6. Mark

    Mark Марк

    Публикаций:
    0
    Регистрация:
    15 сен 2011
    Сообщения:
    304
    AsmGuru62

    А не поможете записать каждое слово из файла в элемент char'овского массива?
     
  7. Mark

    Mark Марк

    Публикаций:
    0
    Регистрация:
    15 сен 2011
    Сообщения:
    304
    То есть чтобы в элементе массива лежало по слову из файла
     
  8. Mark

    Mark Марк

    Публикаций:
    0
    Регистрация:
    15 сен 2011
    Сообщения:
    304
    То просто очень надо ((
     
  9. Sholar

    Sholar New Member

    Публикаций:
    0
    Регистрация:
    16 окт 2011
    Сообщения:
    189
    Тебе показали как юзать strtok.
     
  10. Mark

    Mark Марк

    Публикаций:
    0
    Регистрация:
    15 сен 2011
    Сообщения:
    304
    Sholar

    Так оно из файла не берет. А мне нада чтоб из файла брались слова, и по очереди записывались в следующий элемент массива.
     
  11. Sholar

    Sholar New Member

    Публикаций:
    0
    Регистрация:
    16 окт 2011
    Сообщения:
    189
    Читаешь файл в массив, берешь оттуда свои слова и записываешь в массив слов или что у тебя там.
     
  12. Mark

    Mark Марк

    Публикаций:
    0
    Регистрация:
    15 сен 2011
    Сообщения:
    304
    Sholar

    Брать из массива strtok'ом?
     
  13. Sholar

    Sholar New Member

    Публикаций:
    0
    Регистрация:
    16 окт 2011
    Сообщения:
    189
  14. Mark

    Mark Марк

    Публикаций:
    0
    Регистрация:
    15 сен 2011
    Сообщения:
    304
    До смерти надоела TextOut. Изучил DrawText. Можно поменять шрифт на нормальный? А то по умолчанию страшноватый.
     
  15. Mark

    Mark Марк

    Публикаций:
    0
    Регистрация:
    15 сен 2011
    Сообщения:
    304
    Sholar

    Тупой вопрос конечно, на как в строке сделать перенос на следующую (ENTER)? \n тут не помогает. И чтоб эта конструкция отображалась в TextOut?
     
  16. Sholar

    Sholar New Member

    Публикаций:
    0
    Регистрация:
    16 окт 2011
    Сообщения:
    189
    Не понял, ты выводиь текст АПИ`шкой TextOut? Так нет никакого переноса строки, ты сам указываешь координаты, куда нужно выводить текст.
     
  17. Mark

    Mark Марк

    Публикаций:
    0
    Регистрация:
    15 сен 2011
    Сообщения:
    304
    Sholar

    Это то я знаю. То есть для переноса нужно писать еще один TextOut?
     
  18. Sholar

    Sholar New Member

    Публикаций:
    0
    Регистрация:
    16 окт 2011
    Сообщения:
    189
  19. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
    Mark
    Со шрифтом немного сложнее.
    Вот так выглядит стандартный WM_PAINT:
    Код (Text):
    1. case WM_PAINT:
    2.     {
    3.         PAINTSTRUCT ps;
    4.         HDC hDC = BeginPaint (hWnd, &ps);
    5.         HFONT newFont;
    6.         HGDIOBJ oldFont;
    7.         LOGFONT lf = {0};
    8.         int iPixelsPerInch = GetDeviceCaps (hDC, LOGPIXELSY);
    9.         int iPoints = 11; // <-- Font size in points
    10.  
    11.         lf.lfHeight = -MulDiv (iPoints, iPixelsPerInch, 72);
    12.         lf.lfWeight = FW_NORMAL;
    13.         lstrcpy (lf.lfFaceName, "Verdana");
    14.         newFont = CreateFontIndirect (&lf);
    15.         oldFont = SelectObject (hDC, newFont);
    16.  
    17.         SetBkMode (hDC, TRANSPARENT);
    18.         SetColor (hDC, RGB (255, 0, 0)); // <-- You can set any font color
    19.         //
    20.         // ... do whatever needed with DrawText, TextOut, etc.
    21.         //
    22.  
    23.         SelectObject (hDC, oldFont);
    24.         DeleteObject (newFont);
    25.  
    26.         EndPaint (hWnd, &ps);
    27.     }
    28.     break;
    http://msdn.microsoft.com/en-us/library/dd145037(v=vs.85).aspx

    Это если за один WM_PAINT использовать один шрифт.
    Если же надо менять шрифты, то там ещё больше кода, на каждый шрифт нужен свой
    вызов CreateFontIndirect, SelectObject и DeleteObject.
    Читай про SelectObject в MSDN - неверное его использование вызовет утечку ресурсов.
     
  20. Mark

    Mark Марк

    Публикаций:
    0
    Регистрация:
    15 сен 2011
    Сообщения:
    304
    AsmGuru62

    Спасибо большое.