那位大侠帮我看看,window应用程序编程,编译通过但不显示窗体呀?

caodongfang126 2012-07-04 08:26:28
// 45678.cpp : Defines the entry point for the application.
//
////创建应用程序框架,本例的目的在于说明创建Windows应用程序的方法及过程
#include "stdafx.h"
#include "windows.h" //包含应用程序中所需要的数据类型和数据结构的定义


LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM); //窗口处理函数的说明或声明

//--------------以下初始化窗口类------------------------

int APIENTRY WinMain(HINSTANCE hInstance, //当前实例的句柄//handle to current instance
HINSTANCE hPrevInstance, //以前实例的句柄//handle to previous instance
LPSTR lpCmdLine, //命令行//command line
int nCmdShow) //显示状态//show state
{
// TODO: Place code here.
HWND hwnd; //定义窗口句柄
MSG Msg; //定义文件结构
WNDCLASS wndclass; //定义窗口类
char lpszClassName[] = "窗口"; //定义窗口类的名称
char lpszTitle[] = "My_windows"; //定义窗口的标题名

//-----------------窗口类的定义--------------------------
wndclass.style = CS_HREDRAW|CS_VREDRAW; //窗口类型为缺省类型===========CS_HREDRAW|CS_VREDRAW是添加重绘功能
wndclass.lpfnWndProc = WndProc; //定义窗口处理函数
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 = lpszClassName; //窗口类的名称为"窗口"。

//-------------------以下进行窗口类的注册-------------------------
if(!RegisterClass(&wndclass)); //如果注册窗口失败则发出警告
{
MessageBeep(0);
return FALSE;
}

//---------------------创建窗口----------------------------
hwnd = CreateWindow(lpszClassName, //窗口类名
lpszTitle, //窗口实例的标题名
WS_OVERLAPPEDWINDOW, //窗口的风格
CW_USEDEFAULT, //窗口左上角坐标为缺省值
CW_USEDEFAULT, //窗口左上角坐标为缺省值
CW_USEDEFAULT, //窗口的高和宽为缺省值
CW_USEDEFAULT, //窗口的高和宽为缺省值
NULL, //此窗口无父窗口
NULL, //此窗口无主菜单
hInstance, //创建此窗口的应用程序的当前句柄
NULL, //不使用该值
);
//----------------------显示窗口--------------
ShowWindow(hwnd, nCmdShow);

//---------------绘制用户区----------------
UpdateWindow(hwnd);

//---------------消息循环----------------
while(GetMessage(&Msg, NULL, 0, 0))
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}

// return Msg.wParam; //消息循环结束即程序终止时将信息返回系统
return 0; //===========================================================
}

//--------------窗口处理函数的定义-----------------
LRESULT CALLBACK WndProc (HWND hwnd, //窗口的句柄//handle to window
UINT message, //消息识别码//message identifier
WPARAM wParam, //第一条消息参数//first message parameter
LPARAM Iparam) //第二条消息参数//second message parameter
{
switch(message)
{
case WM_DESTROY:
PostQuitMessage(0);
default: //缺省时采用系统消息缺省处理函数
return DefWindowProc(hwnd, message, wParam, Iparam);
}
return 0;
}



...全文
67 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
caodongfang126 2012-07-04
  • 打赏
  • 举报
回复
多谢大侠们
微型蚂蚁 2012-07-04
  • 打赏
  • 举报
回复
注意看警告,因为编译器可能已经提示你了,
例如vs2010中 warning C4390: ';' : empty controlled statement found; is this the intent?
hslinux 2012-07-04
  • 打赏
  • 举报
回复
//-------------------以下进行窗口类的注册-------------------------
if(!RegisterClass(&wndclass)); //如果注册窗口失败则发出警告
{
MessageBeep(0);
// return FALSE;
}


return FALSE;注释掉就可以出现窗口了。





其实这个东东自己单步跟踪下就可以看到了。

再就是可以用VS的向导生成一个程序来比较下看看。

微型蚂蚁 2012-07-04
  • 打赏
  • 举报
回复

//-------------------以下进行窗口类的注册-------------------------
if(!RegisterClass(&wndclass)); //如果注册窗口失败则发出警告
{
MessageBeep(0);
return FALSE;
}

你把你一行的末尾的;去掉就行了。否则总是return FALSE

64,281

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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