#pragma once #include "afxdialogex.h" // CDlgAddWords 对话框 #include #include #include #include namespace sdk_util { typedef struct _lang_id { int id; int cp; std::string utf8; bool operator==(int i) { return id == i; } bool operator<(struct _lang_id& r) { return id < r.id; } }LANGID; typedef struct _lang_id_w { int id; std::wstring unic; bool operator==(int i) { return id == i; } bool operator==(const wchar_t* text) { return unic == text; } bool operator<(struct _lang_id& r) { return id < r.id; } }LANGIDW; INTER_MODULE_CALLBACK(got_str); INTER_MODULE_CALLBACK(got_wstr); uint32_t make_string_id(const wchar_t* str, bool(*is_repeat)(uint32_t, void*), void* param); void trim_left(std::wstring& str); void trim_right(std::wstring& str); unsigned pick_number(const wchar_t* str, const wchar_t** end, int type); void convert_unicode(std::wstring& str); LANGID* lang_info_from_cp(int cp); LANGID* lang_info_from_ID(int id); LANGID* lang_info_from_name(const char* utf8); int save_2_lang_pak(HWND owner, std::vector& items, int cp = 936, std::string* raw_data = NULL, bool to_file = true); bool parse_pak_digest(uint8_t* data, int* id); bool parse_pak(uint8_t* data, std::vector& items); bool load_lang_pak(const wchar_t* file, std::vector& items, int* id = NULL); std::wstring get_wnd_text(HWND wnd); std::wstring get_wnd_text(HWND dlg, UINT id); enum { BOM_ANSI = 0, BOM_UTF8, BOM_UNICODE, }; std::wstring load_file(const wchar_t* file, int* bom = NULL); int save_file(const wchar_t* file, std::wstring& cont, int bom = BOM_UNICODE); } class CDlgAddWords : public CDialogEx { DECLARE_DYNAMIC(CDlgAddWords) public: CDlgAddWords(CWnd* pParent = nullptr); // 标准构造函数 virtual ~CDlgAddWords(); // 对话框数据 #ifdef AFX_DESIGN_TIME enum { IDD = IDD_BATCH_ADD_LANG }; #endif protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 virtual BOOL OnInitDialog(); void open_pak(int lan_id); void set_lang_pak_file(const wchar_t* file, int lan_id = 0); void set_code_file(const wchar_t* file, bool tip = true); bool add_words(const wchar_t* pak_file, std::vector& ids, std::string& cont, int lan_id, int src_col, bool init_id = false); bool update_head_file(const wchar_t* file, const std::string& cont); DECLARE_MESSAGE_MAP() std::vector lan_hz_; std::vector lan_hzt_; std::vector lan_eng_; public: afx_msg void OnBnClickedButtonBrowseHz(); afx_msg void OnBnClickedButtonBrowseHzt(); afx_msg void OnBnClickedButtonBrowseEng(); afx_msg void OnBnClickedButtonBrowseCode(); afx_msg void OnBnClickedButtonAdd(); afx_msg void OnBnClickedButtonDel(); afx_msg void OnBnClickedButtonClear(); afx_msg void OnBnClickedButtonUpdate(); CListCtrl words_; afx_msg void OnDropFiles(HDROP hDropInfo); afx_msg void OnNMDblclkList1(NMHDR* pNMHDR, LRESULT* pResult); };