⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 笔记001.txt

📁 模式识别的作业代码
💻 TXT
字号:
//编程笔记   
//开    发:周连锋
//开发日期:2005.03.25
//代码参考:何斌  《Visual C++ 数字图像处理》 人民邮电出版社



[050325]
1.    有些MFC的系统类的成员函数不需要对应的ID消息处理,它们响应系统
   内部的消息。例如Doc类的OnOpenDocument()函数。


2.    怎么样在Dialog窗体内部得到Document的指针?
       
3. 位图显示
	//GDI位图显示
    CBitmap bm;
	bm.LoadBitmap(IDB_BITMAP_BACKRND01);

	CDC dcMem;
	dcMem.CreateCompatibleDC(pDC);

    dcMem.SelectObject(&bm);
	
	BITMAP img;
	bm.GetBitmap(&img);
	pDC->BitBlt(0,0,img.bmWidth,img.bmHeight,&dcMem,0,0,SRCCOPY);


[050326]
1.    程序加载流程:

1) CApp
CImageSysZLF01App::CImageSysZLF01App() line 41
$E216() line 48 + 34 bytes
$E219() + 29 bytes
_initterm(void (void)* * 0x0041d208 $S220, void (void)* * 0x0041d30c ___xc_z) line 525
WinMainCRTStartup() line 274 + 15 bytes
KERNEL32! 7c816d4f()

2) CMainFrame
CMainFrame::CMainFrame() line 42
CImageSysZLF01App::InitInstance() line 87 + 50 bytes
AfxWinMain(HINSTANCE__ * 0x00400000, HINSTANCE__ * 0x00000000, char * 0x00141f2a, int 1) line 39 + 11 bytes
WinMain(HINSTANCE__ * 0x00400000, HINSTANCE__ * 0x00000000, char * 0x00141f2a, int 1) line 30
WinMainCRTStartup() line 330 + 54 bytes
KERNEL32! 7c816d4f()

3) CDoc: New/Open
CImageSysZLF01Doc::CImageSysZLF01Doc() line 33
CImageSysZLF01Doc::CreateObject() line 18 + 83 bytes
CRuntimeClass::CreateObject() line 140 + 6 bytes
CDocTemplate::CreateNewDocument() line 230 + 11 bytes
CMultiDocTemplate::OpenDocumentFile(const char * 0x00000000, int 1) line 117 + 11 bytes
CDocManager::OnFileNew() line 829
CWinApp::OnFileNew() line 29
_AfxDispatchCmdMsg(CCmdTarget * 0x0041d9e8 class CImageSysZLF01App theApp, unsigned int 57600, int 0, void (void)* 0x00407466 CWinApp::OnFileNew, void * 0x00000000, unsigned int 12, AFX_CMDHANDLERINFO * 0x00000000) line 88
CCmdTarget::OnCmdMsg(unsigned int 57600, int 0, void * 0x00000000, AFX_CMDHANDLERINFO * 0x00000000) line 302 + 39 bytes
CFrameWnd::OnCmdMsg(unsigned int 57600, int 0, void * 0x00000000, AFX_CMDHANDLERINFO * 0x00000000) line 899 + 33 bytes
CMDIFrameWnd::OnCmdMsg(unsigned int 57600, int 0, void * 0x00000000, AFX_CMDHANDLERINFO * 0x00000000) line 89
CWnd::OnCommand(unsigned int 57600, long 0) line 2088
CFrameWnd::OnCommand(unsigned int 57600, long 0) line 317
CMDIFrameWnd::OnCommand(unsigned int 57600, long 0) line 58 + 16 bytes
CWnd::OnWndMsg(unsigned int 273, unsigned int 57600, long 0, long * 0x0012fcc4) line 1597 + 28 bytes
CWnd::WindowProc(unsigned int 273, unsigned int 57600, long 0) line 1585 + 30 bytes
AfxCallWndProc(CWnd * 0x004315c0 {CMainFrame hWnd=0x001707ba}, HWND__ * 0x001707ba, unsigned int 273, unsigned int 57600, long 0) line 215 + 26 bytes
AfxWndProc(HWND__ * 0x001707ba, unsigned int 273, unsigned int 57600, long 0) line 368
AfxWndProcBase(HWND__ * 0x001707ba, unsigned int 273, unsigned int 57600, long 0) line 220 + 21 bytes
USER32! 77d18709()
USER32! 77d187eb()
USER32! 77d189a5()
USER32! 77d1bccc()
CWinThread::PumpMessage() line 846
CWinThread::Run() line 480 + 11 bytes
CWinApp::Run() line 400
AfxWinMain(HINSTANCE__ * 0x00400000, HINSTANCE__ * 0x00000000, char * 0x00141f2a, int 1) line 49 + 11 bytes
WinMain(HINSTANCE__ * 0x00400000, HINSTANCE__ * 0x00000000, char * 0x00141f2a, int 1) line 30
WinMainCRTStartup() line 330 + 54 bytes
KERNEL32! 7c816d4f()

