如果要实现点击一个按钮,然后将输入框中的输入的内容在弹出的提示框中显示出来这个功能的话,使用大部分可视化IDE开发工具都是很简单的事情,用鼠标拖拖控件不用几分钟就可以实现.

当然了,如果真按照以上方式实现这个功能然后写成一篇文章的话也就有点太敷衍了.所以,为了加大难度,在这里我们要使用C语言来实现这个功能.界面功能全部用代码实现,想想就有点高大上是不是.

首先,我们要先创建窗口.需要创建一个主窗口和3个控件(子窗口).主窗口需要先注册,而控件则不需要,系统已经为我们预先注册了常用的控件,我们直接创建对应的控件即可.这里我们使用了BUTTON按钮控件、static静态文本控件、EDIT编辑控件.都是使用CreateWindow函数来创建的,函数定义如下:

HWND WINAPI CreateWindow(  _In_opt_ LPCTSTR   lpClassName,  _In_opt_ LPCTSTR   lpWindowName,  _In_     DWORD     dwStyle,  _In_intx,  _In_inty,  _In_intnWidth,  _In_intnHeight,  _In_opt_ HWND      hWndParent,  _In_opt_ HMENU     hMenu,  _In_opt_ HINSTANCE hInstance,  _In_opt_ LPVOID    lpParam);

第一个参数用于指定不同类型的窗口,第九个参数指定控件唯一ID,相关参数都可以在msdn找到的,这里不展开来写了,以后我的资料库会对这些内容进行详细描写.

//创建窗口

BOOL InitInstance(HINSTANCE hinstance,int nCmdShow){

HWND hwnd;

RECT rect;

//保存应用程序实例句柄

hinst = hinstance;

hwnd = CreateWindow(

"MainWClass",//窗口类名,使用之前注册的主窗口类

"御坂网络欢迎你",//窗口名,显示在串口标题栏上的字符串

WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_CLIPSIBLINGS | WS_POPUPWINDOW,//窗口样式

CW_USEDEFAULT,//水平位置(默认)

CW_USEDEFAULT,//垂直位置(默认)

800,//高

600,//宽

(HWND)NULL,//无父窗口

(HMENU)NULL,//菜单

hinstance,//应用程序实例

(LPVOID)NULL//无窗口创建数据

);

//窗口是否创建成功

if(!hwnd){

return FALSE;

}

hwndbutton =  CreateWindow(

"BUTTON",//窗口类名,使用之前注册的主窗口类

"按钮",//窗口名,显示在串口标题栏上的字符串

WS_CHILD | WS_VISIBLE |BS_PUSHBUTTON,//窗口样式

420,//水平位置(默认)

90,//垂直位置(默认)

120,//宽

40,//高

(HWND)hwnd,//无父窗口

(HMENU)1,//菜单

(HINSTANCE)NULL,//应用程序实例

(LPVOID)NULL//无窗口创建数据

);

hwndstatic = CreateWindow(

TEXT("static"),

TEXT("你好"),

WS_CHILD | WS_VISIBLE | WS_BORDER,

420,0,150,80,

(HWND)hwnd,

(HMENU)2,

(HINSTANCE)NULL,

(LPVOID)NULL

);

hwndedit = CreateWindow(

"EDIT",

"666",

WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_BORDER | ES_LEFT |ES_MULTILINE | ES_AUTOVSCROLL,

0,0,400,200,

(HWND)hwnd,

(HMENU)3,

(HINSTANCE)NULL,

(LPVOID)NULL

);

//窗口是否创建成功

if(!hwndbutton){

return FALSE;

}

ShowWindow(hwnd,nCmdShow);

UpdateWindow(hwnd);

return TRUE;

}

窗口创建完成之后就是显示窗口,更新窗口.之后消息循环

我们要在消息循环对一些事件进行处理.也就是实现我们标题所述功能,这个刚开始我也完全没有头绪,不过最后还是实现了通过WM_COMMAND消息获取点击按钮事件进行处理,GetWindowText函数获取编辑框内容,最终实现点击按钮弹出提示框.

