Не, так нельзя, нужно обрабатывать вот тут LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_CREATE: MessageBeep(0); return 0 ; case WM_DESTROY: PostQuitMessage (0) ; return 0 ; } return DefWindowProc (hwnd, message, wParam, lParam) ; } Это же сообщение, его тут и надо обрабатывать
LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam) { switch (msg) /* Обработчик событий*/ { case WM_DESTROY: /* Если сообщ. О выходе */ PostQuitMessage(0); /* ВЫХОДИМ */ break; case WM_RBUTTONDOWN: { MessageBox(...); } break; default: return DefWindowProc(hwnd,msg,wParam,lParam); /* ????? */ } return 0; }
#include <windows.h> HINSTANCE hInst; HWND hwnd; /* Переменные */ LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam) { switch (msg) /* Обработчик событий*/ { case WM_DESTROY: /* Если сообщ. О выходе */ PostQuitMessage(0); /* ВЫХОДИМ */ break; default: return DefWindowProc(hwnd,msg,wParam,lParam); /* Стандартный обрабочик системы для сообщений. ЛУчше свой писать */ } return 0; } BOOL InitClass(void) { WNDCLASS wc; /* Структура */ memset(&wc,0,sizeof(WNDCLASS)); /* Выделяем байты по размеру WNDCLASS *-----------НеТ -заполняем нялями, то биш очищаем/ wc.style = CS_OWNDC | CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS; /*СТИЛЬ */ wc.lpfnWndProc = (WNDPROC)WndProc; /* Процедура*/ wc.hInstance = hInst; /* Экземпляр , текущий получен м ВинМэйн функции */ wc.hbrBackground = (HBRUSH)(30); /* ФОН */ wc.lpszClassName = "WndClass"; /* ИМЯ КЛАССА */ wc.hCursor = LoadCursor(NULL,IDC_ARROW); /* Курсор */ wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); /* Иконка */ if (!RegisterClass(&wc)) return 0; /* Если ошибка сохраняем 0 ----------выходим*/ return 1; } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, INT nCmdShow) { MSG msg; /* Переменная для хранения событий */ hInst = hInstance; /* уже сказал */ if (!InitClass()) /* Если ошибка - выходим. */ { MessageBox(NULL, "Error", "Niiauaiea", 0); /* Сообщение об ошибке */ return 0; /* ВЫХОД */ } hwnd = CreateWindow("WndClass","ПРОГА WinAPI.", /* Окно */ WS_MINIMIZEBOX|WS_VISIBLE|WS_CLIPSIBLINGS|WS_CLIPCHILDREN| /* Параметры */ WS_MAXIMIZEBOX|WS_CAPTION|WS_BORDER|WS_SYSMENU|WS_THICKFRAME, CW_USEDEFAULT,0,CW_USEDEFAULT,0, NULL, /* ???? *Эээээээ. тут где то должны быть координаты окга где они? разве их нет в обычной структуре?/ NULL, /* ???? */ hInst, /* ???? */ NULL); /* ???? */ ShowWindow(hwnd, SW_SHOW); /* Показываем окно */ while (GetMessage(&msg,NULL,0,0)) /*Получаем сообщение из очереди */ { TranslateMessage(&msg); /* Обработка вирт клавиш */ DispatchMessage(&msg); /* Отправить сообшение обработчику CALLBACK WndProc */ } return msg.wParam; /* ???? */ }
1) Учи английский. Все на англ. Я сам это поздно понял. Не мурррр((( 2)Читай MSDN время быстрого интернета настало 3)СКачай студию 2003 , 2005, установи локальный МСДН - можно стянуть с рутрекера
Ну ругайтесь . В гугле чет нету. Как создать простую кнопку? Вот есть окно. Там просто кнопку. Даже можно без свойств. ПРям в родительском.
http://www.hackzona.ru/hz.php?name=News&file=article&sid=9141 button=CreateWindow("button","Кнопка №1",WS_VISIBLE|WS_CHILD,240,205,28,28,hwnd,(HMENU)ID_BUTTON1,NULL,NULL);
Mark, Скачай windows SDK, последний, кажется, 7.1. Там есть ответы на все твои вопросы и даже больше. С примерами. Скачать можно тут: http://www.microsoft.com/download/en/details.aspx?id=8279
SDK уже качаю. Вот скажите, как приписать действие кнопке? Я так понимаю, что через обработчик событий?
Написать 2 класса с разными процедурами обработки. И написать несколько процедур обработки. Марк. Вы Петцольда читали Хоть?
BN_CLICKED Notification -------------------------------------------------------------------------------- Sent when the user clicks a button. The parent window of the button receives the BN_CLICKED notification code through the WM_COMMAND message. Syntax BN_CLICKED WPARAM wParam LPARAM lParam; Parameters wParam The low-order word contains the button's control identifier. The high-order word specifies the notification message. lParam A handle to the button. Return Value No return value.
Да, и еще. Пробовал PlaySound. PlaySound("file.wav", NULL, SND_FILENAME | SND_ASYNC); Компилятор ругается: