Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
全部都想学怎么办
WindowsControl学习
提交
103a6802
W
WindowsControl学习
项目概览
全部都想学怎么办
/
WindowsControl学习
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
W
WindowsControl学习
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
103a6802
编写于
3月 29, 2022
作者:
全部都想学怎么办
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
上传新文件
上级
09af6691
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
217 addition
and
0 deletion
+217
-0
按钮控件/利用api代码创建默认按钮控件/CreateWindows.cpp
按钮控件/利用api代码创建默认按钮控件/CreateWindows.cpp
+217
-0
未找到文件。
按钮控件/利用api代码创建默认按钮控件/CreateWindows.cpp
0 → 100644
浏览文件 @
103a6802
// CreateWindows.cpp : 定义应用程序的入口点。
//
#include "framework.h"
#include "CreateWindows.h"
#define MAX_LOADSTRING 100
// 全局变量:
//HWND hWnd;
HINSTANCE
hInst
;
// 当前实例
WCHAR
szTitle
[
MAX_LOADSTRING
];
// 标题栏文本
WCHAR
szWindowClass
[
MAX_LOADSTRING
];
// 主窗口类名
// 此代码模块中包含的函数的前向声明:
ATOM
MyRegisterClass
(
HINSTANCE
hInstance
);
BOOL
InitInstance
(
HINSTANCE
,
int
);
//函数窗口过程回调函数
LRESULT
CALLBACK
WndProc
(
HWND
,
UINT
,
WPARAM
,
LPARAM
);
INT_PTR
CALLBACK
About
(
HWND
,
UINT
,
WPARAM
,
LPARAM
);
int
APIENTRY
wWinMain
(
_In_
HINSTANCE
hInstance
,
_In_opt_
HINSTANCE
hPrevInstance
,
_In_
LPWSTR
lpCmdLine
,
_In_
int
nCmdShow
)
{
//UNREFERENCED_PARAMETER 用来告诉编译器参数hPrevInstance已经被使用
UNREFERENCED_PARAMETER
(
hPrevInstance
);
UNREFERENCED_PARAMETER
(
lpCmdLine
);
// TODO: 在此处放置代码。
// 初始化全局字符串
LoadStringW
(
hInstance
,
IDS_APP_TITLE
,
szTitle
,
MAX_LOADSTRING
);
LoadStringW
(
hInstance
,
IDC_CREATEWINDOWS
,
szWindowClass
,
MAX_LOADSTRING
);
MyRegisterClass
(
hInstance
);
// 执行应用程序初始化:
if
(
!
InitInstance
(
hInstance
,
nCmdShow
))
{
return
FALSE
;
}
HACCEL
hAccelTable
=
LoadAccelerators
(
hInstance
,
MAKEINTRESOURCE
(
IDC_CREATEWINDOWS
));
//创建一个MSG结构体,用来存储消息的相关信息
MSG
msg
;
// 主消息循环:
while
(
GetMessage
(
&
msg
,
nullptr
,
0
,
0
))
{
if
(
!
TranslateAccelerator
(
msg
.
hwnd
,
hAccelTable
,
&
msg
))
{
TranslateMessage
(
&
msg
);
DispatchMessage
(
&
msg
);
}
}
return
(
int
)
msg
.
wParam
;
}
//
// 函数: MyRegisterClass()
//
// 目标: 注册窗口类。
//
ATOM
MyRegisterClass
(
HINSTANCE
hInstance
)
{
WNDCLASSEXW
wcex
;
wcex
.
cbSize
=
sizeof
(
WNDCLASSEX
);
wcex
.
style
=
CS_HREDRAW
|
CS_VREDRAW
;
wcex
.
lpfnWndProc
=
WndProc
;
wcex
.
cbClsExtra
=
0
;
wcex
.
cbWndExtra
=
0
;
wcex
.
hInstance
=
hInstance
;
wcex
.
hIcon
=
LoadIcon
(
hInstance
,
MAKEINTRESOURCE
(
IDI_CREATEWINDOWS
));
wcex
.
hCursor
=
LoadCursor
(
nullptr
,
IDC_ARROW
);
wcex
.
hbrBackground
=
(
HBRUSH
)(
COLOR_WINDOW
+
1
);
wcex
.
lpszMenuName
=
MAKEINTRESOURCEW
(
IDC_CREATEWINDOWS
);
wcex
.
lpszClassName
=
szWindowClass
;
wcex
.
hIconSm
=
LoadIcon
(
wcex
.
hInstance
,
MAKEINTRESOURCE
(
IDI_SMALL
));
//调用WinApi注册函数
return
RegisterClassExW
(
&
wcex
);
}
//
// 函数: InitInstance(HINSTANCE, int)
//
// 目标: 保存实例句柄并创建主窗口
//
// 注释:
//
// 在此函数中,我们在全局变量中保存实例句柄并
// 创建和显示主程序窗口。
//
BOOL
InitInstance
(
HINSTANCE
hInstance
,
int
nCmdShow
)
{
hInst
=
hInstance
;
// 将实例句柄存储在全局变量中
//创建窗口
HWND
hWnd
=
CreateWindowW
(
szWindowClass
,
szTitle
,
WS_OVERLAPPEDWINDOW
,
CW_USEDEFAULT
,
0
,
CW_USEDEFAULT
,
0
,
nullptr
,
nullptr
,
hInstance
,
nullptr
);
//创建按钮1
HWND
hBwnd_One
=
CreateWindowW
(
L"Button"
,
L"退出"
,
WS_VISIBLE
|
WS_CHILD
,
0
,
0
,
100
,
100
,
hWnd
,
(
HMENU
)
IDB_WINMAIN_One
,
hInst
,
nullptr
);
if
(
!
hWnd
)
{
return
FALSE
;
}
ShowWindow
(
hWnd
,
nCmdShow
);
UpdateWindow
(
hWnd
);
//创建按钮2
HWND
hBwnd_Two
=
CreateWindowW
(
L"Button"
,
L"Exist"
,
WS_VISIBLE
|
WS_CHILD
,
0
,
101
,
100
,
100
,
hWnd
,
(
HMENU
)
IDB_WINMAIN_Two
,
hInst
,
nullptr
);
return
TRUE
;
}
//
// 函数: WndProc(HWND, UINT, WPARAM, LPARAM)
//
// 目标: 处理主窗口的消息。
//
// WM_COMMAND - 处理应用程序菜单
// WM_PAINT - 绘制主窗口
// WM_DESTROY - 发送退出消息并返回
//
//
LRESULT
CALLBACK
WndProc
(
HWND
hWnd
,
UINT
message
,
WPARAM
wParam
,
LPARAM
lParam
)
{
switch
(
message
)
{
case
WM_CREATE
:
//创建按钮3
{
HWND
hBwnd_Three
=
CreateWindowW
(
L"Button"
,
L"Start"
,
WS_VISIBLE
|
WS_CHILD
,
0
,
201
,
100
,
100
,
hWnd
,
(
HMENU
)
IDB_WINMAIN_Three
,
hInst
,
nullptr
);
}
break
;
case
WM_COMMAND
:
{
int
wmId
=
LOWORD
(
wParam
);
// 分析菜单选择:
switch
(
wmId
)
{
case
IDM_ABOUT
:
DialogBox
(
hInst
,
MAKEINTRESOURCE
(
IDD_ABOUTBOX
),
hWnd
,
About
);
break
;
case
IDM_EXIT
:
DestroyWindow
(
hWnd
);
break
;
case
IDB_WINMAIN_One
:
MessageBox
(
hWnd
,
L"退出按钮"
,
L"提示"
,
MB_OK
|
MB_ICONQUESTION
);
PostQuitMessage
(
0
);
//退出程序
case
IDB_WINMAIN_Two
:
MessageBox
(
hWnd
,
L"Exist按钮"
,
L"提示"
,
MB_OK
|
MB_ICONQUESTION
);
PostQuitMessage
(
0
);
//退出程序
case
IDB_WINMAIN_Three
:
MessageBox
(
hWnd
,
L"Start按钮"
,
L"提示"
,
MB_OK
|
MB_ICONQUESTION
);
PostQuitMessage
(
0
);
//退出程序
default:
return
DefWindowProc
(
hWnd
,
message
,
wParam
,
lParam
);
}
}
break
;
case
WM_PAINT
:
{
PAINTSTRUCT
ps
;
HDC
hdc
=
BeginPaint
(
hWnd
,
&
ps
);
// TODO: 在此处添加使用 hdc 的任何绘图代码...
EndPaint
(
hWnd
,
&
ps
);
}
break
;
case
WM_DESTROY
:
PostQuitMessage
(
0
);
break
;
default:
return
DefWindowProc
(
hWnd
,
message
,
wParam
,
lParam
);
}
return
0
;
}
// “关于”框的消息处理程序。
INT_PTR
CALLBACK
About
(
HWND
hDlg
,
UINT
message
,
WPARAM
wParam
,
LPARAM
lParam
)
{
UNREFERENCED_PARAMETER
(
lParam
);
switch
(
message
)
{
case
WM_INITDIALOG
:
return
(
INT_PTR
)
TRUE
;
case
WM_COMMAND
:
if
(
LOWORD
(
wParam
)
==
IDOK
||
LOWORD
(
wParam
)
==
IDCANCEL
)
{
EndDialog
(
hDlg
,
LOWORD
(
wParam
));
return
(
INT_PTR
)
TRUE
;
}
break
;
}
return
(
INT_PTR
)
FALSE
;
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录