Создать кнопку используя файл ресурсов

NNN7

Как можно создать кнопку не при помощи CreateWindow(), а в файле ресурсов ? Просто когда предлагают выбрать желаемый ресурс -там такого нету Пожалуйста , подскажите , кто знает
4 ответа

NNN7

Приветствую! С помощью следующего метода, создаются не только кнопки... Редактор ресурсов не понадобится. Метод непрост. Не все "Контролы" будут верно отображаться, работать и легко программироваться.
/*
* Создание кнопки в среде проекта "Win32"
*
* После определения заголовочных файлов, типа:
*/
#include "windows.h";
 
/*
* Поставьте следующий идентификатор (число не имеет значения),
* я указал следующий:
*/
#define IDC_MYBUTTON 31337
 
/*
* Глобально определить, дескриптор кнопки.
* (на любителя, если будут подпрограммы, типа "Триад",
* лучше получать дескриптор непосредственно, через GetDlgItem().
*/
HWND g_hButton;
 
/* Здесь - процедуры... (типа WinMain) */
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    int wmId, wmEvent;
    PAINTSTRUCT ps;
    HDC hdc;
 
    switch (message)
    {
    case WM_CREATE:
        {
        g_hButton=CreateWindowEx(
        WS_EX_CLIENTEDGE,TEXT("BUTTON"),
        TEXT("Start"),
        BS_PUSHBUTTON|WS_CHILD|WS_VISIBLE|
        WS_GROUP|BS_CENTER|BS_VCENTER,
        0,0,0,0,hWnd,(HMENU)IDC_MYBUTTON,hInst,FALSE);
        /*  Обработка ошибок - на вас (здесь не проверяется: "кнопка создалась?") */
 
        break;
        }
 
    case WM_WINDOWPOSCHANGED:
        {
            LPWINDOWPOS lpwp=(LPWINDOWPOS)lParam;
            if (((lpwp->flags&SWP_NOSIZE)==0)||(IsWindowVisible(hWnd)==FALSE))
            {
                int width=lpwp->cx-(GetSystemMetrics(SM_CXSIZEFRAME)*2);
                int height=lpwp->cy-(GetSystemMetrics(SM_CYSIZEFRAME)*2)-GetSystemMetrics(SM_CYMENU)-GetSystemMetrics(SM_CYCAPTION);
                
                /* Установим кнопку, где-то в центре окна: */
                SetWindowPos( GetDlgItem(hWnd,IDC_MYBUTTON),
                NULL,230,60,150,40,
                SWP_NOZORDER|SWP_NOREPOSITION|SWP_NOREDRAW);
                /*
                // Можно так:
                SetWindowPos( g_hButton,
                NULL,230,60,150,40,
                SWP_NOZORDER|SWP_NOREPOSITION|SWP_NOREDRAW);
                */
 
                InvalidateRect(hWnd,NULL,TRUE);
            } 
        }
        break;
 
    case WM_COMMAND:
        wmId    = LOWORD(wParam);
        wmEvent = HIWORD(wParam);
        // Parse the menu selections:
        switch (wmId)
        {
        case IDC_MYBUTTON:
            {
                MessageBox(hWnd,
                    TEXT("Hello, World!"),
                    TEXT("Information"),
                    MB_OK|MB_ICONINFORMATION|MB_SETFOREGROUND|MB_TOPMOST);
            }
            break;
 
        case IDM_ABOUT:
            DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
            break;
        case IDM_EXIT:
            DestroyWindow(hWnd);
            break;
 
        default:
            return DefWindowProc(hWnd, message, wParam, lParam);
        }
        break;
 
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
 
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}


NNN7

Как можно создать кнопку не при помощи CreateWindow(), а в файле ресурсов ?
очень просто
Просто когда предлагают выбрать желаемый ресурс -там такого нету
А надо не в этом окошке смотреть. Кнопки добавляются на диалоговые окна, так вот в режиме редактирования диалогового окна у тебя должна появляться панель ToolBox, если нет - высвети её... Там много чего можно добавить, см скрин.


NNN7

Зачем голову морочите - это вас прёт?


NNN7

Зачем голову морочите - это вас прёт?
эт ты мне? Походу тебя там прёт, и не по детский. Прочитай вопрос ТС и посмотри что за лажу ты сам напостил. Я ответил на его вопрос.