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


Автор: Dron32 13.3.2008, 18:37
Парни, подскажите, как создать панель, подобную той что можно создать в Builder'e простым нажатием кнопки, в Visual'е чистыми средставми Win32 API. Заранее, большое спасибо

Автор: Мурлыкатам_ 14.3.2008, 13:50
Че за панель?
Если на вин апи, явно она уже есть, нужно просто узнать название ее класса и делов то... А создастся как и все контролы создаются...

Автор: BorisVorontsov 15.3.2008, 00:27
Цитата(Dron32 @  13.3.2008,  18:37 Найти цитируемый пост)
 той что можно создать в Builder'e простым нажатием кнопки


Вот что делает с людьми кнопкокидательство... Если речь идет о TPanel -- CreateWindow[Ex] STATIC

Автор: Earnest 17.3.2008, 09:45
BorisVorontsov, точно. Нужно запретить законодательно использование визардов программистам со стажем меньше, скажем, 5 лет. Как вредное для умственного здоровья. smile 

Автор: SABROG 17.3.2008, 19:02
Цитата(Earnest @ 17.3.2008,  09:45)
BorisVorontsov, точно. Нужно запретить законодательно использование визардов программистам со стажем меньше, скажем, 5 лет. Как вредное для умственного здоровья. smile

Просто надо ввести лицензию на программирование, которую обновлять раз в 5 лет сдавая экзамен  smile 

Автор: Dron32 17.3.2008, 19:31
В таком случаи почему отрисовывается эта панель. Вот кусок кода:

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
   HWND hWnd, hPanel;
 
   Rect->right = GetSystemMetrics(SM_CXSCREEN);
   Rect->bottom = GetSystemMetrics(SM_CYSCREEN);

   hInst = hInstance; // Store instance handle in our global variable

   hWnd=CreateWindowEx(0, szWindowClass, "Test",
    WS_OVERLAPPEDWINDOW | WS_SYSMENU | WS_MINIMIZEBOX,
    Rect->right/6, Rect->bottom/4, Rect->right/2+Rect->right/6, Rect->bottom/2,
    NULL,NULL,hInstance,NULL);

   if (!hWnd)
   {
      return FALSE;
   }

   ShowWindow(hWnd, nCmdShow);
   UpdateWindow(hWnd);

   hPanel = CreateWindow("STATIC", "", WS_CHILDWINOW,
       CW_USEDEFUALT, CW_USEDEFUALT, 100, 100, hWnd, NULL, hInstance, NULL);

   if(!hPanel)
       return FALSE;

   ShowWindow(hPanel, nCmdShow);
   UpdateWindow(hPanel);

}

Автор: 586 17.3.2008, 19:57
Стиля WS_BORDER не хватает. Или WS_EX_CLIENTEDGE (экс-стиль для CreateWindowEx).

Цитата(Dron32 @  17.3.2008,  19:31 Найти цитируемый пост)
ShowWindow(hPanel, nCmdShow);
   UpdateWindow(hPanel);

Это здесь лишнее. Задай стиль WS_VISIBLE.

Автор: Dron32 18.3.2008, 09:29
Спасибо большое, парни. Я только начинаю с этими делами отгребать, так что буду обращаться сюда постоянно со столь же простыми вопросами (а может и не очень). Думаю, что может еще кому пригодится

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