Advertisement
Guest User

Untitled

a guest
Dec 9th, 2019
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.68 KB | None | 0 0
  1. // Okno.cpp : implementation file
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "lab4.h"
  6. #include "Okno.h"
  7.  
  8. #ifdef _DEBUG
  9. #define new DEBUG_NEW
  10. #endif
  11.  
  12. static UINT NEAR WM_LAB4 = RegisterWindowMessage("WM_SYSTOPER_LAB4");
  13.  
  14. // CAboutDlg dialog used for App About
  15.  
  16. class CAboutDlg : public CDialog
  17. {
  18. public:
  19. CAboutDlg();
  20.  
  21. // Dialog Data
  22. enum { IDD = IDD_ABOUTBOX };
  23.  
  24. protected:
  25. virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
  26.  
  27. // Implementation
  28. protected:
  29. DECLARE_MESSAGE_MAP()
  30. };
  31.  
  32. CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
  33. {
  34. }
  35.  
  36. void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  37. {
  38. CDialog::DoDataExchange(pDX);
  39. }
  40.  
  41. BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
  42. END_MESSAGE_MAP()
  43.  
  44.  
  45. // COkno dialog
  46.  
  47. HANDLE skrzynkaPoczt;
  48.  
  49. COkno::COkno(CWnd* pParent /*=NULL*/)
  50. : CDialog(COkno::IDD, pParent)
  51. {
  52. m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  53. }
  54.  
  55. void COkno::DoDataExchange(CDataExchange* pDX)
  56. {
  57. CDialog::DoDataExchange(pDX);
  58. DDX_Control(pDX, IDC_EKRAN, m_ekran);
  59. DDX_Control(pDX, IDC_LISTA, m_lista);
  60. DDX_Control(pDX, IDC_ODSWIEZ, m_odswiez);
  61. }
  62.  
  63. BEGIN_MESSAGE_MAP(COkno, CDialog)
  64. ON_WM_SYSCOMMAND()
  65. ON_WM_PAINT()
  66. ON_WM_QUERYDRAGICON()
  67. //}}AFX_MSG_MAP
  68. ON_WM_TIMER()
  69. ON_REGISTERED_MESSAGE(WM_LAB4,OnWiadomosc)
  70. ON_BN_CLICKED(IDC_ODSWIEZ, OnBnClickedOdswiez)
  71. ON_BN_CLICKED(IDC_WYSLIJ, OnBnClickedWyslij)
  72. ON_BN_CLICKED(IDC_ZALICZAMY, OnBnClickedZaliczamy)
  73. ON_WM_DESTROY()
  74. ON_BN_CLICKED(IDC_KONIEC, OnBnClickedKoniec)
  75. END_MESSAGE_MAP()
  76.  
  77.  
  78. // COkno message handlers
  79.  
  80. BOOL COkno::OnInitDialog()
  81. {
  82. CDialog::OnInitDialog();
  83.  
  84. // Add "About..." menu item to system menu.
  85.  
  86. // IDM_ABOUTBOX must be in the system command range.
  87. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
  88. ASSERT(IDM_ABOUTBOX < 0xF000);
  89.  
  90. CMenu* pSysMenu = GetSystemMenu(FALSE);
  91. if (pSysMenu != NULL)
  92. {
  93. CString strAboutMenu;
  94. strAboutMenu.LoadString(IDS_ABOUTBOX);
  95. if (!strAboutMenu.IsEmpty())
  96. {
  97. pSysMenu->AppendMenu(MF_SEPARATOR);
  98. pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
  99. }
  100. }
  101.  
  102. // Set the icon for this dialog. The framework does this automatically
  103. // when the application's main window is not a dialog
  104. SetIcon(m_hIcon, TRUE); // Set big icon
  105. SetIcon(m_hIcon, FALSE); // Set small icon
  106.  
  107. // Add extra initialization here
  108.  
  109. srand((unsigned)time(0));
  110. SetTimer(1,500,0);
  111.  
  112. //TODO: Utworzenie skrzynki pocztowej i jej rejestracja potokiem nazwanym
  113. skrzynkaPoczt = CreateMailslot("\\\\.\\mailslot\\skrzynka",0,MAILSLOT_WAIT_FOREVER,NULL);
  114. DWORD odp_dl;
  115. char* wys = (char*)malloc(1024);
  116. char* odp = (char*)malloc(1024);
  117.  
  118. CallNamedPipe("\\\\.\\pipe\\sysonp", wys, strlen(wys)+1, odp, 1024, &odp_dl, 4000);
  119. free(wys);
  120. free(odp);
  121. return TRUE; // return TRUE unless you set the focus to a control
  122. }
  123.  
  124. void COkno::OnSysCommand(UINT nID, LPARAM lParam)
  125. {
  126. if ((nID & 0xFFF0) == IDM_ABOUTBOX)
  127. {
  128. CAboutDlg dlgAbout;
  129. dlgAbout.DoModal();
  130. }
  131. else
  132. {
  133. CDialog::OnSysCommand(nID, lParam);
  134. }
  135. }
  136.  
  137. // If you add a minimize button to your dialog, you will need the code below
  138. // to draw the icon. For MFC applications using the document/view model,
  139. // this is automatically done for you by the framework.
  140.  
  141. void COkno::OnPaint()
  142. {
  143. if (IsIconic())
  144. {
  145. CPaintDC dc(this); // device context for painting
  146.  
  147. SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
  148.  
  149. // Center icon in client rectangle
  150. int cxIcon = GetSystemMetrics(SM_CXICON);
  151. int cyIcon = GetSystemMetrics(SM_CYICON);
  152. CRect rect;
  153. GetClientRect(&rect);
  154. int x = (rect.Width() - cxIcon + 1) / 2;
  155. int y = (rect.Height() - cyIcon + 1) / 2;
  156.  
  157. // Draw the icon
  158. dc.DrawIcon(x, y, m_hIcon);
  159. }
  160. else
  161. {
  162. CDialog::OnPaint();
  163. }
  164. }
  165.  
  166. // The system calls this function to obtain the cursor to display while the user drags
  167. // the minimized window.
  168. HCURSOR COkno::OnQueryDragIcon()
  169. {
  170. return static_cast<HCURSOR>(m_hIcon);
  171. }
  172.  
  173. void COkno::OnTimer(UINT nIDEvent)
  174. {
  175. //TODO: Sprawdzenie czy jest nowa wiadomosc w skrzynce
  176. DWORD pLiczbaWiad;
  177. GetMailslotInfo(skrzynkaPoczt,NULL,NULL,&pLiczbaWiad,NULL);
  178. if(pLiczbaWiad>0)
  179. {
  180. CFile file(skrzynkaPoczt);
  181. char* blok = (char*)malloc(1024);
  182. file.Read(blok,1024);
  183. CString napis;
  184. m_ekran.GetWindowText(napis);
  185. m_ekran.SetWindowText(_T("\r\n\r\n") + napis + blok);
  186. free(blok);
  187.  
  188. }
  189. CDialog::OnTimer(nIDEvent);
  190. }
  191.  
  192. void COkno::OnBnClickedOdswiez()
  193. {
  194. char buffer[1024]="";
  195. char* wys = (char*)malloc(1024);
  196. char* odp = (char*)malloc(1024);
  197. DWORD odp_dl;
  198. int l;
  199. CallNamedPipe("\\\\.\\pipe\\sysopnp",wys,strlen(wys)+1,odp,1024,&odp_dl,4000);
  200. char *p = odp;
  201. while(*p)
  202. {
  203. if(*p=='\n')
  204. *p='\0';
  205. p++;
  206. }
  207. p=odp;
  208. m_lista.ResetContent();
  209. while(l=strlen(p))
  210. {
  211. m_lista.AddString(p);
  212. p+=l+1;
  213.  
  214. }
  215. free(wys);
  216. free(odp);
  217. /*TODO: Pobranie listy zarejestrowanych skrzynek*/
  218.  
  219. }
  220.  
  221. void COkno::OnBnClickedWyslij()
  222. {
  223. char buffer[128];
  224. m_lista.GetWindowText(buffer,128);
  225. CString skrz;
  226. m_lista.GetWindowText(skrz);
  227. CFile plik(skrz, CFile::modeWrite | CFile::shareDenyNone);
  228. char* wys = (char*)malloc(1024);
  229. strcpy(wys,"asdf: wiadomosc");
  230. plik.Write(wys,strlen(wys+1));
  231. CString pom;
  232. m_ekran.GetWindowText(pom);
  233. plik.Write(pom, strlen(pom)+1);
  234. plik.Close();
  235. free(wys);
  236. //TODO: Wyslanie wiadomosci do wybranej skrzynki
  237.  
  238. }
  239.  
  240. afx_msg LRESULT COkno::OnWiadomosc(WPARAM n, LPARAM m)
  241. {
  242. //TODO: Odbior przeslanego kodu
  243.  
  244. return 0;
  245. }
  246.  
  247. void COkno::OnBnClickedZaliczamy()
  248. {
  249. /*TODO: Utworzenie zdarzenia "koniec ćwiczenia" i ustawienie jego stanu na dostepny*/
  250.  
  251. }
  252.  
  253. void COkno::OnDestroy()
  254. {
  255. KillTimer(1);
  256. CDialog::OnDestroy();
  257. }
  258.  
  259. void COkno::OnBnClickedKoniec()
  260. {
  261. EndDialog(1);
  262. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement