`
super_m_a_n
  • 浏览: 7265 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

WinMain

 
阅读更多
#include <windows.h>
#pragma comment(lib,"WINMM.LIB") //是一条编译器指令,是给告诉编译器你要链接一些东西,然后在后面的comment里面指明是什么东西

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR szCmdLine,int iCmdShow){
	static TCHAR szAppName[]=TEXT("HelloWin");
	HWND hwnd;
	MSG msg;
	WNDCLASS wndclass;

	wndclass.style=CS_HREDRAW|CS_VREDRAW;//CS 窗口类别样式 
	wndclass.lpfnWndProc=WndProc;
	wndclass.cbClsExtra=0;
	wndclass.cbWndExtra=0;
	wndclass.hInstance=hInstance;
	wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);//加载图标供程序使用 IDI 图示ID 
	wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);//加载鼠标光标供程序使用 IDC 游标ID  
	wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);//取得一个图形对象(在这个例子中,是取得绘制窗口背景的画刷对象)
	wndclass.lpszMenuName=NULL;
	wndclass.lpszClassName=szAppName;

	if(!RegisterClass(&wndclass)){// 为程序窗口注册窗口类别
		MessageBox(NULL,TEXT("This program requires Windows NT Upper!"),szAppName,MB_ICONERROR);// 显示消息框 MB 消息框 
		return 0;
	}

	//根据窗口类别建立一个窗口
	hwnd=CreateWindow(szAppName,
					TEXT("HelloWin"),
					WS_OVERLAPPEDWINDOW,//WS 窗口样式
					CW_USEDEFAULT,//CW 建立窗口
					CW_USEDEFAULT,
					CW_USEDEFAULT,
					CW_USEDEFAULT,
					NULL,
					NULL,
					hInstance,
					NULL);
		
	ShowWindow(hwnd,iCmdShow);//在屏幕上显示窗口
	UpdateWindow(hwnd);//指示窗口自我更新
	
	while(GetMessage(&msg,NULL,NULL,0)){//从消息队列中取得消息
		TranslateMessage(&msg);//转译某些键盘消息
		DispatchMessage(&msg);//将消息发送给窗口消息处理程序
	}
	return msg.lParam;
}

LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
	HDC hdc;
	PAINTSTRUCT ps;
	RECT rect;
	 
	switch(message){ //WM 窗口消息  
		case WM_CREATE:
			PlaySound(TEXT("hellowin.wav"),NULL,SND_FILENAME|SND_ASYNC);//播放一个声音文件  SND 声音  
			return 0;
		case WM_PAINT:
			hdc=BeginPaint(hwnd,&ps);//开始绘制窗口
			GetClientRect(hwnd,&rect);//取得窗口显示区域的大小
			DrawText(hdc,TEXT("Hello Window!"),-1,&rect,DT_SINGLELINE|DT_CENTER|DT_VCENTER);//显示字符串 DT 绘制文字 
			EndPaint(hwnd,&ps);//结束绘制窗口
			return 0;
		case WM_DESTROY:
			PostQuitMessage(0);//在消息队列中插入一个「退出程序」消息
			return 0;
		default:
			return DefWindowProc(hwnd,message,wParam,lParam);//执行内定的消息处理
	}	
}

 

分享到:
评论

相关推荐

    入口函数( main、WinMain)

    然而,当开发Windows应用程序时,我们通常会使用Windows API提供的`WinMain`函数作为入口点,这是因为Windows系统有自己的应用程序模型。`WinMain`函数的定义如下: ```cpp int APIENTRY WinMain( HINSTANCE ...

    WInmain学习用于理解

    在编程世界里,Windows应用程序开发通常涉及到一个特殊的入口点函数——`WinMain`。这个函数在Windows程序设计中起着至关重要的作用,特别是在使用Microsoft Foundation Classes (MFC)库进行开发时。`WinMain`与传统...

    qt.rar_QT winma_qt main函数详解_qt winmain

    在QT中,`main`和`WinMain`函数是程序的入口点,它们各自在不同的上下文中起作用。 在传统的C++应用程序中,`main`函数是程序执行的起点。然而,在Windows操作系统上,Windows API通常使用`WinMain`函数作为应用...

    关于VC6.0中 运行错误 unresolved external symbol _WinMain@16的解决

    解决 VC6.0 中运行错误 unresolved external symbol _WinMain@16 在使用 VC6.0 进行编程时,可能会遇到一个常见的错误:unresolved external symbol _WinMain@16。这是一个链接错误,出现这种错误的原因是因为 VC...

    VC++中的WinMain函数

    在VC++编程环境中,WinMain函数是Windows应用程序的入口点,与C++标准库中的main函数有所不同。在创建Windows桌面应用程序时,我们通常会用到WinMain而不是main,因为它是Windows API的核心部分,用于初始化窗口类、...

    VC++ 使用WinMain建立窗口

    `WinMain`函数是Windows API中的一个入口点,用于替代传统的`main`函数,主要用于创建具有窗口的Windows应用程序。在本教程中,我们将深入探讨如何使用VC++通过`WinMain`来建立窗口。 首先,了解`WinMain`函数。`...

    WinMain简单窗口实现函数

    在Windows编程中,`WinMain`函数是应用程序的入口点,尤其在开发基于Windows操作系统的桌面应用程序时。这个函数替代了通常在其他操作系统或库中常见的`main`函数。`WinMain`函数提供了与Windows消息循环和窗口过程...

    vc++编程最简单的winmain程序

    最简单的winmain程序 #include #include LRESULT CALLBACK WinSunProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam) { HDC hdc; switch(uMsg) { case WM_CHAR: char szChar[20]; sprintf(szChar,...

    vc中error LNK2001 resolved external symbol _WinMain@16的解决方法

    ### vc中error LNK2001 resolved external symbol _WinMain@16的解决方法 #### 一、问题描述 在使用Visual C++ (VC) 编译C++项目时,可能会遇到`error LNK2001: unresolved external symbol _WinMain@16`的错误...

    SDK模拟MFC隐藏WinMain,CWinApp,CDialog

    程序中隐藏WinMain函数,当成是头文件包含进来,我们开发就不需要改动WinMain函数, CWinApp 和CDialog类在SDK中模拟实现,程序会进入我写的InitInstance,该函数里面负责显示窗口,窗口类里面有窗口过程...

    自己写的带有菜单的WinMain函数

    在Windows编程中,WinMain函数是程序的入口点,它替代了C/C++中的main函数。这个标题"自己写的带有菜单的WinMain函数"表明我们要讨论的是如何在WIN32应用程序中创建一个具有用户界面(UI)的程序,具体来说,就是...

    WinMain 超常用模板

    常用的WinMain写法: 只创建窗口 无多余注释 代码90行 VS2010直接用

    winmain函数的用法

    vc中的winmain函数的用法与理解 int WINAPI WinMain( HINSTANCE hInstance, // handle to current instance HINSTANCE hPrevInstance, // handle to previous instance LPSTR lpCmdLine, // command line int ...

    WinMain.rar

    在Windows环境下,一个C++应用程序的入口点不是我们常见的`main()`函数,而是`WinMain()`函数。这个特殊的功能点是"WinMain.rar"文件所涵盖的核心知识。 `WinMain()`函数在Windows程序设计中起着至关重要的角色,它...

    WinMain的编写

    WinMain的编写

    windows框架,WinMain

    在Windows编程领域,"Windows框架"是构建图形用户界面(GUI)应用程序的基础,而`WinMain`函数则是这个框架的核心入口点。这篇文章将深入探讨`WinMain`函数以及它在Windows程序中的作用。 Windows应用程序不同于...

    MFC程序中的WinMain函数.pdf

    在MFC程序中,虽然表面上看不到传统的WinMain函数,但其实WinMain仍然是程序的入口点。 标题中的"MFC程序中的WinMain函数"指的是在MFC应用程序中,WinMain函数是如何被使用的。通常,WinMain函数是Win32 API应用...

    WinMain_Vc_

    标题"WinMain_Vc_"暗示了我们将探讨的话题是围绕使用VC++进行Windows程序开发的核心概念,特别是涉及到`WinMain`函数、窗口句柄、消息队列以及回调函数。 首先,`WinMain`函数是Windows应用程序的入口点,类似于...

    1WinMain-mouse.rar_mouse

    在编程领域,尤其是在Windows应用程序开发中,`WinMain`函数是一个关键的入口点,它相当于控制台程序中的`main`函数。本主题将深入探讨`WinMain`函数的使用,以及与`mouse`相关的钩子(hook)技术,这些都是在VC++...

Global site tag (gtag.js) - Google Analytics