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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> пытаюсь сделать строку состояния ... но ............. 
:(
    Опции темы
FortMax
Дата 9.11.2007, 08:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 485
Регистрация: 2.10.2006
Где: Россия, г. Бироби джан ЕАО

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



не получается ! и там и там возвращает NULL ...


--------------------
user posted image
PM MAIL ICQ   Вверх
Sleepman
Дата 9.11.2007, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

hTreeView=CreateWindow(WC_TREEVIEW, 
             "1111111", 
             WS_VISIBLE|WS_TABSTOP|WS_CHILD|TVS_HASLINES|TVS_HASBUTTONS|TVS_LINESATROOT,
             0,
             0,
             Rect.right,
             Rect.bottom,
             hwnd,
             NULL,
             hInst,
             NULL);


Первым параметром не может быть WC_TREEVIEW. По-хорошему, там должна быть строка. Не хотел ли ты вызвать функцию CreateWindowEx? Осторожно! там другой порядок аргументов!

GetLastError после этого возвращает 0x57F, а по-русски: Не удается найти класс окна.
Удачи!

Это сообщение отредактировал(а) Sleepman - 9.11.2007, 11:35
PM MAIL   Вверх
Mihhail
Дата 9.11.2007, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Sleepman @  9.11.2007,  15:34 Найти цитируемый пост)
Первым параметром не может быть WC_TREEVIEW. По-хорошему, там должна быть строка.


Почему не может? Вот строка из commctrl.h :

#define WC_TREEVIEWA  "SysTreeView32"

Чем не строка?


FortMax, попробуй вместо WC_TREEVIEW написать  "SysTreeView"

Это сообщение отредактировал(а) Mihhail - 9.11.2007, 11:53
PM MAIL WWW   Вверх
Sleepman
Дата 9.11.2007, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Mihhail @  9.11.2007,  11:44 Найти цитируемый пост)
Почему не может? Вот строка из commctrl.h :

#define WC_TREEVIEWA  "SysTreeView32"

Чем не строка?


Пардон, мой косяк.

По-теме: добавь в опциях линкера либу comctl32.lib

и после
Код

hwnd = CreateWindowEx (
           0,                   /* Extended possibilites for variation */
           szClassName,         /* Classname */
           "Windows App",       /* Title Text */
           WS_OVERLAPPEDWINDOW, /* default window */
           CW_USEDEFAULT,       /* Windows decides the position */
           CW_USEDEFAULT,       /* where the window ends up on the screen */
           544,                 /* The programs width */
           375,                 /* and height in pixels */
           NULL,        /* The window is a child-window to desktop */
           NULL,                /* No menu */
           hInst,       /* Program Instance handler */
           NULL                 /* No Window Creation data */
           );


вызывай
Код

InitCommonControls ();


added: И поправь координаты в treeview, а то не видно где он и что он вообще создается!

Это сообщение отредактировал(а) Sleepman - 9.11.2007, 14:20
PM MAIL   Вверх
FortMax
Дата 10.11.2007, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 485
Регистрация: 2.10.2006
Где: Россия, г. Бироби джан ЕАО

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



не получается у меня никак сделать элементы управления !!! я посмотрел у моего DVP-Cpp в паке lib нет файла comctl32.lib, может из-за этого ????


--------------------
user posted image
PM MAIL ICQ   Вверх
Mihhail
Дата 10.11.2007, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Но ведь компиляция проходит? У меня он в папке lib\Psdk.
Если действительно нет, то держи:...

Присоединённый файл ( Кол-во скачиваний: 8 )
Присоединённый файл  comctl32.lib 3,50 Kb
PM MAIL WWW   Вверх
FortMax
Дата 12.11.2007, 02:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 485
Регистрация: 2.10.2006
Где: Россия, г. Бироби джан ЕАО

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



Дайте пожалуйста исходник с рабочим элементом управления ..., а то я не чё не могу понять ... smile  

Делаю так 
Код

hStatusWindow = CreateWindow( STATUSCLASSNAME, "111",   WS_VISIBLE|WS_CHILD|SBARS_SIZEGRIP, 20, 30, 100, 100, hwnd, NULL, hInst, NULL);
           void WINAPI InitCommonControls(void);


