做了一个纯c语言的窗口程序,没有用MFC!。
有另外一个串口程序接收的数据用fopen放到一个文本文件里面(有一个博主让我放CStatic里面,但是小不黑(白)表示不会弄),
现在的窗口程序做了一个文本框和对话框,请问该怎么把文本文件的内容放到这个里面来呢?对了因为接收串口数据的fopen是用的“w+”所以不会累积数据,这个文本框/对话框貌似还要一直进行更新或者循环读取?
对了,因为是一个小不黑(白),所以码的程序是自己乱拼的,要是看出来哪里有问题就跟我说,采纳或者打赏都可以。
#define _CRT_SECURE_NO_WARNINGS 1
#include <windows.h>
#include <tchar.h>
#define IDB_ONE 3301//按键1
#define IDB_TWO 3302//2
#define IDB_THREE 3303//3
#define IDB_FOUR 3304//4
#define IDB_Five 3305//5 窗口
LRESULT _stdcall WndProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam);
HINSTANCE hg_app;//全局实例句柄
int _stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
HWND hwnd;
WNDCLASS wndcls;//设置这个结构的不同字段
MSG msg;
/*↓↓↓↓↓↓↓↓↓↓↓↓注册窗口↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/
wndcls.cbClsExtra=0;
wndcls.cbWndExtra=0;
wndcls.hbrBackground=(HBRUSH)COLOR_WINDOW;
wndcls.hCursor=LoadCursor(NULL,IDC_ARROW);//图标
wndcls.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wndcls.hInstance=hInstance;
wndcls.lpfnWndProc=WndProc;//过程函数
wndcls.lpszClassName=_T("ClassName");//ASCIIZ形式的窗口类名称的地址,每一个应用程序必须有一个窗口类,类名
wndcls.lpszMenuName=_T("MenuName");//ASCIIZ形式的窗口名称的地址。该名称会显示在标题条上
wndcls.style=CS_HREDRAW | CS_VREDRAW;
RegisterClass(&wndcls);//注册这个窗口类型,wndcls
/**/
/*创建、显示窗口*/
hwnd=CreateWindow(_T("ClassName"),//窗口类名,
_T("采集窗口"),//窗口标题
WS_OVERLAPPEDWINDOW,//窗口样式
0,//距离屏幕左上角横坐标
0,//距离屏幕左上角横坐标
1350,//窗口宽度
740,//窗口高度
NULL,//副窗口句柄
NULL,//菜单句柄
hInstance,//当前实例句柄
NULL);//指向一个值的指针,传递给窗口消息,一般为NULL
ShowWindow(hwnd,SW_SHOWNORMAL);//显示窗口
UpdateWindow(hwnd);//更新窗口
/*CreateWindow创建一个模板*/
/*消息循环,退出循环表示程序结束*/
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);//翻译消息
DispatchMessage(&msg);//分发消息给过程函数
}
/*↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑*/
return (int)msg.wParam;
}
/*窗口过程函数*/
LRESULT _stdcall WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg)//循环
{
/*case WM_COMMAND:
return DefWindowProc(hwnd, uMsg, wParam, lParam);*/
break;
case WM_CREATE:
{
//创建三个按钮
CreateWindow(L"Button", L"开始", WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,
35, 10, 160, 60, hwnd, (HMENU)IDB_ONE, hg_app, NULL);
CreateWindow(L"Button", L"暂停", WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,
35, 80, 160, 60, hwnd, (HMENU)IDB_TWO, hg_app, NULL);
CreateWindow(L"Button", L"取消", WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,
35, 150, 160, 60, hwnd, (HMENU)IDB_THREE, hg_app, NULL);
CreateWindow(L"Button", L"返回", WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,
35, 230, 160, 60, hwnd, (HMENU)IDB_FOUR, hg_app, NULL);
//创建一个窗口,文本框
CreateWindow(L"EDIT", L"无数据",WS_CHILD/*子窗口*/ | WS_VISIBLE/*初始可见*/ | ES_MULTILINE/*多行*/|WS_BORDER/*细边框*/|WS_VSCROLL,
250,10,400,300,hwnd,(HMENU)IDB_Five,hg_app,NULL);
//创建一个窗口,对话框
CreateWindow(L"EDIT", L"数据",WS_VISIBLE/*初始可见*/|WS_SIZEBOX |WS_CHILD/*子窗口*/|WS_DLGFRAME/*对话框*/|WS_BORDER,
700,10,400,400,hwnd,(HMENU)IDB_Five,hg_app,NULL);
}
break;
case WM_COMMAND:
{
switch(LOWORD(wParam))
{
case IDB_ONE:
//MessageBox(hwnd, L"您点击了第一个按钮。", L"提示", MB_OK | MB_ICONINFORMATION);
SendMessage((HWND)lParam, WM_SETTEXT, (WPARAM)NULL, (LPARAM)L"正在进行");
break;
case IDB_TWO:
//MessageBox(hwnd, L"您点击了第二个按钮。", L"提示", MB_OK | MB_ICONINFORMATION);
SendMessage((HWND)lParam, WM_SETTEXT, (WPARAM)NULL, (LPARAM)L"已暂停");
break;
case IDB_THREE:
//MessageBox(hwnd, L"您点击了第三个按钮。", L"提示", MB_OK | MB_ICONINFORMATION);
SendMessage((HWND)lParam, WM_SETTEXT, (WPARAM)NULL, (LPARAM)L"已取消"); //窗口句柄, 应用程序发送此消息来设置一个窗口的文本
break;
default:
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
break;
/* case WM_PAINT:
{
}
break;*/
case WM_DESTROY:
PostQuitMessage(0);//关闭窗口,如果被拦截就关不了
break;
default:
return DefWindowProc(hwnd, uMsg, wParam, lParam);//调用默认过程函数,刷新窗口
}
return 0;
}
}