Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Копирование строки из ресурса и вывод её в окно


Автор: StillPhelix 16.4.2018, 18:52
Доброе время суток!
функция LoadString загружает строку из ресурса в буфер szTextWin, а функция DrawTextA выводит содержимое буфера в окно. Проблема в том, что выводится  в окно кракозябла. Отладчик показывает, что LoadString строку из ресурса в буфер копирует нормально.
Код

LRESULT CALLBACK WndProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam){
    HICON hIcon, hIconSm;
    HDC hDC;
    PAINTSTRUCT ps;
    RECT rect;
    int userReply;
    TCHAR szTextWin[20];
    static HINSTANCE hInst;
    static HMENU hMenu;  // дескриптор главного меню
    switch(uMsg)
    {
    case WM_CREATE:
        hInst = GetModuleHandle(NULL);
        LoadString(hInst,IDS_REGTEXT,szTextWin,20);
        hIcon = LoadIcon(hInst, MAKEINTRESOURCE(IDI_ICO_KEYS));
        hIconSm = (HICON)LoadImage(hInst, MAKEINTRESOURCE(IDI_ICO_KEYS), IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR);
        SetClassLong(hWnd, GCL_HICON, (LONG)hIcon);
        SetClassLong(hWnd, GCL_HICONSM, (LONG)hIconSm);
    case WM_PAINT:
        hDC=BeginPaint(hWnd,&ps);
        GetClientRect(hWnd,&rect);
        DrawTextA(hDC,szTextWin,20,&rect,DT_SINGLELINE|DT_CENTER|DT_VCENTER);
        EndPaint(hWnd,&ps);
        break;
    case WM_CLOSE:
            DestroyWindow(hWnd);
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
        case WM_COMMAND:
            switch (LOWORD(wParam))
        case ID_REGISTERME:

            // Вызов диалога
            DialogBox(hInst, MAKEINTRESOURCE(IDD_DIALOG_MAIN), hWnd, CrDlgProc);

            break;
    default:
        return DefWindowProc(hWnd,uMsg,wParam,lParam);
    }
    return 0;
}


Автор: StillPhelix 16.4.2018, 20:01
исправить TCHAR static szTextWin[]

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)