#include <windows.h>
#include "resource.h"
#include <commctrl.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
class mClass{
public:
mClass();
HWND hMainWnd;
HINSTANCE hInstance;
HWND hTab;
TCITEM tie;
int TabIndex;
};
mClass::mClass()
{
tie.pszText = "Untitled";
tie.mask = TCIF_TEXT;
TabIndex = 0;
}
static mClass app;
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
app.hInstance = hInstance;
char szClassName[] = "My Class";
MSG msg;
WNDCLASSEX wc;
HPEN hPen = CreatePen(PS_SOLID, 5, RGB(212,208,200));
wc.cbSize = sizeof(wc);
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = app.hInstance;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)hPen;
wc.lpszMenuName = MAKEINTRESOURCE(IDR_MAIN);
wc.lpszClassName = szClassName;
wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
if(!RegisterClassEx(&wc)){
MessageBox(NULL, "Can't register class", "Error", MB_OK);
return 0;
}
app.hMainWnd = CreateWindowEx(WS_EX_WINDOWEDGE, szClassName, "Small Window", WS_OVERLAPPEDWINDOW | WS_MAXIMIZE, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, (HWND)NULL, NULL, (HINSTANCE)hInstance, NULL);
if(!app.hMainWnd){
MessageBox(NULL, "Can't create window", "Error", MB_OK);
return 0;
}
ShowWindow(app.hMainWnd, nCmdShow);
/*INITCOMMONCONTROLSEX icc;
icc.dwSize = sizeof(INITCOMMONCONTROLSEX);
icc.dwICC = ICC_WIN95_CLASSES;
InitCommonControlsEx(&icc);
*/
while(GetMessage(&msg, NULL, 0, 0)){
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg){
case WM_CREATE:
app.hTab = CreateWindow(WC_TABCONTROL,"Hello", WS_CHILD | WS_CLIPSIBLINGS | WS_VISIBLE, 0, 0, 400, 300, hWnd, 0, app.hInstance, NULL);
TabCtrl_InsertItem(app.hTab,app.TabIndex,&app.tie);
return 0;
case WM_CLOSE:
DestroyWindow(hWnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, uMsg, wParam, lParam);
break;
}
return 0;
}
Tab Control
У меня возникла следующая проблема, никак не появляется поле Тab Control, в 2000 винде все работало, поставил ХР, и все, перестало.
Вот код:
Код:
P.S Я сам грешу не инициализацию библиотеки, но когда раскомментирую следующие строки:
Код:
/*INITCOMMONCONTROLSEX icc;
icc.dwSize = sizeof(INITCOMMONCONTROLSEX);
icc.dwICC = ICC_WIN95_CLASSES;
InitCommonControlsEx(&icc);*/
icc.dwSize = sizeof(INITCOMMONCONTROLSEX);
icc.dwICC = ICC_WIN95_CLASSES;
InitCommonControlsEx(&icc);*/
То у меня появляется следующая ошибка:
Код:
SmallWindow error LNK2019: unresolved external symbol __imp__InitCommonControlsEx@4 referenced in function _WinMain@16
и еще одна:
Код:
SmallWindow fatal error LNK1120: 1 unresolved externals
Ума не приложу что поделать
Unresolved external - я бы подумал, что в commctrl.h нет такой функции. Только почему тогда раньше работало? Попробуй вместо раскомментированного InitCommonControls().
Код:
#pragma comment ( lib, "comctl32.lib" );