Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Пробуем использовать Tab control, и вызывая InitCommonControls, слышим ... 
:(
    Опции темы
Royan
Дата 3.4.2004, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


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

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



Для использования обыкновенных табов, попробовал использовать пример приведенный на msdn'е:


Код
HWND WINAPI CMyWin::SetMyTab(){

 RECT rcClient;
 HWND hwndTab;
 TCITEM tie;
 int i;

 // Get the dimensions of the parent window's client area, and
 // create a tab control child window of that size.
 GetClientRect(this->hWnd, &rcClient);
 
 LPINITCOMMONCONTROLSEX commonCtrls = NULL;
 ::InitCommonControlsEx(commonCtrls);
 try{
   hwndTab = CreateWindow(WC_TABCONTROL, "GeneralTab", WS_CHILD | WS_CLIPSIBLINGS | WS_VISIBLE,
     0, 0, rcClient.right, rcClient.bottom, this->hWnd, NULL, this->hInst, NULL);
   if(hwndTab==NULL){
     throw Func_fail("Failure in CMyWin::SetMyTab, can't CreateWindow for hwndTab", ::GetLastError());
   }
 }catch(...){
   this->GetLastError(__FUNCTION__, __FILE__, __LINE__);
 }
 if (hwndTab == NULL)
   return NULL;

 // Add tabs for each day of the week.
 char g_achTemp[]="Some text";
 tie.mask = TCIF_TEXT | TCIF_IMAGE;
 tie.iImage = -1;
 tie.pszText = g_achTemp;
 
 for (i = 0; i < 7; i++) {
   LoadString(this->hInst, 1 + i,
     g_achTemp, sizeof(g_achTemp)/sizeof(g_achTemp[0]));
   if (TabCtrl_InsertItem(hwndTab, i, &tie) == -1) {
     DestroyWindow(hwndTab);
     return NULL;
   }
 }
 return hwndTab;
}


Как результат я получаю следующую ошибку линкера (при этом библиотека <commctrl.h> у меня вложена)


CMyWin.obj : error LNK2019: unresolved external symbol __imp__InitCommonControlsEx@4 referenced in function "public: struct HWND__ * __stdcall CMyWin::SetMyTab(void)"

Думаю ладно поробую использовать Property sheets. Затер строчку где вкладывалась библиотека <commctrl.h> и вложил как то и положено <prsht.h> И опять взял код в чистую с msdn'а:
Код
void CMyWin::SetMyTab(){
   PROPSHEETPAGE psp[2];
   PROPSHEETHEADER psh;
   RECT rc;
   GetWindowRect(this->hWnd, &rc);

   psh.dwSize = sizeof(PROPSHEETHEADER);
   psh.dwFlags = PSH_USEICONID | PSH_PROPSHEETPAGE;
   psh.hwndParent = this->hWnd;
   psh.hInstance = this->hInst;
   psh.pszIcon =NULL;
   psh.pszCaption = (LPSTR) "Cell Properties";
   psh.nPages = sizeof(psp) /  sizeof(PROPSHEETPAGE);
   psh.nStartPage = 0;
   psh.ppsp = (LPCPROPSHEETPAGE) &psp;
   psh.pfnCallback = NULL;
   ::PropertySheet(&psh);
   return;
}

Линкер ругается, но уже по другому:

CMyWin.obj : error LNK2019: unresolved external symbol __imp__PropertySheetA@4 referenced in function "public: void __thiscall CMyWin::SetMyTab(void)"

Мне не понятно как же я мог так ошибиться, что получаю не разрешенный символ?

Это сообщение отредактировал(а) Royan - 3.4.2004, 21:25


--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
Royan
Дата 3.4.2004, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


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

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



Интересно что вот такой код компилируется:
Код
   RECT rc;
   GetWindowRect(this->hWnd, &rc);
   HWND hTab;
   hTab = CreateWindow(WC_TABCONTROL, "", WS_CHILD| WS_VISIBLE|WS_BORDER|ES_LEFT, 0, 0,
         rc.right, rc.bottom, this->hWnd, NULL, this->hInst, NULL);

   DWORD dw =::GetLastError();


но GetLastError() возвращает ERROR_CANNOT_FIND_WND_CLASS, что тоже весьма подозрительно, так как WC_TABCONTROL куда уж как не класс.


--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
mr.DUDA
Дата 3.4.2004, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



З.Ы. в таких случаях полезно использовать MFC либо VCL wink.gif...


--------------------
user posted image
PM MAIL WWW   Вверх
Royan
Дата 4.4.2004, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


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

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



А что такое, VCL?
Если честно, то цель моего проекта как раз при любых условиях избегать MFC, поэтому я быстрее возьму тройной интеграл, чем использую MFC mad.gif


--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
Royan
Дата 4.4.2004, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


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

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



Все проблема решена, нужно было всего лишь вложить comctl32.lib в additional dependencies самого проекта и все пучком. Имелось ввиду что все пучком для TAB'ов а что для Property sheets, я не знаю.


--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
mr.DUDA
Дата 4.4.2004, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



З.Ы.
Цитата
А что такое, VCL?

библиотека компонентов от Borland-а (Visual Components Library)



--------------------
user posted image
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

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


 




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


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

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