【VC编程】笔记1--创建一个Win32的应用程序,并显示创建的窗口和菜单

/*****************************************************************************************************
*文件说明:
*        Win32_SDK编程---主程序
*开发环境:
*        Win10+VS2012
*时间地点:
*        陕西师范大学 2017.1.2
*作    者:
*        九月
******************************************************************************************************/
#include<Windows.h>
#include<stdio.h>
#include<iostream>
#include"resource.h"
#include<tchar.h>
/******************************************************************************************************
*函数说明:
*         窗口过程函数
*函数参数:
*         1---HWND hwnd------发送消息的窗口句柄
*         2---UINT uMsg------系统传递过来的消息识别码
*         3---WPARAM wParam--消息附加参数1
*         4---LPARAM lParam--消息附加参数2
******************************************************************************************************/
LRESULT CALLBACK WndProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
	if (uMsg==WM_PAINT)
	{
		PAINTSTRUCT ps;
		const HDC hDC = BeginPaint(hwnd,&ps);
		RECT  rect;
		GetClientRect(hwnd,&rect);
		DrawText(hDC,TEXT("Windows编程"),-1,&rect,DT_CENTER|DT_VCENTER|DT_SINGLELINE);
		EndPaint(hwnd,&ps);
		EndPaint(hwnd,&ps);
		return 0;
	}
	else if(uMsg==WM_DESTROY)
	{
		PostQuitMessage(0);
		return 0;
	}
	return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
/******************************************************************************************************
*函数说明:
*        1---WinMain是Windows程序的入口函数,与DOS程序中的Main函数的作用是一样的
*        2---WinMian主函数的作用是:
*                                  1--创建应用程序窗口
*                                  2--建立消息循环
*函数参数:
*        1---HINSTANCE hInstance------指针变量,当前应用程序的实例句柄
*        2---HINSTANCE hPrevInstace---指向当前应用程序前的一个实例句柄
*        3---LPSTR     lpCmdLine------指向本程序命令行字符串的指针
*        4---int       nCmdShow-------本程序窗口显示方式的标志
******************************************************************************************************/
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstace,LPSTR lpCmdLine,int nCmdShow)
{
	//【1】设计窗口
	WNDCLASS wndCls;
	wndCls.style        = CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS;            //[2]窗口样式
	wndCls.lpfnWndProc  = (WNDPROC)WndProc;                            //[3]指向窗口过程函数的函数指针
	wndCls.cbClsExtra   = 0;
	wndCls.cbWndExtra   = 0;
	wndCls.hInstance    = hInstance;                                   //[4]应用程序实例句柄
	wndCls.hIcon        = LoadIcon(hInstance,(LPCTSTR)IDI_APP);        //[5]主窗口图标
	wndCls.hCursor      = LoadCursor(NULL,IDC_ARROW);                  //[6]主窗口光标
	wndCls.hbrBackground= (HBRUSH)GetStockObject(GRAY_BRUSH);          //[7]主窗口背景颜色
	wndCls.lpszMenuName = (LPCWSTR)IDR_APP;                            //[8]主窗口菜单
	wndCls.lpszClassName= _T("MyWindow");                              //[9]主窗口类名
	wndCls.hIcon        = LoadIcon(hInstance,(LPCWSTR)IDI_APPSMALL);   //[10]小图标
	//【2】注册窗口
	RegisterClass(&wndCls);                                  
	//【3】创建窗口
	const HWND hwnd = CreateWindow(_T("MyWindow"),_T("Win32示例"),WS_OVERLAPPEDWINDOW,0,0,600,400,NULL,NULL,hInstance,NULL);
	//【4】显示窗口
	ShowWindow(hwnd,SW_SHOW);
	//【5】刷新窗口
	UpdateWindow(hwnd);
	//【6】定义消息结构体
	MSG msg;
	while (GetMessage(&msg,NULL,0,0))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
	return msg.wParam;
}

