Ahoj, tak jsem udělal základ C++ (konzolově) a začal jsem dělat WIN32API a hned ve 3. díle seriálu na tomto webu.
Přikládám zdrojáky všech souborů:
Hlavní soubor:
#include <windows.h>
#include "WIN32API_private.h"
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
TCHAR szAppName[] = TEXT("Můj první program v C++");
HWND hWnd;
MSG msg;
WNDCLASSEX wc;
wc.cbSize = sizeof(wc);
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(hInstance, TEXT("#101"));
wc.hIconSm =LoadIcon(hInstance, TEXT("#101"));
wc.hCursor =LoadCursor(hInstance, TEXT("#102"));
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wc.lpszMenuName = "MAINMENU";
wc.lpszClassName = szAppName;
RegisterClassEx(&wc);
hWnd = CreateWindowEx(0,szAppName,
szAppName,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance, NULL);
ShowWindow(hWnd, iCmdShow);
UpdateWindow(hWnd);
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message)
{
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hWnd, message, wParam, lParam);
}
*rc soubor:
#include "WIN32API_private.h"
#include "afxres.h"
//*******************ZDROJE*********************
101 ICON DISCARDABLE "grafika/home.ico"
102 CURSOR DISCARDABLE "grafika/cursor.cur"
//********************MENU**********************
MAINMENU MENU DISCARDABLE
BEGIN
POPUP "&Soubor"
BEGIN
MENUITEM "&Nový", IDM_NEW
MENUITEM "&Otevřít", IDM_OPEN
MENUITEM SEPARATOR
POPUP "Ta&jemství"
BEGIN
MENUITEM "&Tajemná truhla", IDM_SECRET
END
END
POPUP "&Ostatní"
BEGIN
MENUITEM "&Nápověda", IDM_HELP
MENUITEM "&Konec", IDM_CLOSE
MENUITEM SEPARATOR
MENUITEM "&O aplikaci", IDM_ABOUT
END
END
_private soubor:
/* THIS FILE WILL BE OVERWRITTEN BY DEV-C++ */
/* DO NOT EDIT! */
#include "WIN32API.rc"
#define IDI_ICON 101
#define IDI_CURSOR 102
#define IDM_NEW 40001
#define IDM_OPEN 40002
#define IDM_SECRET 40003
#define IDM_HELP 40004
#define IDM_CLOSE 40005
#define IDM_ABOUT 40006
Víceméně jsem to dělal přesně podle návodu a vše jsem důkladně pročítal.
Chybu mě to háže v *.rc souboru na tomto řádku (asi bude ve všech, když jsou téměř totožné)
MENUITEM "&Nový", IDM_NEW
Nevíte kde je chyba? V diskuzi pod článkem taky někdo psal že mu to nejede, bohužel nikdo mu neodpověděl.