
中间的 |= 符号表示什么意思
第一次遇到这种|=组合符号
你只不过是写了InitInstance的实现,又没有调用它......既然没有调用它生成一个窗口,怎么会有东西出来呢...
C/C++你学过吗?学了多久了?
还有,我推唯滑荐windows编程、MFC程序设计,我推荐孙鑫老师的视频教程
下边是完整的代码,我用VS2010编译通过,正常运行
#include
//头文件
//而且你下边用的函数都没有在上面声明过
BOOL Init(HINSTANCE hInstance);
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow);
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
HINSTANCE hInst;
//下边几个字符串常量都添加了TEXT()的宏
//用处是可让编译器帮你确定这里该有的类型,是Unicode还是ANSI
// 当前实例
TCHAR szTitle[]=TEXT("Windows编程技术01章01例");//这里 TEXT()
// 标题栏文本
TCHAR szWindowClass[]=TEXT("EX0101"); //这里 TEXT()
// 主窗口类名
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK MyPrint(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK MyPrint(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
//WinMain函数
//这里不是CALLBACK,而是WINAPI,在我的VS2010里编译是不过的
//另外第三个参数的类型和文档里指败腊边也不一样啊,LPTSTR->LPSTR
// int /*CALLBACK*/WINAPI WinMain(HINSTANCE hInstance,
// HINSTANCE hPrevInstance,
// LPTSTR lpCmdLine,
// int nCmdShow)
// {
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
)
{
MSG msg;
// WNDCLASS wc; //这两行在Init函数中实现的
// wc.hInstance=hInstance; //这里可以删掉
Init(hInstance);
// 执行应用程序初始化:
if (!InitInstance(hInstance,nCmdShow))
{
return FALSE;
}
// 主消息循环:
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int) msg.wParam;
}
//注册窗口类
BOOL Init(HINSTANCE hInstance)//?注意什么与下面对比
{
WNDCLASSEX wc;
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = (WNDPROC)WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = NULL;
wc.hCursor = NULL;
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wc.lpszMenuName = NULL;
wc.lpszClassName = szWindowClass;
wc.hIconSm = NULL;
return RegisterClassEx(&wc);
}
//枯庆建立窗口
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
HWND hWnd;
hInst = hInstance; // 将实例句柄存储在全局变量中
hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, 400, 250, NULL, NULL, hInstance, NULL);
if (!hWnd)
{
return FALSE;
}
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
return TRUE;
}
//窗口函数
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_PAINT:
MyPrint(hWnd,message, wParam, lParam);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
//窗口内的输出
LRESULT CALLBACK MyPrint(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT ps;
HDC hdc;
hdc = BeginPaint(hWnd, &ps);
::TextOut(hdc,100,100,TEXT("手工的编写Windows程序!"),lstrlen(TEXT("手工的编写Windows程序!")));
//和前边一样,不知道用什么字符串类型的时候就加上TEXT()
EndPaint(hWnd, &ps);
return 0;
}
只见过 != ,没见过|= 。楼主搞错了吧。