изменение размеров контрола.

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by DooD, 2 Mar 2013.

  1. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    442
    Reputations:
    288
    Всем здрасьти.
    Вот решил тут попробовать создавать элементы управления с помощью CallModalDialog,создаю эдит таким методом:
    Code:
    DlgEdit WS_TABSTOP,10,10,500,500,IDC_EDIT
    суть заключается в том что бы поменять размер этого эдита,после получения метрики экрана.
    Code:
    .................some code..............
    xc dd 0
    yc dd 0
    .................some code..............
    
    Invoke GetSystemMetrics,SM_CXSCREEN; допустим
    mov xc,eax ; теперь тут должно быть число точек по горизонтали
    
    вот и дальше я не могу понять как мне изменить его размер.нашел вроде бы функцию MoveWindow где можно задать координаты и размеры окна (ведь эдит этот считай то же окно).Но там нужен хэндл.тогда вопрос два возникает:как получить хэндл на эдит созданный таким методо? IDC_EDIT не подходит.
    Пробовал подставлять как и в саму процедуру обработки сообщений,так и после создания эдит-не работает.
    сама DlgEdit почему то не принимает xc,yc с криком invalid instruction.Как бытЬ?на апи эдит как то проще сделать,но надо именно таким способом.
     
  2. BlackIce

    BlackIce Elder - Старейшина

    Joined:
    10 Jan 2013
    Messages:
    100
    Likes Received:
    31
    Reputations:
    27
    Я хз, а SetWindowPos не катит?
     
  3. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    442
    Reputations:
    288
    разобрался,вопрос снят.
    на заметку:
    через findwindowex находим дескриптор дочернего элемента(имя контрола можно посмотреть через программку) и используем его в MoveWindow.rfr то просто,но работает)
     
  4. alexey-m

    alexey-m Elder - Старейшина

    Joined:
    15 Jul 2009
    Messages:
    518
    Likes Received:
    100
    Reputations:
    37
    Code:
    /* получить хендл контрола по его идентификатору в заданном окне hDlg */
    HANDLE hEdit = GetDlgItem(hDlg, IDC_EDIT);
    
    /* получить идентификатор контрола по его хэндлу */
    idEdit = GetWindowLong(hEdit, GWL_ID); 
    idEdit = GetDlgCtrlID(hEdit);
    
     
    1 person likes this.
  5. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    442
    Reputations:
    288
    тоже пойдет,спс.