Win API

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

  1. Mark

    Mark Марк

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

    wchar_t *st[101];
     
  2. ASMatic

    ASMatic New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2010
    Сообщения:
    233
    wchar_t *st[101]; //будет массив с указателей, тебе как понимаю нужен
    wchar_t st[101]; //массив символов под строку

    GetWindowText( hWnd, st, ARRAYSIZE(st) );
     
  3. Mark

    Mark Марк

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

    Спасибо большое. Вот только вопрос. Когда содержимое поля сохраняется в массиве? Когда пользователь щелкнет по клиентской области? или постоянно?
     
  4. ASMatic

    ASMatic New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2010
    Сообщения:
    233
    Mark
    ого, вопросец) - у тебя на стеке выделяются место под строку
    wchar_t st[101]; // sub esp, 202

    потом ты вызываешь апишку GetWindowText() где то там внутри виндоса лежит этот текст и после того как ты кольнул апишку система скопировала в твой буфер содержимое своего буфера (с которого рисуется текст) и вернула длину... Так что изменений тебе не видать, т.е. хош узнать что там написано - "позвони" и спроси)
     
  5. Mark

    Mark Марк

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

    Ну мне надо сохранить содержимое в массив, записать в txt, а потом, после открытия этой программы, вывести в текстовое поле поле. Думаю, как сделать.

    На чем я сейчас завис - как потом вывести этот массив на экран? Да, вот: в какой момент будет производиться вывод? Ну как пользователь ввел текст и нажал на кнопку? Или как?
     
  6. ASMatic

    ASMatic New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2010
    Сообщения:
    233
    Mark
    иди почитай чего..не знаю даже - в примерах поищи готового чего-то с едитом и т.п. Поищи тут на форуме или в гугле. Вариантов реально куча, а там уже поднастроишь под себя, когда поймешь что к чему.
     
  7. Mark

    Mark Марк

    Публикаций:
    0
    Регистрация:
    15 сен 2011
    Сообщения:
    304
    Какой у этой штуки идентификатор? ((
     
  8. yashechka

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

    Публикаций:
    90
    Регистрация:
    2 янв 2012
    Сообщения:
    1.484
    Адрес:
    Россия
  9. rttgedt

    rttgedt Антон

    Публикаций:
    0
    Регистрация:
    12 окт 2010
    Сообщения:
    85
    yashechka> не верно. gh - HWND.

    ID ты сам должен задать, через параметр hMenu. Или можно получить через ф-ю:
    Код (Text):
    1. int GetDlgCtrlID(HWND hwndCtl);
     
  10. Mark

    Mark Марк

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

    А можете пожалуйста помочь задать, а не получить? (((
     
  11. rttgedt

    rttgedt Антон

    Публикаций:
    0
    Регистрация:
    12 окт 2010
    Сообщения:
    85
    А в чем проблема-то?

    для
    Код (Text):
    1. gh = CreateWindow( L"edit",
    2.                             L"Ваши заметки: ",
    3.                             WS_VISIBLE|WS_CHILD|WS_BORDER|ES_AUTOHSCROLL|ES_AUTOVSCROLL|ES_MULTILINE|ES_LEFT,
    4.                             0,
    5.                             0,
    6.                             300,
    7.                             500,
    8.                             hwnd,
    9.                             12,    /* <--- Твой CtrlID, в данном случае ID = 12 */
    10.                             hInstance,
    11.                             NULL);
     
  12. Mark

    Mark Марк

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

    wchar_t st[101]; //массив символов под строку



    gh = CreateWindow( L"edit", L"Ваши заметки: ", WS_VISIBLE|WS_CHILD|WS_BORDER|ES_AUTOHSCROLL|ES_AUTOVSCROLL|ES_MULTILINE|ES_LEFT, 0, 0, 300, 500, hwnd, NULL, hInstance, NULL);


    GetDlgItemText
    (
    gh,
    int nIDDlgItem, // идентификатор элемента управления
    st, // адрес буфера для текста
    ARRAYSIZE(st) // максимальная длина строки
    );
     
  13. rttgedt

    rttgedt Антон

    Публикаций:
    0
    Регистрация:
    12 окт 2010
    Сообщения:
    85
    Ну и используй ID который CreateWindow задаешь для nIDDlgItem
     
  14. Mark

    Mark Марк

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

    - Visual S.
     
  15. rttgedt

    rttgedt Антон

    Публикаций:
    0
    Регистрация:
    12 окт 2010
    Сообщения:
    85
    Пля, ну дай ты ему уже (HMENU) 12 :)

    А еще лучше поучи сперва Си, потом за окошки берись
     
  16. Mark

    Mark Марк

    Публикаций:
    0
    Регистрация:
    15 сен 2011
    Сообщения:
    304
    Я по разному пробовал, можете, пожалуйста, на фрагменте? ((
     
  17. rttgedt

    rttgedt Антон

    Публикаций:
    0
    Регистрация:
    12 окт 2010
    Сообщения:
    85
    Код (Text):
    1. int EditCtrlID = 12;
    2. gh = CreateWindow( L"edit",
    3.                    L"Ваши заметки: ",
    4.                    WS_VISIBLE|WS_CHILD|WS_BORDER|ES_AUTOHSCROLL|ES_AUTOVSCROLL|ES_MULTILINE|ES_LEFT,
    5.                    0,
    6.                    0,
    7.                    300,
    8.                    500,
    9.                    hwnd,
    10.                    (HMENU) EditCtrlID,
    11.                    hInstance,
    12.                    NULL);
    13.  
    14. /* ... */
    15.  
    16. GetDlgItemText(
    17.                 gh,    
    18.                 EditCtrlID,          // идентификатор элемента управления
    19.                 st,                    // адрес буфера для текста
    20.                 ARRAYSIZE(st)    // максимальная длина строки
    21.                 );
     
  18. steelfactor

    steelfactor New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    501
    Интересно, что уважаемый Mark еще найдет?
    P.S. Мне так, для себя, "чиста паржать"
     
  19. rttgedt

    rttgedt Антон

    Публикаций:
    0
    Регистрация:
    12 окт 2010
    Сообщения:
    85
    Сейчас у него на очереди будет преобразование полученного текста в циферку )
     
  20. Mark

    Mark Марк

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

    Не угадали)))

    Я короче изучил (не поверите - сам :)) SetWindowText. И хочу сделать так: Пользователь ввел текст, и изменился заголовок. Сварил так:


    Ну и заголовок пустой ((( В чем проблема?