//消息处理函数

LRESULT CALLBACK MainWndProc(

HWND hwnd,//窗口句柄

UINT uMsg,//消息标识符

WPARAM wParam,//消息的第一个参数

LPARAM lParam//消息的第二个参数

){

int wmId, wmEvent;

switch(uMsg){

case WM_CREATE://窗口创建时收到此消息

break;

case WM_PAINT://窗口被绘制时收到此消息

break;

case WM_SIZE://窗口大小改变时收到此消息

//OnWindowResize();

break;

case WM_NOTIFY:// NOTIFY 通常由控件发送给其父窗口,说明控件正在进行某项串口操作

break;

case WM_DESTROY://窗口销毁,单击右上角的关闭按钮会触发此消息

PostQuitMessage(0);

break;

case WM_COMMAND:

wmId    = LOWORD(wParam);

wmEvent = HIWORD(wParam);

switch (wmId){

case 1:  //按下按钮

//更改文本框的内容

SetWindowText( hwndstatic, TEXT("你点击了下面的按钮") );

LPTSTR lpString[128];

GetWindowText(hwndedit,lpString,128);

MessageBox(NULL,lpString,"输入的内容是",MB_OK);

break;

default:

//MessageBox(NULL,"dd","ee",MB_OK);

//不处理的消息一定要交给 DefWindowProc 处理。

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

}

break;

default://可以在此处理其他消息

break;

}

//有很多消息未做处理,需要由默认串口消息处理函数来处理

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

}

通过上面的消息处理函数,我们的程序就可以响应我们的点击按钮事件了.最终效果如图

当然还要加下面这些声明和代码WinMain函数才可以运行

#define _WIN32_WINNT 0x0501

#include

#include

BOOL InitApplication(HINSTANCE hinstance);

BOOL InitInstance(HINSTANCE hinstance,int nCmdShow);

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

HINSTANCE hinst; //应用程序实例句柄

HWND hwndMain; //保留窗口句柄

HWND hwndbutton;//按钮

HWND hwndstatic;//静态文字框

HWND hwndedit;//编辑框

int WINAPI WinMain(HINSTANCE hinstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){

MSG msg;

BOOL fGotMessage;

//注册窗口

if(!InitApplication(hinstance)){

return FALSE;

}

//创建窗口

if(!InitInstance(hinstance,nCmdShow)){

return FALSE;

}

//消息循环

while((fGotMessage = GetMessage(&msg,(HWND)NULL,0,0)) != 0 && fGotMessage != -1){

TranslateMessage(&msg);

DispatchMessage(&msg);

}

return msg.wParam;

}

功能很简单,但是代码一点也不少哎.不过这样写代码有助于我们理解程序的执行过程,所以我是比较喜欢用这种方式写代码的.以上就是这篇文章的全部内容了,写的比较小白毕竟自己也是处于学习阶段还写不错高深的内容.

