我正在尝试创建一个只使用本机windows api的GUI。 我使用win32控制台项目和win32窗口项目在vs 2008中创建项目,我使用了Microsoft的示例代码,如下所示
#include <windows.h>
// Global variable
HINSTANCE hinst;
// Function prototypes.
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int);
InitApplication(HINSTANCE);
InitInstance(HINSTANCE, int);
LRESULT CALLBACK MainWndProc(HWND, UINT, WPARAM, LPARAM);
// Application entry point.
int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
MSG msg;
if (!InitApplication(hinstance))
return FALSE;
if (!InitInstance(hinstance, nCmdShow))
return FALSE;
BOOL fGotMessage;
while ((fGotMessage = GetMessage(&msg, (HWND) NULL, 0, 0)) != 0 && fGotMessage != -1)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
UNREFERENCED_PARAMETER(lpCmdLine);
}
BOOL InitApplication(HINSTANCE hinstance)
{
WNDCLASSEX wcx;
// Fill in the window class structure with parameters
// that describe the main window.
wcx.cbSize = sizeof(wcx); // size of structure
wcx.style = CS_HREDRAW |
CS_VREDRAW; // redraw if size changes
wcx.lpfnWndProc = MainWndProc; // points to window procedure
wcx.cbClsExtra = 0; // no extra class memory
wcx.cbWndExtra = 0; // no extra window memory
wcx.hInstance = hinstance; // handle to instance
wcx.hIcon = LoadIcon(NULL,
IDI_APPLICATION); // predefined app. icon
wcx.hCursor = LoadCursor(NULL,
IDC_ARROW); // predefined arrow
wcx.hbrBackground = GetStockObject(
WHITE_BRUSH); // white background brush
wcx.lpszMenuName = "MainMenu"; // name of menu resource
wcx.lpszClassName = "MainWClass"; // name of window class
wcx.hIconSm = LoadImage(hinstance, // small class icon
MAKEINTRESOURCE(5),
IMAGE_ICON,
GetSystemMetrics(SM_CXSMICON),
GetSystemMetrics(SM_CYSMICON),
LR_DEFAULTCOLOR);
// Register the window class.
return RegisterClassEx(&wcx);
}
BOOL InitInstance(HINSTANCE hinstance, int nCmdShow)
{
HWND hwnd;
// Save the application-instance handle.
hinst = hinstance;
// Create the main window.
hwnd = CreateWindow(
"MainWClass", // name of window class
"Sample", // title-bar string
WS_OVERLAPPEDWINDOW, // top-level window
CW_USEDEFAULT, // default horizontal position
CW_USEDEFAULT, // default vertical position
CW_USEDEFAULT, // default width
CW_USEDEFAULT, // default height
(HWND) NULL, // no owner window
(HMENU) NULL, // use class menu
hinstance, // handle to application instance
(LPVOID) NULL); // no window-creation data
if (!hwnd)
return FALSE;
// Show the window and send a WM_PAINT message to the window
// procedure.
ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);
return TRUE;
}
然后我得到了错误:
1>c:\users\helloworld\documents\visual studio 2008\projects\motionwindow2\motionwindow2\main.cpp(10) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\helloworld\documents\visual studio 2008\projects\motionwindow2\motionwindow2\main.cpp(11) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\helloworld\documents\visual studio 2008\projects\motionwindow2\motionwindow2\main.cpp(56) : error C2440: '=' : cannot convert from 'HGDIOBJ' to 'HBRUSH'
1> Conversion from 'void*' to pointer to non-'void' requires an explicit cast
1>c:\users\helloworld\documents\visual studio 2008\projects\motionwindow2\motionwindow2\main.cpp(57) : error C2440: '=' : cannot convert from 'const char [9]' to 'LPCWSTR'
1> Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
1>c:\users\helloworld\documents\visual studio 2008\projects\motionwindow2\motionwindow2\main.cpp(58) : error C2440: '=' : cannot convert from 'const char [11]' to 'LPCWSTR'
1> Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
1>c:\users\helloworld\documents\visual studio 2008\projects\motionwindow2\motionwindow2\main.cpp(64) : error C2440: '=' : cannot convert from 'HANDLE' to 'HICON'
1> Conversion from 'void*' to pointer to non-'void' requires an explicit cast
1>c:\users\helloworld\documents\visual studio 2008\projects\motionwindow2\motionwindow2\main.cpp(92) : error C2664: 'CreateWindowExW' : cannot convert parameter 2 from 'const char [11]' to 'LPCWSTR'
1> Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
1>Build log was saved at "file://c:\Users\HelloWorld\Documents\Visual Studio 2008\Projects\motionwindow2\motionwindow2\Debug\BuildLog.htm"
1>motionwindow2 - 7 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
有谁知道我做错了什么?我根本没有修改代码,这是一个空项目。
由于
答案 0 :(得分:4)
你有几个问题:
答案 1 :(得分:0)
第一个错误是指第10行。
因此,请看第10行:
InitApplication(HINSTANCE);
声明缺少函数结果类型。
等等。
干杯&amp;第h。,