Feniksa
Зарегистрирован: 28.08.2005 Сообщения: 122 Откуда: Чернобыль
|
Добавлено: Ср Ноя 30 2005 14:44 Заголовок сообщения: |
|
|
Привожу полный исходник шкурки программы под WINAPI (извини, но под DIALUP у меня времени просто редактировать не было)
// Просто исходник программы
// подрубаем библиотеки
#include <windows.h>
#include <stdio.h>
#include "resource.h" // Ето файл, где храняться твои ID меню, иконок , // курсоров
HINSTANCE* hGlobalInstance; // Глобальныый указателть на // индентификатор программы
int RegClass (LPCTSTR);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpcmdline, int nCmdShow)
{
hGlobalInstance=&hInstance;
MSG Msg;
HWND hWnd;
RegClass("WndClassEx");
hWnd=CreateWindowEx(NULL,"WndClassEx","Feniks Programm",WS_VISIBLE | WS_OVERLAPPEDWINDOW,0,0,200,200,0,0,hInstance,NULL);
if(!hWnd)
{
MessageBox(NULL,"Ошибка приложения. Невозможно создать hWnd","Error",MB_OK | MB_ICONWARNING);
return 1;
}
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
while (GetMessage(&Msg,0,0,0))
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return((int)Msg.wParam);
}
int RegClass(LPCTSTR Name)
{
WNDCLASSEX WndClass;
WndClass.cbSize=sizeof(WndClass);
WndClass.style= CS_VREDRAW | CS_HREDRAW | CS_OWNDC ;
WndClass.lpfnWndProc=WndProc;
WndClass.cbClsExtra=0;
WndClass.cbWndExtra=0;
WndClass.hInstance=*hGlobalInstance;
// Подключаем иконки, меню, курсоры. Обрати внимание на //использование макроса MAKEINTRESOURCE();
WndClass.hIcon=LoadIcon(*hGlobalInstance,
WndClass.hIconSm=LoadIcon(*hGlobalInstance,MAKEINTRESOURCE(IDI_ICON1));
WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
WndClass.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
WndClass.lpszMenuName=MAKEINTRESOURCE(IDR_MENU1);
WndClass.lpszClassName=Name;
return (RegisterClassEx(&WndClass)!=0);
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT Message, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT PaintStruct;
HDC hDC;
RECT Rect;
char bufer[50];
switch(Message)
{
case WM_CREATE:
{
return 0;
}
case WM_PAINT:
{
InvalidateRect(hWnd,NULL,0);
hDC=BeginPaint(hWnd,&PaintStruct);
EndPaint(hWnd,&PaintStruct);
return 0;
}
// А вот и обработчик твоих клацаний по меню
case WM_COMMAND:
{
switch(LOWORD(wParam))
{
case ID_GAME_EXIT:
{
PostMessage(hWnd,WM_CLOSE,0,0);
break;
}
case ID_HELP_ABOUT:
{
sprintf(bufer,"Made by Feniks");
hDC=GetDC(hWnd);
GetClientRect(hWnd,&Rect);
TextOut(hDC,(int)Rect.right-150,(int)Rect.bottom-20,bufer,(int)strlen(bufer));
ReleaseDC(hWnd,hDC);
break;
}
default:break;
}
return 0;
}
// Конец обработчика
case WM_CLOSE:
{
if (MessageBox(hWnd,"Do you whant to quit?","Quit", MB_YESNO | MB_ICONINFORMATION)==IDYES)
{
return DefWindowProc(hWnd,Message,wParam,lParam);
}
else
{
return 0;
}
}
case WM_DESTROY:
{
PostQuitMessage(0);
return 0;
}
}
return (DefWindowProc(hWnd,Message,wParam,lParam));
}
Вот содержание файла Resource.h
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by RC.rc
//
#define IDR_MENU1 104
#define IDI_ICON1 200
#define ID_GAME_EXIT 40001
#define ID_HELP_ABOUT 40002
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 105
#define _APS_NEXT_COMMAND_VALUE 40003
#define _APS_NEXT_CONTROL_VALUE 1001
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif |
|