真的很急!为什么这个API编程实现的窗口程序运行一闪而过就结束了呢

Geralt14 2019-05-03 10:08:38

// win32 8.cpp : Defines the entry point for the application.
//

#include "stdafx.h"

// win32 6.cpp : Defines the entry point for the application.
//



LRESULT CALLBACK MainWndProc(HWND,UINT,WPARAM,LPARAM);
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
//USES_CONVERSION;
char szClassName[]="MainWndClass";
WNDCLASSEX wndclass;
wndclass.cbSize=sizeof(wndclass);
wndclass.style=CS_HREDRAW|CS_VREDRAW;
wndclass.lpfnWndProc=MainWndProc;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hInstance=hInstance;
wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName=NULL;
wndclass.lpszClassName=szClassName;
wndclass.hIconSm=NULL;
RegisterClassEx(&wndclass);
HWND hWnd=CreateWindowEx(
0,
szClassName,
"My First Window",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL);
if(hWnd==NULL)
{
MessageBox(NULL,"创建窗口出错!","ERROR",MB_OK|MB_ICONHAND);
return -1;
}
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
return msg.wParam;
}
}
LRESULT CALLBACK MainWndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
//USES_CONVERSION;
char szText[]="窗口程序摸板";
switch(message)
{
case WM_PAINT:
{
HDC hDC;//设备句柄
PAINTSTRUCT psE;
hDC=BeginPaint(hWnd,&psE);
TextOut(hDC,10,10,szText,strlen(szText));
EndPaint(hWnd,&psE);

return 0;
}
case WM_DESTROY:
{
PostQuitMessage(0);
return 0;
}
default:
return DefWindowProc(hWnd,message,wParam,lParam);
}
return (NULL);

}







用VC++6.0编译的,之前用vs2012也是一样的问题,问了好几天了,没一个人踩我
...全文
155 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
return msg.wParam;
}
Geralt14 2019-05-04
  • 打赏
  • 举报
回复
引用 4 楼 早打大打打核战争 的回复:
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
return msg.wParam;
}

太感谢了,初学者,太菜了,看到现在没发现。。。之后还有相关问题可以继续问你吗
ooolinux 2019-05-03
  • 打赏
  • 举报
回复
Win32纯API方式编程已经不推荐了,效率太低,了解一下原理就可以了,主要是消息机制。 图形用户界面(GUI)编程可以学习C++ Builder,架构先进(和C#一样拖控件),入门比较容易。   C++ Builder是真正的可视化的开发工具。C++ Builder可以用鼠标拖拉控件加上设置属性轻松的“设计”出一个程序的图形用户界面,利用可视的组件/控件像“搭积木”一样,以“所见即所得”的方式搭建应用程序的界面,这也是C++ Builder这个名字中Builder的概念。这样,只需要用C++语言编写业务逻辑代码,类似于DOS下文本界面编程,只要专注于实现业务逻辑功能就可以了,代码非常简洁。数据的输入和表现,都在图形用户界面,非常直观、易用。这就是RAD开发(Rapid Application Development,快速应用程序开发)。 书籍推荐: 《C++Builder 6程序设计教程(第二版)》 (陆卫忠,刘文亮 等编著 /2011-04-01 /科学出版社)(当当网) 《C++Builder 6编程实例精解》(赵明现),PDF,是数字版的,非扫描版的,里面还有一个俄罗斯方块游戏的完整实现。 《精彩C++Builder 6程序设计》(台湾 吴逸贤),里面有10几个简单小游戏的实现,可以自己看懂以后再重写,才是自己掌握的。 《C++ Builder 5高级编程实例精解》(刘滨 编著)都是较大的实用的程序。 C++ Builder书籍下载: https://pan.baidu.com/s/13n9hxwVj9ai1p5L2rQC83Q
Geralt14 2019-05-03
  • 打赏
  • 举报
回复
我用了Sleep函数,现在倒是可以显示了,说明逻辑应该没问题啊,到底哪里会让它自动关闭呢,而且显示出来的标题栏也不能交互,一拖动就停止运行了,到底为啥呢
Geralt14 2019-05-03
  • 打赏
  • 举报
回复
引用 2 楼 ooolinux的回复:
Win32纯API方式编程已经不推荐了,效率太低,了解一下原理就可以了,主要是消息机制。 图形用户界面(GUI)编程可以学习C++ Builder,架构先进(和C#一样拖控件),入门比较容易。   C++ Builder是真正的可视化的开发工具。C++ Builder可以用鼠标拖拉控件加上设置属性轻松的“设计”出一个程序的图形用户界面,利用可视的组件/控件像“搭积木”一样,以“所见即所得”的方式搭建应用程序的界面,这也是C++ Builder这个名字中Builder的概念。这样,只需要用C++语言编写业务逻辑代码,类似于DOS下文本界面编程,只要专注于实现业务逻辑功能就可以了,代码非常简洁。数据的输入和表现,都在图形用户界面,非常直观、易用。这就是RAD开发(Rapid Application Development,快速应用程序开发)。 书籍推荐: 《C++Builder 6程序设计教程(第二版)》 (陆卫忠,刘文亮 等编著 /2011-04-01 /科学出版社)(当当网) 《C++Builder 6编程实例精解》(赵明现),PDF,是数字版的,非扫描版的,里面还有一个俄罗斯方块游戏的完整实现。 《精彩C++Builder 6程序设计》(台湾 吴逸贤),里面有10几个简单小游戏的实现,可以自己看懂以后再重写,才是自己掌握的。 《C++ Builder 5高级编程实例精解》(刘滨 编著)都是较大的实用的程序。 C++ Builder书籍下载: https://pan.baidu.com/s/13n9hxwVj9ai1p5L2rQC83Q
现在只想知道这个程序的问题

1,221

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