/*****************************************************************************************************
*文件说明:
*        资源头文件---resource.h
*开发环境:
*        Win10+VS2012
*时间地点:
*        陕西师范大学 2017.1.2
*作    者:
*        九月
******************************************************************************************************/
#define IDI_APP               100                                    //[1]主窗口图标资源标识符
#define IDI_APPSMALL          101                                    //[2]主窗口小图标资源标识符
#define IDR_APP               102                                    //[3]主窗口菜单快捷键资源标识符
#define IDS_APP_TITLE         1000                                   //[4]应用程序标题资源标识符

#define IDM_FILE_NEW          1101
#define IDM_FILE_OPEN         1102
#define IDM_EXIT              1103
#define IDM_ABOUT             1104
#define IDM_SEPTEMBER         1105
/*****************************************************************************************************
*文件说明:
*        资源描述文件---resource.rc
*开发环境:
*        Win10+VS2012
*时间地点:
*        陕西师范大学 2017.1.2
*作    者:
*        九月
******************************************************************************************************/
#include "resource.h"
#include <Windows.h>

IDD_APP        ICON DISCARDABLE "res\\app.ico"                      //[1]主窗口图标资源
IDD_APPSMALL   ICON DISCARDABLE "res\\appsmall.ico"                 //[2]主窗口小图标资源
IDR_APP        MENU DISCARDABLE                                     //[3]主窗口菜单资源
BEGIN
    POPUP "文件(&F)"
	BEGIN
	     MENUITEM "新建(&N)\tCtrl+N",   IDM_FILE_NEW
		 MENUITEM "打开(&O)..\tCtrl_O"  IDM_FILE_OPEN
		 MENUITEM "退出(&X)"            IDM_EXIT
	END
	POPUP "帮助(&H)"
	BEGIN
	     MENUITEM "软件简介(&A)"         IDM_ABOUT
	END
	POPUP "九月软件"
	BEGIN
	     MENUITEM "九月软件简介"         IDM_SEPTEMBER
	END
END
IDR_APP ACCELERATORS MOVEABLE PURE                                  //[0]主窗口快捷键资源
BEGIN
    "N",IDM_FILE_NEW
	"O",IDM_FILE_OPEN,    VIRTKEY,ALT
	"X",IDM_EXIT,         VIRTKEY,ALT
	VK_F1,IDM_ABOUT,      VIRTKEY   
END
STRINGTABLE DISCARDABLE                                             //[1]字符串资源
BEGIN
    IDS_APP_TITLE       "MainWindow"                                //[2]应用程序标题资源
END




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是在VC2010中编写Win32窗口应用程序的基本步骤: 1. 打开VC2010,选择“新建项目”。 2. 在“新建项目”对话框中,选择“Win32控制台应用程序”并命名您的项目。 3. 在“应用程序类型”对话框中,选择“Windows应用程序”并勾选“空项目”选项。 4. 单击“确定”按钮创建项目。 5. 在“解决方案资源管理器”中,右键单击“源文件”文件夹并选择“添加”>“新建项”。 6. 在“添加新项”对话框中,选择“C++文件”并命名您的文件。 7. 在您的源文件中,编写WinMain函数和窗口过程函数。 8. 在您的WinMain函数中,调用CreateWindow函数创建窗口。 9. 在您的窗口过程函数中,处理您需要处理的窗口消息。 10. 在您的窗口过程函数中,处理WM_DESTROY消息并调用PostQuitMessage函数以退应用程序。 11. 编译并运行您的应用程序。 以下是一个简单的Win32窗口应用程序示例: ```c++ #include <Windows.h> LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { // 注册窗口类 WNDCLASS wc; wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); wc.lpszMenuName = NULL; wc.lpszClassName = "MyWindowClass"; RegisterClass(&wc); // 创建窗口 HWND hWnd = CreateWindow("MyWindowClass", "Win32 Window Application", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 640, 480, NULL, NULL, hInstance, NULL); // 显示窗口 ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); // 消息循环 MSG msg; while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return (int)msg.wParam; } LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_PAINT: { PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd, &ps); TextOut(hdc, 10, 10, "Hello, Win32 Window Application!", strlen("Hello, Win32 Window Application!")); EndPaint(hWnd, &ps); break; } case WM_DESTROY: { PostQuitMessage(0); break; } default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; } ``` 这个示例创建一个简单的窗口,并在窗口中绘制一些文本。请注意,这只是一个简单的示例,您可以根据您的需要进行更改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值