Если что не пинайте сильно - по книгам все работает, а в реальности нет
- Код: выделить все
// Исключаем редко-используемый материал из заголовков Windows
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <tchar.h>
#include <commctrl.h>
#include "resource.h"
#define MAX_LOADSTRING 100
// Глобальные переменные
HINSTANCE hInst;
TCHAR szTitle[MAX_LOADSTRING]; // заголовок окна
TCHAR szWindowClass[MAX_LOADSTRING]; // класс главного окна
// Предописания функций, включенных в этот модуль кода:
ATOM MyRegisterClass(HINSTANCE hInstance);
BOOL InitInstance(HINSTANCE, int);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK About(HWND, UINT, WPARAM, LPARAM);
int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPTSTR lpCmdLine, int nCmdShow) {
MSG msg;
HACCEL hAccelTable;
// инициализация глобальных строк
LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); // заголовок
LoadString(hInstance, IDS_WINCLASS, szWindowClass, MAX_LOADSTRING); // класс
MyRegisterClass(hInstance);
// выполнение инициализации приложения
if (!InitInstance(hInstance, nCmdShow)) return FALSE;
// загрузка акселераторов
hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDR_ACCELERATOR1);
// главный цикл сообщений
while (GetMessage(&msg, NULL, 0, 0)) {
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return (int)msg.wParam;
}
// ФУНКЦИЯ: MyRegisterClass()
// ЦЕЛЬ: Регистрирует класс окна.
// КОММЕНТАРИИ:
// Эта функция и ее использование необходимо, если Вы хотите, чтобы этот код
// был совместимым с Win32 системами предшествующими функции "RegisterClassEx",
// которая была добавлена в Windows 95. Важно вызвать эту функцию так, чтобы
// приложение получило маленькие значки.
ATOM MyRegisterClass(HINSTANCE hInstance) {
WNDCLASSEX w;
w.cbSize = sizeof(WNDCLASSEX);
w.style = CS_HREDRAW | CS_VREDRAW;
w.lpfnWndProc = (WNDPROC)WndProc;
w.cbClsExtra = 0;
w.cbWndExtra = 0;
w.hInstance = hInstance;
w.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_ICON1);
w.hCursor = LoadCursor(NULL, IDC_ARROW);
w.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
w.lpszMenuName = (LPCTSTR)IDR_MENU1;
w.lpszClassName = szWindowClass;
w.hIconSm = LoadIcon(w.hInstance, (LPCTSTR)IDI_ICON1);
return RegisterClassEx(&w);
}
// ФУНКЦИЯ: InitInstance(HANDLE, int)
// ЦЕЛЬ: Сохраняет дескриптор и создает основное окно
// КОММЕНТАРИИ:
// В этой функции, мы сохраняем дескриптор в глобальной переменной,
// создаем и отображаем основное окно программы.
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) {
HWND hWnd;
hInst = hInstance; // сохраняем дескриптор
hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, 200, 200, NULL, NULL, hInstance, NULL);
if (!hWnd) return FALSE; // окно не созданно
InitCommonControls();
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
return TRUE;
}
// ФУНКЦИЯ: WndProc(HWND, unsigned, WORD, LONG)
// ЦЕЛЬ: обработка сообщений для главного окна
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){
int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc;
switch (message) {
case WM_COMMAND: //
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
// анализ команды меню:
switch (wmId) {
case IDM_HELP_ABOUT:
DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);
break;
case IDM_FILE_EXIT:
DestroyWindow(hWnd);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
break;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
// Обработчик сообщений для окна about
LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) {
switch (message) {
case WM_INITDIALOG:
return TRUE;
case WM_COMMAND:
if (LOWORD(wParam) == IDOK) {
EndDialog(hDlg, LOWORD(wParam));
return TRUE;
}
break;
}
return FALSE;
}
Вот после InitCommonControls(); типа надо использовать CreateStatusWindow();
но даже после InitCommonControls(); - вот такое вот сообщение: winapi4 error LNK2019: unresolved external symbol __imp__InitCommonControls@0 referenced in function "int __cdecl InitInstance(struct HINSTANCE__ *,int)" (?InitInstance@@YAHPAUHINSTANCE__@@H@Z)
Без InitCommonControls() - все пашет, без статус бара.
Я уже не знаю чего делать , целый день бьюсьи читаю книги - , и везде есть такая функция - и везде она типа должна работать. всю найденую литературу перерыл.
PS может кто подскажет OnLine книжку (уроки, статьи) где описывается VC++.NET (7 версия), а то у меня только книги о BorlandCB под Win95