c语言按一个按钮弹出窗口,实现点击按钮,弹出输入框的内容相关推荐

  1. 点击弹出窗口外任意地方关闭弹出窗口

    问:如何在点击弹出窗口外其他地方时关闭弹出窗口? 答:使用FlexMouseEvent'sMOUSE_DOWN_OUTSIDE事件.用户点击弹出窗口的外部时,会分发此事件.只需要在popUpWindo ...

  2. python点击按钮弹出新窗口_PyQt5点击button如何弹出新窗口?

    怎么通过点击button,来打开一个新的窗口? 是写在同一个脚本里,还是把新窗口的代码放在另一个脚本里,然后通过点击按钮来运行? import sys from PyQt5.QtWidgets imp ...

  3. pyqt5+qt desiger实例教程(1)创建含有三个按钮的窗口,点击按钮2输出消息、按钮3可退出

    pyqt5+qt desiger实例教程(1)创建含有三个按钮的窗口,点击按钮三可退出 目标:设计一个含有三个按钮的窗口,点击按钮2弹出消息,点击按钮3退出 如果是使用的anacoda那么自带qtde ...

  4. pyqt5 基础创建窗口,点击按钮,打开浏览器

    创建窗口,点击按钮,打开浏览器 QWidget { border-image:url(E:/20220305/django_test1/appium/b.jpg); }QTextBrowser { b ...

  5. html点击按钮文件上传,js点击按钮实现文件上传

    点击按钮实现文件上传 点击按钮实现文件上传 $('#uploadFileButton').click(function () { $('#upload').click(); }); $('#uploa ...

  6. html弹出窗口是浮动,JS实现弹出浮动窗口(支持鼠标拖动和关闭)实例详解

    本文实例讲述了JS实现弹出浮动窗口.分享给大家供大家参考.具体如下: 这里介绍的JS弹出浮动窗口,支持鼠标拖动和关闭,点击链接文字后弹出层窗口,也称作是弹出式对话框吧. 关于一些参数说明: bodyc ...

  7. JQuery弹出层,点击按钮后弹出遮罩层,有关闭按钮

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <t ...

  8. mfc在控件中嵌入多个窗口,点击按钮切换显示不同窗口

    主窗口添加三个按钮与一个picturecontrol控件,切换的多个窗口嵌入到图片控件中 在资源视图中,右键rc资源文件,添加资源,选择Diaglog窗口资源,新建 建立的子窗口,设置窗口属性 Sty ...

  9. php点击按钮显示隐藏代码,jQuery中点击按钮实现显示与隐藏的方法

    jQuery能够简单快捷的实现很多功能,因此在前端开发中被广泛使用,正在学习jQuery的小伙伴,你会用jQuery实现点击显示再次点击隐藏的效果吗(即jQuery二次点击隐藏)?这篇文章就和大家讲讲 ...

  10. php网站点击按钮更新程序,php页面 点击按钮执行更新操作

    代码如下:此页面名称为updateScoreNew.php,点击按钮后获得id和score,然后执行更新数据库操作,不知道怎么写,点击按钮怎么都不调用方法,愁死了都... html head ?php ...

最新文章

  1. casperjs 安装试用
  2. 基础才是重中之重~用好configSections让配置信息更规范
  3. 学知识的时候出去看看的意义
  4. 【Java Lambda表达式】Lambda表达式详解、Lambda表达式的等效使用方式、多线程
  5. 1032 挖掘机技术哪家强 (20分)——15行代码AC
  6. oracle创建多个游标,Oracle——游标的创建和使用
  7. Win32API不规则窗口制作
  8. 开发过程中的注意事项,想到哪写到哪
  9. 【2019.7.15】
  10. [qq机器人] nonebot2 群管插件
  11. HashMap底层原理实现源码分析
  12. 【精品收藏】世界上最有智慧的人是怎样理性思考的?查理·芒格的100个思维模型...
  13. 实操!!!论坛项目开发流程(java)
  14. FreeType字体程序库介绍(转)
  15. 阿里云负载均衡的配置和使用场景
  16. Layui使用入门教程
  17. 查看Linux下的文件
  18. C4D倒角应用—样条挤压后如何正确倒角
  19. 今天差点就被黑中介给骗了!!!!!!后怕中。。。
  20. k8s集群安装过程中的相关问题和解决

热门文章

  1. 文件系统以及硬盘分区概念
  2. 光纤传输设备如何选择?光纤网络的优缺点分析
  3. python计算定积分_python 求定积分和不定积分示例
  4. Douyu0.6.1 源码分析 之 MVC篇
  5. 自动化测试方案设计和实现
  6. 如何获得自己的外网IP?
  7. 联想服务器无线网卡被禁用,无线网卡被禁用怎么办
  8. 应用电子技术创新实验设计说明书
  9. 为什么要报考系统架构设计师考试
  10. easypoi必填项_easypoi必填项_EasyPoi使用入门