Спасибо за идею. Все заработало. Переделал так:
defines.h
| Код | //Здесь определяются структуры, используемые в программе #pragma once
#define WM_FROM_TRAY 0x1000 #define MAX_NAME 260 #define MAX_ABONENT_NAME 64
typedef struct sDATE{ UINT iDay; UINT iMon; UINT iYear; } _sDATE;
typedef struct ABONENT{ DWORD dwIndex; DWORD iGroupId; DWORD iSubGroupId; char cFirstName[MAX_ABONENT_NAME]; char cSecondName[MAX_ABONENT_NAME]; char cSurName[MAX_ABONENT_NAME]; char cNomber[12]; char cEMail[MAX_ABONENT_NAME]; sDATE dataBirsday; BOOL bSendBirsday; char cComment[MAX_NAME]; }_ABONENT;
typedef struct GROUPS{ DWORD dwIndex; long dwSubGroup; char cName[MAX_NAME]; TVINSERTSTRUCT tvInsert; }_GROUPS;
|
SendSMSDlg.h
| Код | // SendSMSDlg.h : header file // Хедер основного диалогового окна
#pragma once #include <assert.h> #include "resource.h" #include "SerialGate.h" #include "MakeMess.h" #include "afxcmn.h" #include "bcmenu.h" #include "systemtray.h" #include "newgroup.h" #include "database.h" #include "errorcode.h" #include "abonentdlg.h" #include <vector> #include "defines.h" //Фаил определения
// CSendSMSDlg dialog class CMakeMess; class SerialGate; class CSystemTray; //class CNewGroup; class CSendSMSDlg : public CDialog { friend class CDataBase; // Construction public: CSendSMSDlg(CWnd* pParent = NULL); // standard constructor virtual ~CSendSMSDlg(); // Dialog Data enum { IDD = IDD_SENDSMS_DIALOG };
protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
// Implementation protected: HICON m_hIcon;
// Generated message map functions virtual BOOL OnInitDialog(); afx_msg void OnSysCommand(UINT nID, LPARAM lParam); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); DECLARE_MESSAGE_MAP() public: afx_msg void OnBnClickedSend(); void Message(UINT message); protected: inline GROUPS* RecreateGroup(DWORD dwSize){if(dwSize==0)return 0; if(dwSizeGroupBase != 0) delete [] group; group = new GROUPS[dwSize]; dwSizeGroupBase = dwSize;return group;}; inline ABONENT* RecreateAbonent(DWORD dwSize){if(dwSize==0)return 0; if(dwSizeNomberBase != 0) delete [] abonent; abonent = new ABONENT[dwSize]; dwSizeNomberBase = dwSize;return abonent;}; inline DWORD GetGroups(GROUPS* gr){gr = group; return dwSizeGroupBase;}; inline DWORD GetAbonents(ABONENT* ab){ab = abonent; return dwSizeNomberBase;} private: CSystemTray* m_SysTray; BOOL TransmitData(HANDLE hCom, char *cData, DWORD DataSize); SerialGate* pGate; CMakeMess* pMake; bool TextWithoutNull(char* cText, char* cOut, DWORD iLen, DWORD iOutSize); void Error(DWORD dwError); BOOL DataTransmit(char* cData, char* cNomber); CString m_strPhoneNomber; CString m_strTextMessage; //Shift string to one symbol to left. First symbol will be deleted. void ShiftNomber(char* cNomber); CListCtrl m_conList; CTreeCtrl m_conTree; CImageList m_conImageForTree; CImageList m_conImageForList; void InitObjects(); void InitTree(); void MakeList(NM_TREEVIEW* pNMTreeView = NULL); GROUPS* group; ABONENT* abonent; HTREEITEM* hTree; BCMenu bcMenu; afx_msg void OnNMSetfocusTree(NMHDR *pNMHDR, LRESULT *pResult); afx_msg void OnNMKillfocusTree(NMHDR *pNMHDR, LRESULT *pResult); afx_msg void OnNMSetfocusElement(NMHDR *pNMHDR, LRESULT *pResult); afx_msg void OnNMKillfocusElement(NMHDR *pNMHDR, LRESULT *pResult); DWORD dwSizeNomberBase; DWORD dwSizeGroupBase; afx_msg void OnCreateGroup(); afx_msg void OnRemoveGroup(); void DeleteAbonent(DWORD dwIndex); afx_msg void OnNMClickTree(NMHDR *pNMHDR, LRESULT *pResult); afx_msg void OnNMDblclkTree(NMHDR *pNMHDR, LRESULT *pResult); afx_msg void OnTvnSelchangedTree(NMHDR *pNMHDR, LRESULT *pResult); CDataBase* pDataBase; bool bChange, bQuestion; void AddObjectToTree(DWORD dwIndex); void AddObjectToList(DWORD dwIndex); void DeleteObjectFromTree(DWORD dwIndex); void DeleteObjectFromList(DWORD dwIndex); void NullGarbage(); afx_msg void OnDestroy(); afx_msg void OnClose(); afx_msg void OnExit(); afx_msg void OnTrayExit(); afx_msg void OnBaseSave(); afx_msg void OnGroupRename(); virtual BOOL PreTranslateMessage(MSG* pMsg); afx_msg void OnTvnEndlabeleditTree(NMHDR *pNMHDR, LRESULT *pResult); afx_msg void OnNMDblclkElement(NMHDR *pNMHDR, LRESULT *pResult); typedef struct OBJLIST{ UINT idElementType; DWORD iIndexList; DWORD iIndexData; }_OBJLIST; void AddObjectToObjectList(DWORD Type, DWORD iIndexData); std::vector<OBJLIST> object; public: afx_msg void OnAddAbonent(); };
|
AbonentDlg.h
| Код | //Хедер катрочки абонента #pragma once #include "defines.h" #include "resource.h"
// CAbonentDlg dialog
class CSendSMSDlg; class CAbonentDlg : public CDialog { DECLARE_DYNAMIC(CAbonentDlg)
public: CAbonentDlg(CWnd* pParent = NULL); // standard constructor virtual ~CAbonentDlg(); enum abonent_mode{modeCreate, modeEdit};
// Dialog Data enum { IDD = IDD_ABONENT };
protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
DECLARE_MESSAGE_MAP() public: virtual INT_PTR DoModal(DWORD State, ABONENT* abonent, DWORD dwCurGroup); private: ABONENT ab; bool MakeDataForAddition(); void MakeDataForEdit(); public: void GetData(ABONENT* abonent); void SetData(ABONENT* abonent); private: COleDateTime pEditDate; BOOL bCongratulation; CComboBox conGroup; CImageList conImage; CSendSMSDlg* pParent; };
|
Но все же вопрос остался. Почему такое было? И еще, я уже давно не программил, только недавно сел и стал впоминать. Может кто-нить сможет навести позитивную критику по коду, который я вверху привел? |