C语言在VS Code环境下开发Windows程序(二)

By YC

  • 窗口显示程序

前面通过消息窗口显示了一个弹窗,还无法满足写windows程序的要求。通常,windows程序窗口右上角包括最大化,最小化,关闭按钮。

下面介绍Windows程序框架:

#include <windows.h>

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

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow)

{

static TCHAR szClassName[] = TEXT("HelloWin"); //窗口类名

HWND hwnd; //窗口句柄

MSG msg; //消息

WNDCLASS wndclass; //窗口类

/**********步:注册窗口类**********/

//为窗口类的各个字段赋值

wndclass.style = CS_HREDRAW | CS_VREDRAW; //窗口风格

wndclass.lpfnWndProc = WndProc; //窗口过程

wndclass.cbClsExtra = 0; //暂时不需要理解

wndclass.cbWndExtra = 0; //暂时不需要理解

wndclass.hInstance = hInstance; //当前窗口句柄

wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION); //窗口图标

wndclass.hCursor = LoadCursor (NULL, IDC_ARROW); //鼠标样式

wndclass.hbrBackground= (HBRUSH) GetStockObject (WHITE_BRUSH); //窗口背景画刷

wndclass.lpszMenuName = NULL ; //窗口菜单

wndclass.lpszClassName= szClassName; //窗口类名

//注册窗口

RegisterClass(&wndclass);

/*****步:创建窗口(并让窗口显示出来)*****/

hwnd = CreateWindow(

szClassName, //窗口类的名字

TEXT("Welcome"), //窗口标题(出现在标题栏)

WS_OVERLAPPEDWINDOW, //窗口风格

CW_USEDEFAULT, //初始化时x轴的位置

CW_USEDEFAULT, //初始化时y轴的位置

500, //窗口宽度

300, //窗口高度

NULL, //父窗口句柄

NULL, //窗口菜单句柄

hInstance, //当前窗口的句柄

NULL //不使用该值

);

//显示窗口

ShowWindow (hwnd, iCmdShow);

//更新(绘制)窗口

UpdateWindow (hwnd);

/**********步:消息循环**********/

while( GetMessage(&msg, NULL, 0, 0) ){

TranslateMessage(&msg); //翻译消息

DispatchMessage (&msg); //分派消息

}

return msg.wParam;

}

/**********步:窗口过程**********/

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){

HDC hdc; //设备环境句柄

PAINTSTRUCT ps;

RECT rect;

switch (message){

//窗口绘制消息

case WM_PAINT:

hdc = BeginPaint (hwnd, &ps) ;

GetClientRect (hwnd, &rect) ;

DrawText(

hdc,

TEXT("第一个窗口程序"),

-1,

&rect,

DT_SINGLELINE | DT_CENTER | DT_VCENTER

);

EndPaint (hwnd, &ps) ;

return 0 ;

//窗口销毁消息

case WM_DESTROY:

PostQuitMessage(0) ;

return 0 ;

}

return DefWindowProc(hwnd, message, wParam, lParam) ;

}

编译会报错

K:\C Study\2 Window/2 window.c:22: undefined reference to `__imp_GetStockObject'

collect2.exe: error: ld returned 1 exit status

打开tasks.json,在arg下加入 –mwindows

保存后,重新编译

生成程序,运行

没有再打开CMD窗口了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言系统程序运行环境一般分为以下几种: 1. Windows操作系统:Windows操作系统是最常见的运行C语言程序环境Windows提供了命令行和图形界面两种运行方式,可以使用Visual Studio、Code::Blocks、Dev-C++开发软件进行编译和调试。 2. Linux操作系统:Linux操作系统也是一个常见的运行C语言程序环境。Linux提供了一个命令行界面,可以使用gcc、g++等编译器进行编译和调试。常用的开发软件有Eclipse、Code::Blocks、Anjuta等。 3. Mac OS X操作系统:Mac OS X操作系统也可以运行C语言程序。Mac OS X提供了Xcode集成开发环境,可以使用gcc、llvm-gcc、clang等编译器进行编译和调试。 常用的C语言开发软件: 1. Visual Studio:Visual Studio是一款微软开发的集成开发环境,支持多种语言,包括C语言。它提供了强大的调试工具和易于使用的用户界面。 2. Code::Blocks:Code::Blocks是一个免费、开源的跨平台集成开发环境,支持多种编译器,包括gcc和Visual C++。它提供了丰富的插件和易于使用的界面。 3. Dev-C++:Dev-C++是一个免费、开源的集成开发环境,支持C和C++编程语言。它使用MinGW编译器进行编译和调试,并提供了易于使用的用户界面。 4. Eclipse:Eclipse是一个免费、开源的跨平台集成开发环境,支持多种语言,包括C语言。它提供了丰富的插件和易于使用的用户界面。 5. Anjuta:Anjuta是一个免费、开源的集成开发环境,专门为Linux操作系统设计,支持多种编译器,包括gcc和clang。它提供了易于使用的用户界面和丰富的插件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值