问一下为什么我的程序弹出的messageBox关不了,而且修改之后第二次编译的时候会不能写入,是进程没有关掉吗?
// graphics.cpp : 定义应用程序的入口点。
//
#include "framework.h"
#include "graphics.h"
#include <string.h>
#include <atltypes.h>
#include "uart.h"
#include "serialcom.h"
#define MAX_LOADSTRING 100
// 全局变量:
HINSTANCE hInst; // 当前实例
WCHAR szTitle[MAX_LOADSTRING]; // 标题栏文本
WCHAR szWindowClass[MAX_LOADSTRING]; // 主窗口类名
// 此代码模块中包含的函数的前向声明:
BOOL InitInstance(HINSTANCE, int);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
BOOL CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM 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(lpCmdLine);
// TODO: 在此处放置代码。
// 初始化全局字符串
LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
LoadStringW(hInstance, IDC_GRAPHICS, szWindowClass, MAX_LOADSTRING);
// 执行应用程序初始化:
if (!InitInstance (hInstance, nCmdShow))
{
return FALSE;
}
HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_GRAPHICS));
MSG msg;
// 主消息循环:
while (GetMessage(&msg, NULL, 0, 0))
{
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return (int) msg.wParam;
}
//
// 函数: InitInstance(HINSTANCE, int)
//
// 目标: 保存实例句柄并创建主窗口
//
// 注释:
//
// 在此函数中,我们在全局变量中保存实例句柄并
// 创建和显示主程序窗口。
//
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
hInst = hInstance; // 将实例句柄存储在全局变量中
/*主窗口*/
HWND hWnd = CreateDialogW(hInst, MAKEINTRESOURCE(IDD_DIALOG_UART), NULL, About);
if (!hWnd)
{
return FALSE;
}
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
return TRUE;
}
//文本框的处理程序。
BOOL CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_COMMAND:
MessageBox(hwndDlg, L"点击了文本框!\n", L"成功", MB_OK);
}
return (INT_PTR)FALSE;
}
// “关于”框的消息处理程序。
INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
UNREFERENCED_PARAMETER(lParam);
static HWND hOpen; /*打开串口句柄*/
static HWND hBaudRate; /*波特率句柄*/
static HWND hGet; /*收数据框句柄*/
static HWND hSend; /*发数据框句柄*/
static HWND hDefCom; /*默认单选句柄*/
static DWORD dwBaudrate = 1200; /*波特率大小*/
static int iPushtimes = 0; /*波特率按钮按下次数*/
static BOOL bOpenUart = FALSE; /*是否打开了串口*/
static uart myuart; /*串口对象*/
TCHAR buffer[255]; /*UNICODE数据缓存*/
char cBuffer[255]; /*ANSI*/
DWORD baudrate; /*波特率*/
switch (message)
{
case WM_INITDIALOG:
hOpen = GetDlgItem(hDlg, IDC_BUTTON_OPENCOMM);
hBaudRate = GetDlgItem(hDlg, IDC_COMBO_BAUDRATE);
hGet = GetDlgItem(hDlg, IDC_EDIT_RECEIVE);
hSend = GetDlgItem(hDlg, IDC_EDIT_SEND);
myuart.inithRec(hGet);
SendMessage(hBaudRate, CB_ADDSTRING, 0, (LPARAM)_T("4800"));
SendMessage(hBaudRate, CB_ADDSTRING, 0, (LPARAM)_T("9600"));
SendMessage(hBaudRate, CB_ADDSTRING, 0, (LPARAM)_T("115200"));
SendMessage(hBaudRate, CB_SETCURSEL, 0, 0);
return (INT_PTR)TRUE;
case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDC_BUTTON_OPENCOMM:
SendMessage(hBaudRate, WM_GETTEXT, (WPARAM)20, (LPARAM)buffer);
uart::TcharToChar(buffer, cBuffer);
sscanf_s(cBuffer, "%d", &baudrate);
if (!myuart.openCOM(baudrate))
{
MessageBox(hDlg, TEXT("打开串口失败!"), TEXT("错误"), MB_OK | MB_ICONERROR);
}
case IDC_COMBO_BAUDRATE:
break;
default:
break;
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_QUIT:
EndDialog(hDlg, LOWORD(wParam));
break;
}
return DefWindowProc(hDlg, message, wParam, lParam);
}
弹出错误框时,点X和确定都没有反应,确定按钮连图标凹陷的动画都没有。
...全文
相关推荐
c#教你如何自动关闭MessageBox弹出的窗口
我们都知道,MessageBox弹出的窗口是模式窗口,模式窗口会自动阻塞父线程的.所以如果有以下代码: MessageBox.Show("内容',"标题"); ....其它代码... 则只有关闭了MessageBox的窗口后才会运行下面的代码.而在某些场合下,我们又需要在一定时间内如果在用户还没有关闭窗口时能自动关闭掉窗口而避免程序一直停留不前..这样的话我们怎么做呢?上面也说了,MessageBox弹出的模式窗口会先阻塞掉它的父级线程.所以我们可以考虑在MessageBox前先增加一个用于"杀"掉MessageBox窗口的线程.因为需要在规定时间内"杀"掉窗口,所以我们可以直接考虑使用Timer类.以下是实现代码:
为什么电脑关不了机.docx
为什么电脑关不了机.docx
Winform 设置messageBox弹出窗体的button的text
Winform 设置messageBox弹出窗体button,例如:button的原本的“是”,“否”,“确定”,“取消” 可以换成自定义的内容
QT无边框窗口,无边框弹出框,无边框MessageBox
QT无边框窗口,无边框弹出框,无边框MessageBox
Wincc中弹出对话框函数MessageBox参数以及应用
Wincc中弹出对话框函数MessageBox参数以及应用


界面