4) CChildFrame
CChildFrame::CChildFrame() line 33
CChildFrame::CreateObject() line 18 + 86 bytes
CRuntimeClass::CreateObject() line 140 + 6 bytes
CDocTemplate::CreateNewFrame(CDocument * 0x00432460 {CImageSysZLF01Doc}, CFrameWnd * 0x00000000 {CFrameWnd hWnd=???}) line 264 + 11 bytes
CMultiDocTemplate::OpenDocumentFile(const char * 0x00000000, int 1) line 128 + 17 bytes
CDocManager::OnFileNew() line 829
CWinApp::OnFileNew() line 29
_AfxDispatchCmdMsg(CCmdTarget * 0x0041d9e8 class CImageSysZLF01App theApp, unsigned int 57600, int 0, void (void)* 0x00407466 CWinApp::OnFileNew, void * 0x00000000, unsigned int 12, AFX_CMDHANDLERINFO * 0x00000000) line 88
CCmdTarget::OnCmdMsg(unsigned int 57600, int 0, void * 0x00000000, AFX_CMDHANDLERINFO * 0x00000000) line 302 + 39 bytes
CFrameWnd::OnCmdMsg(unsigned int 57600, int 0, void * 0x00000000, AFX_CMDHANDLERINFO * 0x00000000) line 899 + 33 bytes
CMDIFrameWnd::OnCmdMsg(unsigned int 57600, int 0, void * 0x00000000, AFX_CMDHANDLERINFO * 0x00000000) line 89
CWnd::OnCommand(unsigned int 57600, long 0) line 2088
CFrameWnd::OnCommand(unsigned int 57600, long 0) line 317
CMDIFrameWnd::OnCommand(unsigned int 57600, long 0) line 58 + 16 bytes
CWnd::OnWndMsg(unsigned int 273, unsigned int 57600, long 0, long * 0x0012fcc4) line 1597 + 28 bytes
CWnd::WindowProc(unsigned int 273, unsigned int 57600, long 0) line 1585 + 30 bytes
AfxCallWndProc(CWnd * 0x004315c0 {CMainFrame hWnd=0x001707ba}, HWND__ * 0x001707ba, unsigned int 273, unsigned int 57600, long 0) line 215 + 26 bytes
AfxWndProc(HWND__ * 0x001707ba, unsigned int 273, unsigned int 57600, long 0) line 368
AfxWndProcBase(HWND__ * 0x001707ba, unsigned int 273, unsigned int 57600, long 0) line 220 + 21 bytes
USER32! 77d18709()
USER32! 77d187eb()
USER32! 77d189a5()
USER32! 77d1bccc()
CWinThread::PumpMessage() line 846
CWinThread::Run() line 480 + 11 bytes
CWinApp::Run() line 400
AfxWinMain(HINSTANCE__ * 0x00400000, HINSTANCE__ * 0x00000000, char * 0x00141f2a, int 1) line 49 + 11 bytes
WinMain(HINSTANCE__ * 0x00400000, HINSTANCE__ * 0x00000000, char * 0x00141f2a, int 1) line 30
WinMainCRTStartup() line 330 + 54 bytes
KERNEL32! 7c816d4f()