при проверке оказывается, что возвращает NULL !!!!
при компеляцииошибок не выдаёт..., а если я вместо STATUSCLASSNAME ставлю WC_BUTTON, то кнопка создаёться !!!!!!
попробовал сделать в другой среде VC++, ситуация получилась аналогичная, только компановщик выдаёт сообщение
Код

Loaded 'ntdll.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\kernel32.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\user32.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\gdi32.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\MSCTF.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\msvcrt.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\advapi32.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\rpcrt4.dll', no matching symbolic information found.
The thread 0x6C0 has exited with code 0 (0x0).
The program 'C:\Program Files\Microsoft Visual Studio\MyProjects\5555555\Debug\5555555.exe' has exited with code 0 (0x0).



Это сообщение отредактировал(а) FortMax - 12.11.2007, 08:35


--------------------
user posted image
PM MAIL ICQ   Вверх
Mihhail
Дата 13.11.2007, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



FortMax, вызов InitCommonControls( ); нужно делать до создания элементов управления, лучше в самом начале программы. Поэтому и не создаётся элемент! нет доступа к нужным функциям и константам.

Код

#include <windows.h>
#include <commctrl.h>

#define WINDOW_CLASS_NAME "WINCLASS"

//---Главный обработчик сообщений -------------------------------
LRESULT CALLBACK WindowProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
{
   switch( msg ){
      case WM_DESTROY:{
         //Завершение работы приложения
         PostQuitMessage(0);
         }
      }

   //Обработка сообщений по умолчанию
   return ( DefWindowProc( hwnd, msg, wparam, lparam ) );
}
//------------------------------------------------------------------------

//--- WINMAIN --//
int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hprevinstance, LPSTR lpcmdline, int ncmdshow)
{
   HWND hwndGrWin, hTreeView, swHw;
   MSG  msg;                     //Структура сообщений
   WNDCLASSEX listclass;      //Класс

   //Загрузка dll элементов управления
   InitCommonControls( );

   setmem( &listclass, sizeof(WNDCLASSEX), 0 );
   listclass.cbSize = sizeof(WNDCLASSEX); //Размер структуры
   listclass.style = CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW; //Флаг стилей
   listclass.lpfnWndProc = WindowProc;    //Указатель на функцию-обработчик событий
   //listclass.cbClsExtra = 0;              //Доп. инфа о классе
   //listclass.cbWndExtra = 0;              //Доп. инфа об окне
   listclass.hInstance = hinstance;       //Экземрляр приложения
   //listclass.hIcon = NULL;//LoadIcon(hinstance, "MAINICON");       //Основная пиктограмма
   //listclass.hCursor = LoadCursor(NULL, IDC_ARROW);         //Курсор окна
   listclass.hbrBackground = (HBRUSH)COLOR_BACKGROUND;          //Кисть фона окна
   //listclass.lpszMenuName = NULL;           //Имя присоедененённого меню
   listclass.lpszClassName = WINDOW_CLASS_NAME;  //Имя создаваемого класса

   //Регистрация класса окна
   if( !RegisterClassEx( &listclass) ) return(0);

   //Создание окна
   hwndGrWin =
   CreateWindowEx( NULL,         //Расширенный класс
                  WINDOW_CLASS_NAME,        //Класс окна
                  "Windows App",                //Заголовок
                  WS_VISIBLE | WS_CAPTION | WS_SYSMENU,
                  200, 100,      //Координаты
                  300, 400,      //Размер
                  NULL,          
                  NULL,          //Дескриптор меню
                  hinstance,     //Экземпляр приложения
                  NULL );        //Ук. на данные создания окна - lpParam


   //Создаём элемент управления
   hTreeView = CreateWindow(WC_TREEVIEW, "",
             WS_VISIBLE|WS_TABSTOP|WS_CHILD|TVS_HASLINES|TVS_HASBUTTONS|TVS_LINESATROOT,
             0, 0, 200, 200, hwndGrWin, NULL, hinstance, NULL);

   //Создание полоски состояния
   swHw = CreateStatusWindow( WS_CHILD | WS_VISIBLE, "Text", hwndGrWin, (UINT)WindowProc );


   //Главный цикл сообщений
   while( GetMessage( &msg, NULL, 0, 0 ) ){

     //Пересылка сообщения функции-обработчику - WinProc
     DispatchMessage( &msg );
         }

   
   //Возврат в Windows
   return( msg.wParam );
} //WinMain

PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0483 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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