Опять столкнулся с множественным объявлением hiders. Меняю содержание темы, в связи с новыми данными, ресурсы не причем... Что я не так делаю? Вот мой код main.h
| Код | #ifndef __MAIN__H__ #define __MAIN__H__
#include "nsRCritChMng.h"
INT_PTR WINAPI MnDlgProc(HWND hDlg, UINT msg, WPARAM wPar, LPARAM lPar);
// // Initialization of Dialog void DialogInitialization(HWND hDlg); #endif |
main.cpp
| Код | #include <windows.h> #include <commctrl.h> #include "resource.h" #include "main.h"
#pragma comment (lib, "comctl32.lib")
INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, INT nCmdShow) { INITCOMMONCONTROLSEX icce; InitCommonControlsEx(&icc); DialogBox(hInst, MAKEINTRESOURCE(IDD_MAIN), NULL, MnDlgProc); return 0; }
INT_PTR WINAPI MnDlgProc(HWND hDlg, UINT msg, WPARAM wPar, LPARAM lPar) { switch (msg) { case WM_INITDIALOG: DialogInitialization(hDlg); break; case WM_CLOSE: EndDialog(hDlg, IDOK); return TRUE; } return FALSE; }
void DialogInitialization(HWND hDlg) { // Visual components initialization nsRCritChMng::InitRB(hDlg); } |
nsRCritChMng.h
| Код | #ifndef __NSRCRITCHMNG__H__ #define __NSRCRITCHMNG__H__ #include <windows.h> #include "resource.h" #include "commctrl.h"
namespace nsRCritChMng { WNDPROC pOldEditProc; void InitRB(HWND hDlg); INT_PTR WINAPI EdtDlgProc(HWND hEdt, UINT msg, WPARAM wPar, LPARAM lPar); }; #endif |
nsRCritChMng.cpp
| Код | #include "nsRCritChMng.h"
// // Initialization of RadioButtons void nsRCritChMng::InitRB(HWND hDlg) { SendMessage(GetDlgItem(hDlg, IDC_UD_OPTIND), UDM_SETRANGE32, (WPARAM)0, (LPARAM)9); SendMessage(GetDlgItem(hDlg, IDC_UD_OPTIND), UDM_SETPOS32, 0, (LPARAM)5); SetDlgItemText(hDlg, IDC_E_OPTIMIND, __TEXT("0.5")); pOldEditProc = (WNDPROC)(LONG_PTR)SetWindowLongPtr(GetDlgItem(hDlg, IDC_E_OPTIMIND), DWLP_DLGPROC, (LONG)(LONG_PTR)EdtDlgProc); }
INT_PTR WINAPI nsRCritChMng::EdtDlgProc(HWND hEdt, UINT msg, WPARAM wPar, LPARAM lPar) { return CallWindowProc(pOldEditProc, hEdt, msg, wPar, lPar); } |
Помоги пожайлуста, объясните что не так...
Сообщение компилера:
| Код | error LNK2005: "long (__stdcall* nsRCritChMng::pOldEditProc)(struct HWND__ *,unsigned int,unsigned int,long)" (?pOldEditProc@nsRCritChMng@@3P6GJPAUHWND__@@IIJ@ZA) already defined in main.obj nsRCritChMng.obj
fatal error LNK1169: one or more multiply defined symbols found |
|