5)CView
CImageSysZLF01View::CImageSysZLF01View() line 48
CImageSysZLF01View::CreateObject() line 19 + 86 bytes
CRuntimeClass::CreateObject() line 140 + 6 bytes
CFrameWnd::CreateView(CCreateContext * 0x0012f8f0, unsigned int 59648) line 583 + 10 bytes
CFrameWnd::OnCreateClient(tagCREATESTRUCTA * 0x0012efc0, CCreateContext * 0x0012f8f0) line 615 + 17 bytes
CFrameWnd::OnCreateHelper(tagCREATESTRUCTA * 0x0012efc0, CCreateContext * 0x0012f8f0) line 633 + 22 bytes
CMDIChildWnd::OnCreate(tagCREATESTRUCTA * 0x0012efc0) line 1050
CWnd::OnWndMsg(unsigned int 1, unsigned int 0, long 1241024, long * 0x0012ed9c) line 1811 + 13 bytes
CWnd::WindowProc(unsigned int 1, unsigned int 0, long 1241024) line 1585 + 30 bytes
AfxCallWndProc(CWnd * 0x004322b0 {CChildFrame hWnd=0x000a082c}, HWND__ * 0x000a082c, unsigned int 1, unsigned int 0, long 1241024) line 215 + 26 bytes
AfxWndProc(HWND__ * 0x000a082c, unsigned int 1, unsigned int 0, long 1241024) line 368
AfxWndProcBase(HWND__ * 0x000a082c, unsigned int 1, unsigned int 0, long 1241024) line 220 + 21 bytes
USER32! 77d18709()
USER32! 77d1d297()
USER32! 77d1b368()
USER32! 77d1e840()
NTDLL! 7c92eae3()
USER32! 77d218a4()
USER32! 77d2193e()
USER32! 77d34126()
USER32! 77d4f6cb()
USER32! 77d18709()
USER32! 77d187eb()
USER32! 77d1b368()
USER32! 77d585de()
NTDLL! 7c92eae3()
USER32! 77d1e2f7()
CMDIChildWnd::Create(const char * 0x00143958, const char * 0x5f4ccb14, unsigned long 1087340544, const tagRECT & {top=-2147483648 bottom=0 left=-2147483648 right=0}, CMDIFrameWnd * 0x004315c0 {CMainFrame hWnd=0x001707ba}, CCreateContext * 0x0012f8f0) line 557 + 27 bytes
CMDIChildWnd::LoadFrame(unsigned int 129, unsigned long 1087340544, CWnd * 0x00000000 {CWnd hWnd=???}, CCreateContext * 0x0012f8f0) line 629 + 57 bytes
CDocTemplate::CreateNewFrame(CDocument * 0x00432460 {CImageSysZLF01Doc}, CFrameWnd * 0x00000000 {CFrameWnd hWnd=???}) line 279 + 32 bytes
CMultiDocTemplate::OpenDocumentFile(const char * 0x00000000, int 1) line 128 + 17 bytes
CDocManager::OnFileNew() line 829
CWinApp::OnFileNew() line 29
_AfxDispatchCmdMsg(CCmdTarget * 0x0041d9e8 class CImageSysZLF01App theApp, unsigned int 57600, int 0, void (void)* 0x00407466 CWinApp::OnFileNew, void * 0x00000000, unsigned int 12, AFX_CMDHANDLERINFO * 0x00000000) line 88
CCmdTarget::OnCmdMsg(unsigned int 57600, int 0, void * 0x00000000, AFX_CMDHANDLERINFO * 0x00000000) line 302 + 39 bytes
CFrameWnd::OnCmdMsg(unsigned int 57600, int 0, void * 0x00000000, AFX_CMDHANDLERINFO * 0x00000000) line 899 + 33 bytes
CMDIFrameWnd::OnCmdMsg(unsigned int 57600, int 0, void * 0x00000000, AFX_CMDHANDLERINFO * 0x00000000) line 89
CWnd::OnCommand(unsigned int 57600, long 0) line 2088
CFrameWnd::OnCommand(unsigned int 57600, long 0) line 317
CMDIFrameWnd::OnCommand(unsigned int 57600, long 0) line 58 + 16 bytes
CWnd::OnWndMsg(unsigned int 273, unsigned int 57600, long 0, long * 0x0012fcc4) line 1597 + 28 bytes
CWnd::WindowProc(unsigned int 273, unsigned int 57600, long 0) line 1585 + 30 bytes
AfxCallWndProc(CWnd * 0x004315c0 {CMainFrame hWnd=0x001707ba}, HWND__ * 0x001707ba, unsigned int 273, unsigned int 57600, long 0) line 215 + 26 bytes
AfxWndProc(HWND__ * 0x001707ba, unsigned int 273, unsigned int 57600, long 0) line 368
AfxWndProcBase(HWND__ * 0x001707ba, unsigned int 273, unsigned int 57600, long 0) line 220 + 21 bytes
USER32! 77d18709()
USER32! 77d187eb()
USER32! 77d189a5()
USER32! 77d1bccc()
CWinThread::PumpMessage() line 846
CWinThread::Run() line 480 + 11 bytes
CWinApp::Run() line 400
AfxWinMain(HINSTANCE__ * 0x00400000, HINSTANCE__ * 0x00000000, char * 0x00141f2a, int 1) line 49 + 11 bytes
WinMain(HINSTANCE__ * 0x00400000, HINSTANCE__ * 0x00000000, char * 0x00141f2a, int 1) line 30
WinMainCRTStartup() line 330 + 54 bytes
KERNEL32! 7c816d4f()

分析:
1) MFC类基本的启动流程为: CApp -> CMainFrame ->CDoc ->CChildFrame ->CView
   其中若没有打开文档,则只加载到CMainFrame,打开/新建文档,均加载后三项。


[050329]
1.  对窗体上任何一个元素的位置的获取,可以使用下面的方法:
	CRect rct;
	WINDOWPLACEMENT* lpwndpl=new WINDOWPLACEMENT;
    ((CWnd*)GetDlgItem(IDC_STATIC_OBJECT_COL))->GetWindowPlacement(lpwndpl);

    其他的函数一般来说不容易达到目标。

2.  在一个矩形区域填充颜色使用下面的函数:
	rct=lpwndpl->rcNormalPosition;
	this->GetDC()->FillRect(&rct,pBrush);

	相对来说,不知道为什莫Rectangle()函数无法内填颜色?


3.  BMP图像中的颜色顺序是 B->G->R,而不是R->G->B。




[050330]
1.  如何定义常量数组?

    
2.  如何动态创建菜单及响应其菜单条的命令?


3.  













⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -