СHARFORMAT

Тема в разделе "WASM.BEGINNERS", создана пользователем DuXeN0N, 5 май 2009.

  1. DuXeN0N

    DuXeN0N New Member

    Публикаций:
    0
    Регистрация:
    2 май 2009
    Сообщения:
    46
    Пишу в FASM в секции .data структуру:

    Cf CHARFORMAT

    пишет illegal instruction. делаю по уроку Iczellion-a
     
  2. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    структура CHARFORMAT не релизована в fasm'e, даже в последней версии.
     
  3. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    typedef struct _charformat {
    UINT cbSize;
    _WPAD _wPad1;
    DWORD dwMask;
    DWORD dwEffects;
    LONG yHeight;
    LONG yOffset;
    COLORREF crTextColor;
    BYTE bCharSet;
    BYTE bPitchAndFamily;
    CHAR szFaceName[LF_FACESIZE];
    _WPAD _wPad2;
    } CHARFORMAT;
     
  4. DuXeN0N

    DuXeN0N New Member

    Публикаций:
    0
    Регистрация:
    2 май 2009
    Сообщения:
    46
    struct CHARFORMAT {
    cbSize dd ?
    dwMask dd ?
    dwEffects dd ?
    yHeight dd ?
    yOffset dd ?
    crTextColor dd ?
    bCharSet dd ?
    bPitchAndFamily dd ?
    szFaceName BYTE LF_FACESIZE dup(?)
    _wPad2 dd ?
    ends
    сделал вот так вот.
    но он выделяет строку ends и пишет extra characters in line, а если убираю-out of memory. эту структура записал в отдельный inc файл
     
  5. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    struct CHARFORMAT
    cbSize dd ?
    dwMask dd ?
    dwEffects dd ?
    yHeight dd ?
    yOffset dd ?
    crTextColor dd ?
    bCharSet dd ?
    bPitchAndFamily dd ?
    szFaceName db LF_FACESIZE dup(?)
    _wPad2 dd ?
    ends
     
  6. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    ой, ошибка. BYTE == unsigned char

    struct CHARFORMAT
    cbSize dd ?
    dwMask dd ?
    dwEffects dd ?
    yHeight dd ?
    yOffset dd ?
    crTextColor dd ?
    bCharSet db ?
    bPitchAndFamily db ?
    szFaceName db LF_FACESIZE dup(?)
    _wPad2 dd ?
    ends
     
  7. DuXeN0N

    DuXeN0N New Member

    Публикаций:
    0
    Регистрация:
    2 май 2009
    Сообщения:
    46
    unindentified symbol "LF_FACESIZE"
     
  8. DuXeN0N

    DuXeN0N New Member

    Публикаций:
    0
    Регистрация:
    2 май 2009
    Сообщения:
    46
    и не пашет. чем поможете?
     
  9. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    LF_FACESIZE == 32
     
  10. DuXeN0N

    DuXeN0N New Member

    Публикаций:
    0
    Регистрация:
    2 май 2009
    Сообщения:
    46
    CHARFORMAT.szFaceName db dup(?) все равно тут ошибка и не компилит. вот код:

    format PE GUI 4.0
    entry start

    include 'win32a.inc'
    include 'encoding\win1251.inc'

    ;Data Section

    section '.data' readable writeable

    LF_FACESIZE = 32

    struct CHARFORMAT
    cbSize dd ?
    dwMask dd ?
    dwEffects dd ?
    yHeight dd ?
    yOffset dd ?
    crTextColor dd ?
    bCharSet db ?
    bPitchAndFamily db ?
    szFaceName db dup(?)
    _wPad2 dd ?
    ends
    а можно как нибудь без него обойтись? мне просто надо сделать смену шрифтов в RichEdit.
     
  11. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    Я создал свою SDK для fasm на основе оригинального MSWIN SDK
    Вот: http://slil.ru/27510458
     
  12. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    CHARFORMAT.szFaceName db dup(?) все равно тут ошибка и не компилит. вот код:

    format PE GUI 4.0
    entry start

    include 'win32a.inc'
    include 'encoding\win1251.inc'

    ;Data Section

    section '.data' readable writeable

    LF_FACESIZE = 32

    struct CHARFORMAT
    cbSize dd ?
    dwMask dd ?
    dwEffects dd ?
    yHeight dd ?
    yOffset dd ?
    crTextColor dd ?
    bCharSet db ?
    bPitchAndFamily db ?
    szFaceName db 32 dup(?)
    _wPad2 dd ?
    ends
     
  13. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    И еще то, что вы сделали в секции .data - это объявление структуры, а надо еще
    создать ее экземпляр:

    section '.data' readable writeable
    cf CHARFORMAT <>

    section '.code' executable

    ...
    mov esi, cf.szFaceName
    ...
     
  14. DuXeN0N

    DuXeN0N New Member

    Публикаций:
    0
    Регистрация:
    2 май 2009
    Сообщения:
    46
    Microedition
    ничего не могу разобрать( все в строчку и без разбору почему то(
     
  15. DuXeN0N

    DuXeN0N New Member

    Публикаций:
    0
    Регистрация:
    2 май 2009
    Сообщения:
    46
    Microedition
    дак я не могу сделать потому,что структура не копмилится. он ее не понимает. в ней ошибка
     
  16. DuXeN0N

    DuXeN0N New Member

    Публикаций:
    0
    Регистрация:
    2 май 2009
    Сообщения:
    46
    Microedition
    все. разобрался.
     
  17. DuXeN0N

    DuXeN0N New Member

    Публикаций:
    0
    Регистрация:
    2 май 2009
    Сообщения:
    46
    Microedition
    спасибо
     
  18. DuXeN0N

    DuXeN0N New Member

    Публикаций:
    0
    Регистрация:
    2 май 2009
    Сообщения:
    46
    Раз уж тема зашла о шрифте. Можно ли сделать fontdialog как в блокноте,чтобы он данные потом посылал в charformat. Если можно то дайте пожалуйста исходники, ссылки на статьи и тд. Заранее благодарен
     
  19. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    http://msdn.microsoft.com/en-us/library/ms646958(VS.85).aspx
     
  20. DuXeN0N

    DuXeN0N New Member

    Публикаций:
    0
    Регистрация:
    2 май 2009
    Сообщения:
    46
    ага. значит так. сделал FontDialog.

    Код (Text):
    1. структура CHOOSEFONT
    2. cf CHOOSEFONT
    3.  
    4. mov [cf.lStructSize],sizeof.CHOOSEFONT
    5.         mov [cf.hwndOwner],0
    6.         mov [cf.hDC],0
    7.         mov [cf.lpLogFont],0
    8.         mov [cf.iPointSize],0
    9.         mov [cf.Flags],CF_ANSIONLY+CF_EFFECTS+CF_SCREENFONTS
    10.         mov [cf.rgbColors],0
    11.         mov [cf.lCustData],0
    12.         mov [cf.lpfnHook],0
    13.         mov [cf.lpTemplateName],0
    14.         mov [cf.hInstance],0
    15.         mov [cf.lpszStyle],0
    16.         mov [cf.nFontType],0
    17.         mov [cf.nSizeMin],0
    18.         mov [cf.nSizeMax],0
    19.         invoke ChooseFont,cf
    20.         invoke SendMessage,[hRichEdit],WM_SETFONT,eax,0
    появляется FontDialog. вопросто в том. как этот шрифт теперь применить к RichEdit-у? WM_SETFONT не пашет.