#include <windows.h>
#include <shlobj.h>
#include <stdio.h>
#include <time.h>
#include "aip_common.h"
#define BTN_BROWSE_FOLDER (101)
#define BTN_SAVE_SYMBOLS (102)
#define BTN_GENERATE_DATA (103)
#define BTN_PROCESS_DATA (104)
#define EDIT_FOLDER_PATH (105)
#define EDIT_USER_SYMBOLS (106)
#define ZERO (0)
#define ONE (1)
#define TWO (2)
#define MAX_FOLDER_LENGTH (260)
#define MAX_SYMBOL_INPUT (10000)
#define MAX_LINE_CONTENT (10000)
#define MAX_SYMBOL_PAIRS (10)
#define MAX_LINE_COUNT (100)
#define MAX_LINE_LENGTH (50)
#define DIGIT_START L'0'
#define DIGIT_END L'9'
#define UPPERCASE_START L'A'
#define UPPERCASE_END L'Z'
#define LOWERCASE_START L'a'
#define LOWERCASE_END L'z'
#define STACK_INIT -ONE
#define STACK_EMPTY -ONE
#define LINE_CONTENT_ELEMENTS (MAX_LINE_CONTENT)
typedef struct {
U2 u2_t_SYMBOL_open;
U2 u2_t_SYMBOL_close;
} ST_SYMBOL_PAIR;
ST_SYMBOL_PAIR st_g_SYMBOL_pairs_p[MAX_SYMBOL_PAIRS];
U4 u4_g_SYMBOL_num_pairs = ZERO; // 符号对数量
U2 u2p_g_FILE_folder_path_p[MAX_FOLDER_LENGTH ]; // 文件夹路径
U2 u2p_g_SYMBOL_user_symbols_p[MAX_SYMBOL_INPUT ]; // 用户输入的符号对
// 函数声明
void v_g_SYMBOL_saveFile(const U2 *u2p_g_FILE_folder_path_p, const U2 *u2p_a_SYMBOL_user_input) ;
U4 u4_g_SYMBOL_loadFile(const U2 *u2p_g_FILE_folder_path_p) ;
U4 u4_g_SYMBOL_isOpening(U2 u2_t_SYMBOL_ch);
U4 u4_g_SYMBOL_isClosing(U2 u2_t_SYMBOL_ch);
U4 u4_g_SYMBOL_matches(U2 u2_t_SYMBOL_open, U2 u2_t_SYMBOL_close);
void v_g_SYMBOL_generateRandomData(const U2 *u2p_g_FILE_folder_path_p);
void v_g_SYMBOL_validateDataFile(const U2 *u2p_g_FILE_folder_path_p);
void v_g_FILE_browseFolder(HWND hwnd);
void v_g_SYMBOL_saveFile(const U2 *u2p_g_FILE_folder_path_p, const U2 *u2p_a_SYMBOL_user_input) {
U2 u2_t_FILE_file_path_p[(U4)MAX_FOLDER_LENGTH ];
swprintf(u2_t_FILE_file_path_p, (U4)MAX_FOLDER_LENGTH , L"%ls\\Symbol.txt", u2p_g_FILE_folder_path_p);
// 检查输入的字符是否包含数字或字母
for (U4 u4_t_LOOP_index = ZERO; u2p_a_SYMBOL_user_input[u4_t_LOOP_index] != L'\0'; u4_t_LOOP_index++)
{
if ((u2p_a_SYMBOL_user_input[u4_t_LOOP_index] >= DIGIT_START && u2p_a_SYMBOL_user_input[u4_t_LOOP_index] <= DIGIT_END) || // 检测到数字
(u2p_a_SYMBOL_user_input[u4_t_LOOP_index] >= UPPERCASE_START && u2p_a_SYMBOL_user_input[u4_t_LOOP_index] <= UPPERCASE_END) || // 检测到大写字母
(u2p_a_SYMBOL_user_input[u4_t_LOOP_index] >= LOWERCASE_START && u2p_a_SYMBOL_user_input[u4_t_LOOP_index] <= LOWERCASE_END))
{ // 检测到小写字母
U2 u2_t_ERROR_message_p[(U4)MAX_FOLDER_LENGTH ];
swprintf(u2_t_ERROR_message_p, (U4)MAX_FOLDER_LENGTH ,
L"错误:输入包含无效字符:'%lc'。请重新输入合法的符号。",
u2p_a_SYMBOL_user_input[u4_t_LOOP_index]);
MessageBoxW(NULL, u2_t_ERROR_message_p, L"错误", MB_OK | MB_ICONERROR);
return; // 立即停止处理
}
}
FILE *vdp_t_FILE_file = _wfopen(u2_t_FILE_file_path_p, L"w, ccs=UTF-8"); // 使用 UTF-8 编码写入文件
if (!vdp_t_FILE_file)
{
MessageBoxW(NULL, L"无法创建 Symbol.txt 文件。", L"错误", MB_OK | MB_ICONERROR);
return;
}
U4 u4_t_SYMBOL_pair_count = (U4)ZERO;
for (U4 u4_t_LOOP_index = (U4)ZERO; u2p_a_SYMBOL_user_input[u4_t_LOOP_index] != L'\0'; u4_t_LOOP_index++)
{
// 跳过无效字符
if ((u2p_a_SYMBOL_user_input[u4_t_LOOP_index] == L' ') || (u2p_a_SYMBOL_user_input[u4_t_LOOP_index] == L'\t') || (u2p_a_SYMBOL_user_input[u4_t_LOOP_index] == L'\n'))
{
continue; // 跳过空格、制表符、换行符
}
// 确保符号对有效
if ((u2p_a_SYMBOL_user_input[u4_t_LOOP_index + (U4)ONE] != L'\0')&&
(u2p_a_SYMBOL_user_input[u4_t_LOOP_index + (U4)ONE] != L'\n')&&
(u2p_a_SYMBOL_user_input[u4_t_LOOP_index + (U4)ONE] != L' ') &&
(u2p_a_SYMBOL_user_input[u4_t_LOOP_index + (U4)ONE] != L'\t'))
{
fwprintf(vdp_t_FILE_file, L"%lc%lc\n", u2p_a_SYMBOL_user_input[u4_t_LOOP_index], u2p_a_SYMBOL_user_input[u4_t_LOOP_index + ONE]); // 写入符号对到文件
u4_t_LOOP_index++; // 跳过第二个符号
u4_t_SYMBOL_pair_count++;
}
}
fclose(vdp_t_FILE_file);
if (u4_t_SYMBOL_pair_count > ZERO) {
MessageBoxW(NULL, L"符号已成功保存到 Symbol.txt 文件!", L"成功", MB_OK | MB_ICONINFORMATION);
} else {
MessageBoxW(NULL, L"输入中未发现有效符号对。", L"错误", MB_OK | MB_ICONERROR);
}
}
U4 u4_g_SYMBOL_loadFile(const U2 *u2p_g_FILE_folder_path_p) {
U2 u2_t_FILE_file_path_p[(U4)MAX_FOLDER_LENGTH ];
swprintf(u2_t_FILE_file_path_p, (U4)MAX_FOLDER_LENGTH , L"%ls\\Symbol.txt", u2p_g_FILE_folder_path_p);
FILE *vdp_t_FILE_input_file = _wfopen(u2_t_FILE_file_path_p, L"r, ccs=UTF-8"); // 读取 UTF-8 编码内容
if (!vdp_t_FILE_input_file )
{
MessageBoxW(NULL, L"错误:无法打开 Symbol.txt 文件。", L"错误", MB_OK | MB_ICONERROR);
return 0;
}
u4_g_SYMBOL_num_pairs = (U4)ZERO;
U2 u2_t_FILE_line_p[(U4)MAX_LINE_CONTENT];
while (fgetws(u2_t_FILE_line_p, (U4)(U4)LINE_CONTENT_ELEMENTS, vdp_t_FILE_input_file ) && u4_g_SYMBOL_num_pairs < MAX_SYMBOL_PAIRS)
{
U4 u4_t_SYMBOL_line_length = wcslen(u2_t_FILE_line_p);
// 去掉行末的换行符
if (u4_t_SYMBOL_line_length > (U4)ZERO && u2_t_FILE_line_p[u4_t_SYMBOL_line_length - (U4)ONE] == L'\n')
{
u2_t_FILE_line_p[u4_t_SYMBOL_line_length - (U4)ONE] = L'\0';
u4_t_SYMBOL_line_length--;
}
// 跳过空行
if (u4_t_SYMBOL_line_length == (U4)ZERO)
{
continue;
}
// 检查符号对格式
U2 u2_t_SYMBOL_open, u2_t_SYMBOL_close;
if (swscanf(u2_t_FILE_line_p, L"%lc%lc", &u2_t_SYMBOL_open, &u2_t_SYMBOL_close) == (U4)TWO)
{
// 检测数字或字母,直接跳过
if ((u2_t_SYMBOL_open >= DIGIT_START && u2_t_SYMBOL_open <= DIGIT_END) ||
(u2_t_SYMBOL_open >= UPPERCASE_START && u2_t_SYMBOL_open <= UPPERCASE_END) ||
(u2_t_SYMBOL_open >= LOWERCASE_START && u2_t_SYMBOL_open <= LOWERCASE_END) ||
(u2_t_SYMBOL_close >= DIGIT_START && u2_t_SYMBOL_close <= DIGIT_END) ||
(u2_t_SYMBOL_close >= UPPERCASE_START && u2_t_SYMBOL_close <= UPPERCASE_END) ||
(u2_t_SYMBOL_close >= LOWERCASE_START && u2_t_SYMBOL_close <= LOWERCASE_END))
{
continue; // 跳过该行
}
// 如果符号合法,加入符号对数组
st_g_SYMBOL_pairs_p[u4_g_SYMBOL_num_pairs].u2_t_SYMBOL_open = u2_t_SYMBOL_open;
st_g_SYMBOL_pairs_p[u4_g_SYMBOL_num_pairs].u2_t_SYMBOL_close = u2_t_SYMBOL_close;
u4_g_SYMBOL_num_pairs++;
}
}
fclose(vdp_t_FILE_input_file );
U2 u2_t_ERROR_message_p[256];
swprintf(u2_t_ERROR_message_p, sizeof(u2_t_ERROR_message_p) / sizeof(U2), L"从 Symbol.txt 文件中加载了 %d 个有效符号对。", u4_g_SYMBOL_num_pairs);
MessageBoxW(NULL, u2_t_ERROR_message_p, L"成功", MB_OK | MB_ICONINFORMATION);
return u4_g_SYMBOL_num_pairs > ZERO;
}
// 随机生成 Data.txt 文件
void v_g_SYMBOL_generateRandomData(const U2 *u2p_g_FILE_folder_path_p) {
if (u4_g_SYMBOL_num_pairs == (U4)ZERO)
{
MessageBoxW(NULL, L"错误:未加载任何符号对。请先加载 Symbol.txt 文件!", L"错误", MB_OK | MB_ICONERROR);
return;
}
U2 u2_t_FILE_data_path_p[MAX_FOLDER_LENGTH ];
swprintf(u2_t_FILE_data_path_p, MAX_FOLDER_LENGTH , L"%ls\\Data.txt", u2p_g_FILE_folder_path_p);
FILE *vdp_t_FILE_input_file = _wfopen(u2_t_FILE_data_path_p, L"w, ccs=UTF-8");
if (!vdp_t_FILE_input_file )
{
MessageBoxW(NULL, L"错误:无法创建 Data.txt 文件。", L"错误", MB_OK | MB_ICONERROR);
return;
}
srand((U4)time(NULL));
U4 u4_t_DATA_num_lines = rand() % MAX_LINE_COUNT + ONE; // 随机生成 1 到 100 行
for (U4 u4_t_DATA_line_index = (U4)ZERO; u4_t_DATA_line_index < u4_t_DATA_num_lines; u4_t_DATA_line_index++)
{
U4 u4_t_FILE_length = rand() % MAX_LINE_LENGTH + (U4)ONE; // 每行随机长度 1 到 50
for (U4 u4_t_SYMBOL_char_index = (U4)ZERO; u4_t_SYMBOL_char_index < u4_t_FILE_length; u4_t_SYMBOL_char_index++)
{
U4 u4_t_SYMBOL_pair_index = rand() % u4_g_SYMBOL_num_pairs; // 随机选择一个符号对
if (rand() % TWO == (U4)ZERO)
{
fputwc(st_g_SYMBOL_pairs_p[u4_t_SYMBOL_pair_index].u2_t_SYMBOL_open, vdp_t_FILE_input_file ); // 写入开符号
}
else
{
fputwc(st_g_SYMBOL_pairs_p[u4_t_SYMBOL_pair_index].u2_t_SYMBOL_close, vdp_t_FILE_input_file ); // 写入闭符号
}
}
fputwc(L'\n', vdp_t_FILE_input_file ); // 换行符
}
fclose(vdp_t_FILE_input_file );
MessageBoxW(NULL, L"Data.txt 文件已成功生成!", L"成功", MB_OK | MB_ICONINFORMATION);
}
// 检查符号是否匹配
U4 u4_g_SYMBOL_matches(U2 u2_t_SYMBOL_open, U2 u2_t_SYMBOL_close) {
U4 u4_t_SYMBOL_match_flag = (U4)FALSE; // 匹配结果
for (U4 u4_t_SYMBOL_pair_index = (U4)ZERO; u4_t_SYMBOL_pair_index < u4_g_SYMBOL_num_pairs; u4_t_SYMBOL_pair_index++) {
if (st_g_SYMBOL_pairs_p[u4_t_SYMBOL_pair_index].u2_t_SYMBOL_open == u2_t_SYMBOL_open &&
st_g_SYMBOL_pairs_p[u4_t_SYMBOL_pair_index].u2_t_SYMBOL_close == u2_t_SYMBOL_close) {
u4_t_SYMBOL_match_flag = (U4)TRUE; // 匹配成功
break; // 找到结果后退出
}
}
return u4_t_SYMBOL_match_flag;
}
// 检查是否是开符号
U4 u4_g_SYMBOL_isOpening(U2 u2_t_SYMBOL_ch) {
U4 u4_t_SYMBOL_is_open_flag = (U4)FALSE; // 是否是开符号
for (U4 u4_t_SYMBOL_pair_index = (U4)ZERO; u4_t_SYMBOL_pair_index < u4_g_SYMBOL_num_pairs; u4_t_SYMBOL_pair_index++) {
if (st_g_SYMBOL_pairs_p[u4_t_SYMBOL_pair_index].u2_t_SYMBOL_open == u2_t_SYMBOL_ch) {
u4_t_SYMBOL_is_open_flag = (U4)TRUE; // 是开符号
break; // 提前退出
}
}
return u4_t_SYMBOL_is_open_flag;
}
// 检查是否是闭符号
U4 u4_g_SYMBOL_isClosing(U2 u2_t_SYMBOL_ch) {
U4 u4_t_SYMBOL_is_close_flag = (U4)FALSE; // 是否是闭符号
for (U4 u4_t_SYMBOL_pair_index = (U4)ZERO; u4_t_SYMBOL_pair_index < u4_g_SYMBOL_num_pairs; u4_t_SYMBOL_pair_index++) {
if (st_g_SYMBOL_pairs_p[u4_t_SYMBOL_pair_index].u2_t_SYMBOL_close == u2_t_SYMBOL_ch) {
u4_t_SYMBOL_is_close_flag = (U4)TRUE; // 是闭符号
break; // 提前退出
}
}
return u4_t_SYMBOL_is_close_flag;
}
// 验证 Data.txt 文件符号对并保存结果到 Result.txt 文件
void v_g_SYMBOL_validateDataFile(const U2 *u2p_g_FILE_folder_path_p) {
// 定义文件路径变量
U2 u2_t_FILE_data_path_p[(U4)MAX_FOLDER_LENGTH]; // Data.txt 文件路径
U2 u2_t_FILE_result_path_p[(U4)MAX_FOLDER_LENGTH]; // Result.txt 文件路径
swprintf(u2_t_FILE_data_path_p, MAX_FOLDER_LENGTH, L"%ls\\Data.txt", u2p_g_FILE_folder_path_p);
swprintf(u2_t_FILE_result_path_p, MAX_FOLDER_LENGTH, L"%ls\\Result.txt", u2p_g_FILE_folder_path_p);
// 打开 Data.txt 文件
VDP vdp_t_FILE_data_file = _wfopen(u2_t_FILE_data_path_p, L"r, ccs=UTF-8");
if (!vdp_t_FILE_data_file) {
MessageBoxW(NULL, L"错误:无法打开 Data.txt 文件。", L"错误", MB_OK | MB_ICONERROR);
return;
}
// 打开 Result.txt 文件
VDP vdp_t_FILE_result_file = _wfopen(u2_t_FILE_result_path_p, L"w, ccs=UTF-8");
if (!vdp_t_FILE_result_file) {
MessageBoxW(NULL, L"错误:无法创建 Result.txt 文件。", L"错误", MB_OK | MB_ICONERROR);
fclose(vdp_t_FILE_data_file);
return;
}
// 读取 Data.txt 的每一行并处理
U2 u2_t_FILE_line_p[(U4)MAX_LINE_CONTENT]; // 保存单行输入的缓冲区
while (fgetws(u2_t_FILE_line_p, (U4)MAX_LINE_CONTENT, vdp_t_FILE_data_file)) {
U4 u4_t_SYMBOL_line_length = wcslen(u2_t_FILE_line_p);
// 去掉换行符
if (u4_t_SYMBOL_line_length > ZERO && u2_t_FILE_line_p[u4_t_SYMBOL_line_length - ONE] == L'\n') {
u2_t_FILE_line_p[u4_t_SYMBOL_line_length - ONE] = L'\0';
u4_t_SYMBOL_line_length -= ONE;
}
// 空行直接跳过
if (u4_t_SYMBOL_line_length == ZERO) {
continue;
}
// 定义符号校验栈
U2 u2_t_SYMBOL_validation_stack_p[(U4)MAX_LINE_CONTENT]; // 用于符号校验的栈
U4 u4_t_SYMBOL_stack_top_index = (U4)STACK_INIT; // 栈顶初始索引
U4 u4_t_SYMBOL_matched_flag = (U4)TRUE; // 记录当前行是否匹配
// 遍历字符并进行校验
for (U4 u4_t_SYMBOL_char_index = (U4)ZERO; u4_t_SYMBOL_char_index < u4_t_SYMBOL_line_length; u4_t_SYMBOL_char_index++) {
U2 u2_t_SYMBOL_current_char = u2_t_FILE_line_p[u4_t_SYMBOL_char_index];
// 处理开符号
if (u4_g_SYMBOL_isOpening(u2_t_SYMBOL_current_char)) {
u2_t_SYMBOL_validation_stack_p[++u4_t_SYMBOL_stack_top_index] = u2_t_SYMBOL_current_char;
}
// 处理闭符号
else if (u4_g_SYMBOL_isClosing(u2_t_SYMBOL_current_char)) {
if (u4_t_SYMBOL_stack_top_index == (U4)STACK_EMPTY ||
!u4_g_SYMBOL_matches(u2_t_SYMBOL_validation_stack_p[u4_t_SYMBOL_stack_top_index], u2_t_SYMBOL_current_char)) {
u4_t_SYMBOL_matched_flag = (U4)FALSE; // 栈空或不匹配
break;
}
u4_t_SYMBOL_stack_top_index--; // 弹出栈
}
}
// 栈非空说明有未匹配的符号
if (u4_t_SYMBOL_stack_top_index != (U4)STACK_EMPTY) {
u4_t_SYMBOL_matched_flag = (U4)FALSE;
}
// 写入匹配结果
fwprintf(vdp_t_FILE_result_file, L"%s\n", u4_t_SYMBOL_matched_flag ? L"YES" : L"NO");
}
// 关闭文件
fclose(vdp_t_FILE_data_file);
fclose(vdp_t_FILE_result_file);
MessageBoxW(NULL, L"Result.txt 文件已成功生成!", L"成功", MB_OK | MB_ICONINFORMATION);
}
// 文件夹选择对话框
void v_g_FILE_browseFolder(HWND hwnd) {
BROWSEINFOW st_t_UI_folder_dialog_p = {(U4)ZERO}; // 初始化选择文件夹对话框结构体
st_t_UI_folder_dialog_p.lpszTitle = L"Select Folder"; // 设置标题
st_t_UI_folder_dialog_p.ulFlags = BIF_RETURNONLYFSDIRS | BIF_NEWDIALOGSTYLE; // 设置对话框样式
LPITEMIDLIST stp_t_UI_folder_item_p = SHBrowseForFolderW(&st_t_UI_folder_dialog_p); // 显示对话框
if (stp_t_UI_folder_item_p != NULL) {
SHGetPathFromIDListW(stp_t_UI_folder_item_p, u2p_g_FILE_folder_path_p); // 获取选择的文件夹路径
SetDlgItemTextW(hwnd, EDIT_FOLDER_PATH, u2p_g_FILE_folder_path_p); // 设置路径到窗口控件
}
}
// 窗口消息处理过程
LRESULT CALLBACK g_UI_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {
switch (msg) {
case WM_CREATE: {
RECT st_t_UI_window_rect; // 定义窗口矩形结构体
GetClientRect(hwnd, &st_t_UI_window_rect); // 获取客户区矩形
U4 u4_t_UI_spacing = 20; // 定义控件间隔距离
CreateWindowW(L"BUTTON", L"浏览文件夹", WS_VISIBLE | WS_CHILD,
20, 50, 120, 30, hwnd, (HMENU)BTN_BROWSE_FOLDER, NULL, NULL);
CreateWindowW(L"EDIT", L"", WS_VISIBLE | WS_CHILD | WS_BORDER, 150, 50, 430, 30, hwnd, (HMENU)EDIT_FOLDER_PATH, NULL, NULL);
CreateWindowW(L"EDIT", L"", WS_VISIBLE | WS_CHILD | WS_BORDER, 20, 90, 400, 30, hwnd, (HMENU)EDIT_USER_SYMBOLS, NULL, NULL);
CreateWindowW(L"BUTTON", L"保存符号到Symbol.txt", WS_VISIBLE | WS_CHILD, 430, 90, 150, 30, hwnd, (HMENU)BTN_SAVE_SYMBOLS, NULL, NULL);
CreateWindowW(L"BUTTON", L"随机生成Data.txt", WS_VISIBLE | WS_CHILD, 20, 130, 130, 30, hwnd, (HMENU)BTN_GENERATE_DATA, NULL, NULL);
CreateWindowW(L"BUTTON", L"开始处理", WS_VISIBLE | WS_CHILD, 230, 170, 120, 40, hwnd, (HMENU)BTN_PROCESS_DATA, NULL, NULL);
break;
}
case WM_COMMAND:
switch (LOWORD(wParam)) {
case BTN_BROWSE_FOLDER:
v_g_FILE_browseFolder(hwnd); // 文件夹选择对话框
break;
case BTN_SAVE_SYMBOLS:
GetDlgItemTextW(hwnd, EDIT_FOLDER_PATH, u2p_g_FILE_folder_path_p, MAX_FOLDER_LENGTH);
GetDlgItemTextW(hwnd, EDIT_USER_SYMBOLS, u2p_g_SYMBOL_user_symbols_p, MAX_SYMBOL_INPUT);
v_g_SYMBOL_saveFile(u2p_g_FILE_folder_path_p, u2p_g_SYMBOL_user_symbols_p); // 保存符号
break;
case BTN_GENERATE_DATA:
GetDlgItemTextW(hwnd, EDIT_FOLDER_PATH, u2p_g_FILE_folder_path_p, MAX_FOLDER_LENGTH);
if (u4_g_SYMBOL_loadFile(u2p_g_FILE_folder_path_p)) {
v_g_SYMBOL_generateRandomData(u2p_g_FILE_folder_path_p); // 生成随机数据
}
break;
case BTN_PROCESS_DATA:
GetDlgItemTextW(hwnd, EDIT_FOLDER_PATH, u2p_g_FILE_folder_path_p, MAX_FOLDER_LENGTH);
v_g_SYMBOL_validateDataFile(u2p_g_FILE_folder_path_p); // 验证数据文件
break;
}
break;
case WM_DESTROY:
PostQuitMessage(ZERO); // 退出消息
break;
default:
return DefWindowProcW(hwnd, msg, wParam, lParam); // 默认处理
}
return ZERO; // 默认返回值
}
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow) {
const U2 u2_g_UI_class_name_p[] = L"符号匹配"; // 定义窗口类名
WNDCLASSW st_t_UI_window_class = {(U4)ZERO}; // 定义窗口类结构体
st_t_UI_window_class.lpfnWndProc = g_UI_WindowProc; // 指定消息处理过程
st_t_UI_window_class.hInstance = hInstance; // 指定实例句柄
st_t_UI_window_class.lpszClassName = u2_g_UI_class_name_p; // 指定窗口类名
RegisterClassW(&st_t_UI_window_class); // 注册窗口类
HWND vdp_t_UI_main_window = CreateWindowW(u2_g_UI_class_name_p, L"符号匹配", WS_OVERLAPPEDWINDOW | WS_VISIBLE,
CW_USEDEFAULT, CW_USEDEFAULT, 610, 280, NULL, NULL, hInstance, NULL); // 创建窗口
MSG st_t_UI_message; // 定义消息结构体
while (GetMessageW(&st_t_UI_message, NULL, ZERO, ZERO)) {
TranslateMessage(&st_t_UI_message); // 翻译消息
DispatchMessageW(&st_t_UI_message); // 分派消息
}
return ZERO; // 返回退出状态码
}
注释改成全英文的,每个函数前面加一段介绍,形如:
/*===================================================================================================================================*/
/* Function Name: u4_s_main_processing_task */
/* --------------------------------------------------------------------------------------------------------------------------------- */
/* Description: Processes input file: searches for prefix, extracts/modifies addresses, writes results */
/* Arguments: U1* u1p_a_search_string : Prefix string to search */
/* Return: U4 : SUCCESS if found and processed, WRONG otherwise */
/*===================================================================================================================================*/
每个if后面都要接else,没有操作就:
else
{
/*do nothing*/
}
最新发布