Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Rebar 
:(
    Опции темы
sdjhsjhd
Дата 26.12.2008, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 19.11.2008

Репутация: нет
Всего: нет



Вот код проги.
Делаю ребар и в нем тулбар.
Дело в том что ребар отображаться не хочет.
Просто пустое окно создается и все...
Код

#pragma comment(lib,"comctl32.lib")
#include <windows.h>
#include <commctrl.h>
#include "resource.h"


LRESULT CALLBACK WndProc(HWND Wnd,UINT message,WPARAM wparam,LPARAM lparam);
bool Create(HWND hwnd);

int APIENTRY WinMain(HINSTANCE hinst,HINSTANCE prev,LPSTR cmd,int show)
{
    //Неиспользуемые параметры
    UNREFERENCED_PARAMETER(prev);
    UNREFERENCED_PARAMETER(cmd);
    LPCTSTR classn;//Имя класса окна
    classn=L"Classname";
    //Регистрация окна
    WNDCLASSEX wndc;
    wndc.lpszClassName=classn;
    wndc.lpfnWndProc=WNDPROC(WndProc);
    wndc.cbSize=sizeof(WNDCLASSEX);
    wndc.cbClsExtra=0;
    wndc.cbWndExtra=0;
    wndc.hbrBackground=HBRUSH(COLOR_WINDOW);
    wndc.hInstance=hinst;
    wndc.hCursor=LoadCursor(0,IDC_ARROW);
    HICON Icon;
    Icon = LoadIcon(hinst,MAKEINTRESOURCE(IDI_APP));
    wndc.hIcon=wndc.hIconSm=0;
    wndc.lpszMenuName=MAKEINTRESOURCE(IDR_MENU1);
    wndc.style=CS_HREDRAW|CS_VREDRAW;
    RegisterClassEx(&wndc);
    //Создание окна
    HWND wnd=CreateWindowEx(WS_EX_APPWINDOW,classn,L"Прога",
    WS_SYSMENU|WS_THICKFRAME|WS_MAXIMIZEBOX|WS_MINIMIZEBOX|//Стиль окна
    WS_VISIBLE|
    WS_CLIPCHILDREN,//Чтобы не мерцало
    CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,//Размер и положение окна
    0,0,hinst,0);
    SendMessage(wnd,WM_SETICON,ICON_BIG,LPARAM(Icon));//Установка иконки
    ShowWindow(wnd,SW_SHOW);
    UpdateWindow(wnd);
    //Цикл сообщений
    MSG msg;
    while (GetMessage(&msg,0,0,0)!=0)
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.wParam;
}

bool Create(HWND hwnd)
{
    INITCOMMONCONTROLSEX init;
    init.dwSize=sizeof(INITCOMMONCONTROLSEX);
    init.dwICC=ICC_COOL_CLASSES|ICC_BAR_CLASSES;
    InitCommonControlsEx(&init);
    //тулбар
    HWND toolbar = CreateWindowEx(0,TOOLBARCLASSNAME,0,
    WS_CHILD|TBSTYLE_WRAPABLE|CCS_NOPARENTALIGN|
    TBSTYLE_TRANSPARENT|CCS_NODIVIDER,
    0,0,0,0,hwnd,0,GetModuleHandle(0),0);
    if (!toolbar) return false;
    HBITMAP bmp;
    bmp=LoadBitmap(GetModuleHandle(0),MAKEINTRESOURCE(IDB_BITMAP1));
    HIMAGELIST imgl;
    imgl=ImageList_Create(24,24,ILC_COLOR32|ILC_MASK,3,0);
    ImageList_Add(imgl,bmp,0);
    SendMessage(toolbar,TB_SETIMAGELIST,WPARAM(0),LPARAM(imgl));
    SendMessage(toolbar,TB_LOADIMAGES,
    WPARAM(IDB_STD_SMALL_COLOR),LPARAM(HINST_COMMCTRL));
    TBBUTTON tbtn[1];
    tbtn->fsState=TBSTATE_ENABLED;
    tbtn->fsStyle=BYTE(TBSTYLE_BUTTON);
    tbtn->iBitmap=0;
    tbtn->iString=INT_PTR(L"Кнопка");
    tbtn->idCommand=0;
    SendMessage(toolbar,TB_INSERTBUTTON,WPARAM(0),LPARAM(tbtn));
    //ребар
    HWND rebar = CreateWindowEx(0,REBARCLASSNAME,0,
    WS_CHILD|WS_CLIPCHILDREN|WS_CLIPSIBLINGS|WS_VISIBLE|
    RBS_VARHEIGHT|CCS_NODIVIDER|RBS_BANDBORDERS|
    CCS_NOPARENTALIGN|CCS_NORESIZE,
    0,0,0,0,
    hwnd,0,GetModuleHandle(0),0);
    if (!rebar) return false;
    REBARBANDINFO rbi={sizeof(REBARBANDINFO)};
    rbi.fMask=
    RBBIM_STYLE|
    //RBBIM_TEXT|
    RBBIM_CHILD|
    RBBIM_CHILDSIZE|
    RBBIM_SIZE;
    rbi.fStyle=RBBS_CHILDEDGE|RBBS_GRIPPERALWAYS;
    rbi.lpText=L"Toolbar";
    rbi.cbSize=sizeof(rbi.lpText);
    rbi.cyChild=0;
    rbi.cyMinChild=24;
    rbi.cxMinChild=0;
    rbi.cx=0;
    rbi.hwndChild=toolbar;
    if (!SendMessage(rebar,RB_INSERTBAND,WPARAM(-1),LPARAM(&rbi)))
    {
    return false;
    }
    return true;
}

LRESULT CALLBACK WndProc(HWND Wnd,UINT message,WPARAM wparam,LPARAM lparam)
{
    switch (message)
    {
    case WM_CREATE:
        {
        if (Create(Wnd)==false) MessageBox(0,0,0,0);
        }
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(Wnd,message,wparam,lparam);
    }
    return 0;
}

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0469 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.