关闭

控制台下创建窗口和WinMain入口创建窗口简单程序

标签: C++
1998人阅读 评论(0) 收藏 举报
分类:

控制台创建窗口(同时有控制台窗口和新创建的窗口)(项目类型:控制台应用程序)

#include "windows.h"  
#include "TCHAR.h"  

LRESULT CALLBACK WindowProc(
	HWND hwnd,
	UINT uMsg,
	WPARAM wParam,
	LPARAM lParam
	);


int _tmain(int argc, _TCHAR* argv[])
{
	HINSTANCE hInstance;
	hInstance = GetModuleHandle(NULL);
	WNDCLASS Draw;
	Draw.cbClsExtra = 0;
	Draw.cbWndExtra = 0;
	Draw.hCursor = LoadCursor(hInstance, IDC_ARROW);;
	Draw.hIcon = LoadIcon(hInstance, IDI_APPLICATION);;
	Draw.lpszMenuName = NULL;
	Draw.style = CS_HREDRAW | CS_VREDRAW;
	Draw.hbrBackground = (HBRUSH)COLOR_WINDOW;
	Draw.lpfnWndProc = WindowProc;
	Draw.lpszClassName = _T("DDraw");
	Draw.hInstance = hInstance;


	RegisterClass(&Draw);

	HWND hwnd = CreateWindow(
		_T("DDraw"),           //上面注册的类名,要完全一致    
		L"绘制",  //窗口标题文字    
		WS_OVERLAPPEDWINDOW, //窗口外观样式    
		38,             //窗口相对于父级的X坐标    
		20,             //窗口相对于父级的Y坐标    
		640,                //窗口的宽度    
		480,                //窗口的高度    
		NULL,               //没有父窗口,为NULL    
		NULL,               //没有菜单,为NULL    
		hInstance,          //当前应用程序的实例句柄    
		NULL);              //没有附加数据,为NULL    

	// 显示窗口    
	ShowWindow(hwnd, SW_SHOW);

	// 更新窗口    
	UpdateWindow(hwnd);

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

// 消息处理函数的实现  
LRESULT CALLBACK WindowProc(
	_In_  HWND hwnd,
	_In_  UINT uMsg,
	_In_  WPARAM wParam,
	_In_  LPARAM lParam
	)
{
	switch (uMsg)
	{
	case WM_DESTROY:
	{
					   PostQuitMessage(0);
					   return 0;
	}
	}
	return DefWindowProc(hwnd, uMsg, wParam, lParam);
}


WinMain入口下创建窗口(只有新创建的窗口)(项目类型:windows应用程序)

#include <windows.h>
#include "TCHAR.h" 
#include <stdio.h>

LRESULT CALLBACK WindowProc(
	HWND hwnd,      // handle to window
	UINT uMsg,      // message identifier
	WPARAM wParam,  // first message parameter
	LPARAM lParam   // second message parameter
	);

int WINAPI WinMain(
	HINSTANCE hInstance,      // handle to current instance
	HINSTANCE hPrevInstance,  // handle to previous instance
	LPSTR lpCmdLine,          // command line
	int nCmdShow              // show state
	)
{
	WNDCLASS wndcls;
	wndcls.cbClsExtra = 0;
	wndcls.cbWndExtra = 0;
	wndcls.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
	wndcls.hCursor = LoadCursor(NULL, IDC_CROSS);
	wndcls.hIcon = LoadIcon(NULL, IDI_ERROR);
	wndcls.hInstance = hInstance;
	wndcls.lpfnWndProc = WindowProc;
	wndcls.lpszClassName = _T("Hello");
	wndcls.lpszMenuName = NULL;
	wndcls.style = CS_HREDRAW | CS_VREDRAW;
	RegisterClass(&wndcls);

	HWND hwnd;
	hwnd = CreateWindow(_T("Hello"), L"World", WS_OVERLAPPEDWINDOW,
		0, 0, 600, 400, NULL, NULL, hInstance, NULL);

	ShowWindow(hwnd, SW_SHOWNORMAL);
	UpdateWindow(hwnd);

	MSG msg;
	while (GetMessage(&msg, NULL, 0, 0))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
	return 0;
}

// 消息处理函数的实现  
LRESULT CALLBACK WindowProc(
	  HWND hwnd,
	  UINT uMsg,
	  WPARAM wParam,
	  LPARAM lParam
)
{
	switch (uMsg)
	{
	case WM_DESTROY:
	{
					   PostQuitMessage(0);
					   return 0;
	}
	}
	return DefWindowProc(hwnd, uMsg, wParam, lParam);
}


0
0
查看评论

Windows API WinMain函数

Windows API(1) WinMain函数 谁是第一个Windows API?无可置疑,当然是WinMain Function啦。MSDN上说:The WinMain function is the conventional name for the user-provid
  • pofante
  • pofante
  • 2011-07-21 01:35
  • 2804

WinMain()主函数

int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hprevinstance, LPSTR lpcmdline, int ncmdshow) { MessageBoxA(NULL,"TRY A T...
  • qq981932962
  • qq981932962
  • 2014-10-24 20:19
  • 3718

WinMain函数简介

Winmain是windows平台下应用程序的入口函数。 程序实现的步骤为:Winmain函数的定义->创建一个窗口->进行消息的循环->编写窗口过程函数。 形式为: Int WINAPI WinMain( HINSTANCE hInstance,  &...
  • Alexander_Frank
  • Alexander_Frank
  • 2016-07-12 17:40
  • 859

在Win32控制台程序中添加Windows窗口

在Win32 控制台程序中添加对话框或窗口
  • lxfjsks
  • lxfjsks
  • 2010-11-13 22:57
  • 3674

VC中控制台程序如何创建窗口

转载出至:http://blog.chinaunix.net/uid-13614124-id-3747923.html 在VC控制台程序中调用D3DVideoRender时,需要创建新的窗口控件显示图像 #include "windows.h" #include "...
  • jobsxiao
  • jobsxiao
  • 2016-09-24 17:18
  • 1289

windows 控制台cmd乱码的解决办法

有时在cmd中输出的中文乱码 解决办法如下: 在cmd中输入 CHCP 65001
  • taoshujian
  • taoshujian
  • 2017-03-04 14:27
  • 12201

从Win32程序的主函数WinMain中获取命令行参数

在标准C或者Win32控制台程序的main函数中,它们都有两个参数:"argc" 和 "argv",如下所示: int main(int argc, char * argv[]) 这些参数帮助我们为程序传入命令行参数。"argc"...
  • ypist
  • ypist
  • 2012-11-01 19:51
  • 6429

WinMain的基本流程

原文出处:http://blog.csdn.net/tcjiaan/article/details/8497535   一、WinMain入口点 我们在学习标准C++的时候,都知道每个应用程序运行时都会先进入入口点函数main,而当从main函数跳出时程序就结束了。在Wi...
  • yaked
  • yaked
  • 2016-08-29 17:14
  • 3978

VS2012_win32application_WinMain_创建窗口

1.创建项目 创建项目->win32->win32项目(win32application)->填写命名和存放位置->下一步->选择“空项目”->完成 2.创建.cpp 在解决方案资源管理器的源文件右键->添加新建项->c++文件(.cpp)-&g...
  • hanshuning
  • hanshuning
  • 2015-12-10 23:27
  • 1215

从win32控制台创建窗口过程

// UIshow.cpp : 定义控制台应用程序的入口点。 // #include "windows.h" #include "TCHAR.h" LRESULT CALLBACK WindowProc( HWND hwnd, ...
  • coredoor
  • coredoor
  • 2013-01-29 20:08
  • 3891
    个人资料
    • 访问:303807次
    • 积分:5256
    • 等级:
    • 排名:第6203名
    • 原创:201篇
    • 转载:158篇
    • 译文:0篇
    • 评论:68条
    文章分类
    最新评论