简单的WINDOWS程序问题 为啥没有显示窗口? CREATEWINDOW的第一个参数“已注册的窗口类名”该写啥啊?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单的WINDOWS程序问题 为啥没有显示窗口? CREATEWINDOW的第一个参数“已注册的窗口类名”该写啥啊?相关的知识,希望对你有一定的参考价值。
#include<stdio.h>
#include<windows.h>
int WINAPI WinMain(HINSTANCE A,HINSTANCE B,LPSTR C,INT M)
HWND hwnd = FindWindow(NULL,"百度一下,你就知道");
if(hwnd==NULL)
printf("error");
exit(0);
SendMessage(hwnd,WM_CLOSE,0,0);//关闭 向它发送窗口结束消息
WNDCLASSEX MM;
RegisterClassEx(&MM);
HWND FF;
FF=CreateWindow("MM","xx",WS_BORDER,1,1,2,4,NULL,NULL,NULL,NULL);
ShowWindow(FF,SW_MAXIMIZE);
return 0;
还有ATOM什么数据类型呢??还有就是我看有的函数可以省略一部分参数,这是为什么呢?
给你1个完整的WinMain函数
#include <windows.h>
#include <tchar.h>
//程序入口函数
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
MSG msg;//消息结构体
//注册窗口类
WNDCLASS wndclass;
wndclass.style=CS_HREDRAW|CS_VREDRAW;
wndclass.lpfnWndProc=(WNDPROC)WndProc;//窗口的消息处理函数
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hInstance=hInstance;
wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION); wndclass.hCursor=LoadCursor(NULL,IDC_CROSS);
wndclass.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);
wndclass.lpszMenuName=NULL;
wndclass.lpszClassName=TEXT("javanetwork");//类名
if(!RegisterClass(&wndclass))
MessageBox(NULL,TEXT("程序要求在Windows NT下运行!"),TEXT("ERROR!"),MB_ICONERROR);
return 0;
//创建和显示窗口
HWND hwnd;
//参数:类名-窗口标题-窗口样式-x-y-width-height-父窗口-菜单ID-实例句柄-CREATESTURCT指针
hwnd=CreateWindow(TEXT("javanetwork"),TEXT("未命名"),WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,250,400,NULL,NULL,hInstance,NULL);
if (!hwnd)
return FALSE;
ShowWindow(hwnd,nCmdShow);
UpdateWindow(hwnd);
//消息循环
while (1)
if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))//第二个参数不能为NULL,否则关闭窗口无法正常退出
if(msg.message==WM_QUIT)
break;
TranslateMessage(&msg);
DispatchMessage(&msg);
else
//空闲时间,做其他事情
return msg.wParam;
追问
wndclass.lpfnWndProc=(WNDPROC)WndProc;//窗口的消息处理函数
你这行是不是错了?
还有我不弄消息机制,就为了显示个窗口行不?
我是从我的模板上拷过来的,你要自己定义消息处理函数WndProc。
因为CreateWindow的时候就产生了WM_CREATE消息了,肯定要有消息循环,必须指定消息处理函数,消息处理函数可以只是简单的一行return DefWindowProc();。
//回调函数,处理"javanetwork"类名创建的窗口的消息
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
return DefWindowProc(hwnd,message,wParam,lParam);//调用系统定义的缺省的消息处理函数
饿,有了
好神奇啊。。。
谢谢啊,真是非常感谢,为这个郁闷两天了。。
atom就是int类型
省略参数是有默认值的函数追问
我不是有个RegisterClassex和WNDCLASSEX吗?
参考技术B 最后,控件没有自己独立的菜单,第九个参数应该是 NULL,即使要指定菜单,第创建后要显示才行。CreateWindow Showwindow 为什么应用程序创建窗口时,即追问啥?
以上是关于简单的WINDOWS程序问题 为啥没有显示窗口? CREATEWINDOW的第一个参数“已注册的窗口类名”该写啥啊?的主要内容,如果未能解决你的问题,请参考以下文章