virtual table
海前 王
Posted on August 27, 2024
include "n.h"
include
include "nn.h"
include"resource.h"
myapp theapp;
BOOL myapp::InitApplication()
{/*
m_pMainWnd = new main_frame;
m_pMainWnd->SendMessage(WM_CUSTOM_MESSAGE, 333, 44);
m_menu.LoadMenuW(IDM_FILE_OPEN);
m_pMainWnd->DrawMenuBar();
m_pMainWnd->ShowWindow(m_nCmdShow);
m_pMainWnd->UpdateWindow();
MessageBox(NULL, _T("Application initialized!"), _T("Info"), MB_OK);
return CWinApp::InitApplication();
}*/
m_pMainWnd = new main_frame;
// 加载主菜单
m_menu.LoadMenu(IDM_FILE_OPEN);
m_pButton = new CButton;
m_pButton->Create(_T("Button Text"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, CRect(10, 10, 100, 30), AfxGetMainWnd(), IDC_BUTTON_OK);
// 获取主菜单的句柄
m_pMainWnd->SetMenu(&m_menu);
/* if (pMainMenu)
{
// 在主菜单上添加菜单项
CMenu* pSubMenu = m_menu.GetSubMenu(0); // 假设菜单资源中的第一个子菜单是你要添加的菜单项
if (pSubMenu)
{
// 将菜单项插入到主菜单的指定位置
pMainMenu->InsertMenu(1, MF_BYPOSITION | MF_POPUP, (UINT_PTR)pSubMenu->GetSafeHmenu(), _T("New Menu"));
}
}
*/
m_pMainWnd->ShowWindow(m_nCmdShow);
m_pMainWnd->UpdateWindow();
MessageBox(NULL, _T("Application initialized!"), _T("Info"), MB_OK);
dog* f=new dog;
f->Create(NULL, L"dd", WS_OVERLAPPEDWINDOW, CRect(0, 0, 500, 300));
f->ShowWindow(SW_SHOW);
// f->ShowOwnedWindows(false);
f->UpdateWindow();
return CWinApp::InitApplication();
}
dog::dog()
{
//Create(NULL, L"dd", WS_OVERLAPPEDWINDOW, CRect(0, 0, 500, 300));
}
/*
main_frame::main_frame()
{
Create(NULL, _T("Hello"), WS_OVERLAPPEDWINDOW, CRect(32, 64, 352, 304));
MessageBox( _T("Main frame created!"), _T("Info"), MB_OK);
}
LRESULT main_frame::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_CLOSE:
MessageBox( _T("Close button clicked!"), _T("Info"), MB_OK|MB_RIGHT);
break;
case WM_LBUTTONDOWN:
MessageBox( _T("Left mouse button clicked!"), _T("Info"), MB_OK);
break;
default:
return CWnd::WindowProc(message, wParam, lParam);
}
return 0;
}*/
pragma once
include "afxdialogex.h"
include // 如果是对话框类(CDialog)中的函数
//#include // 如果是窗口类(CWnd)中的函数
// nn 对话框
class nn : public CDialog
{
DECLARE_DYNAMIC(nn)
public:
nn(CWnd* pParent = nullptr); // 标准构造函数
BOOL OnInitDialog();
virtual ~nn();
afx_msg void OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct) ;
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
void AdjustColumnWidth();
int GetColumnCount();
// void SetRowHeigt(int);
// void AutoColumn(void)
// 对话框数据
ifdef AFX_DESIGN_TIME
enum { IDD = IDD_DIALOG1 };
endif
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
CListCtrl m_ListCode;
DECLARE_MESSAGE_MAP()
public:
// afx_msg void OnLvnItemchangedList1(NMHDR* pNMHDR, LRESULT* pResult);
// afx_msg void OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct);
afx_msg void OnLvnItemchangedList1(NMHDR* pNMHDR, LRESULT* pResult);
};
include "n.h"
include
include "nn.h"
include"resource.h"
myapp theapp;
BOOL myapp::InitApplication()
{/*
m_pMainWnd = new main_frame;
m_pMainWnd->SendMessage(WM_CUSTOM_MESSAGE, 333, 44);
m_menu.LoadMenuW(IDM_FILE_OPEN);
m_pMainWnd->DrawMenuBar();
m_pMainWnd->ShowWindow(m_nCmdShow);
m_pMainWnd->UpdateWindow();
MessageBox(NULL, _T("Application initialized!"), _T("Info"), MB_OK);
return CWinApp::InitApplication();
}*/
m_pMainWnd = new main_frame;
// 加载主菜单
m_menu.LoadMenu(IDM_FILE_OPEN);
m_pButton = new CButton;
m_pButton->Create(_T("Button Text"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, CRect(10, 10, 100, 30), AfxGetMainWnd(), IDC_BUTTON_OK);
// 获取主菜单的句柄
m_pMainWnd->SetMenu(&m_menu);
/* if (pMainMenu)
{
// 在主菜单上添加菜单项
CMenu* pSubMenu = m_menu.GetSubMenu(0); // 假设菜单资源中的第一个子菜单是你要添加的菜单项
if (pSubMenu)
{
// 将菜单项插入到主菜单的指定位置
pMainMenu->InsertMenu(1, MF_BYPOSITION | MF_POPUP, (UINT_PTR)pSubMenu->GetSafeHmenu(), _T("New Menu"));
}
}
*/
m_pMainWnd->ShowWindow(m_nCmdShow);
m_pMainWnd->UpdateWindow();
MessageBox(NULL, _T("Application initialized!"), _T("Info"), MB_OK);
dog* f=new dog;
f->Create(NULL, L"dd", WS_OVERLAPPEDWINDOW, CRect(0, 0, 500, 300));
f->ShowWindow(SW_SHOW);
// f->ShowOwnedWindows(false);
f->UpdateWindow();
return CWinApp::InitApplication();
}
dog::dog()
{
//Create(NULL, L"dd", WS_OVERLAPPEDWINDOW, CRect(0, 0, 500, 300));
}
/*
main_frame::main_frame()
{
Create(NULL, _T("Hello"), WS_OVERLAPPEDWINDOW, CRect(32, 64, 352, 304));
MessageBox( _T("Main frame created!"), _T("Info"), MB_OK);
}
LRESULT main_frame::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_CLOSE:
MessageBox( _T("Close button clicked!"), _T("Info"), MB_OK|MB_RIGHT);
break;
case WM_LBUTTONDOWN:
MessageBox( _T("Left mouse button clicked!"), _T("Info"), MB_OK);
break;
default:
return CWnd::WindowProc(message, wParam, lParam);
}
return 0;
}*/
// nn.cpp: 实现文件
//
//#include "pch.h"
include "afxdialogex.h"
include "nn.h"
include
include
include "resource.h"
// nn 对话框
IMPLEMENT_DYNAMIC(nn, CDialog)
BEGIN_MESSAGE_MAP(nn, CDialog)
// ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST1, &nn::OnLvnItemchangedList1)
ON_WM_DRAWITEM()
ON_WM_ERASEBKGND()
// ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST1, &nn::OnLvnItemchangedList1)
END_MESSAGE_MAP()
nn::nn(CWnd* pParent /=nullptr/)
: CDialog(IDD_DIALOG1, pParent)
{
}
nn::~nn()
{
}
void nn::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct)
{
if (nIDCtl == IDC_LIST1)
{
CDC* pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
CRect rcItem(lpDrawItemStruct->rcItem);
int nItem = lpDrawItemStruct->itemID;
if (lpDrawItemStruct->itemAction & ODA_DRAWENTIRE)
{
// 绘制列表项背景色
pDC->FillSolidRect(rcItem, RGB(255, 255, 255)); // 设置背景色为白色
// 绘制红色分隔线
CPen pen(PS_SOLID, 1, RGB(255, 0, 0)); // 设置红色画笔
CPen* pOldPen = pDC->SelectObject(&pen);
pDC->MoveTo(rcItem.left, rcItem.bottom - 1);
pDC->LineTo(rcItem.right, rcItem.bottom - 1);
pDC->SelectObject(pOldPen);
}
// 绘制列表项文本
CString strText = m_ListCode.GetItemText(nItem, 0);
rcItem.DeflateRect(2, 2);
pDC->DrawText(strText, rcItem, DT_LEFT | DT_VCENTER | DT_SINGLELINE);
}
else
{
CDialog::OnDrawItem(nIDCtl, lpDrawItemStruct);
}
}
BOOL nn::OnEraseBkgnd(CDC* pDC)
{
return TRUE;
}
void nn::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_LIST1, m_ListCode); // 将列表控件与成员变量关联
}
//#include
// 对话框消息映射
// nn 消息处理程序
if 0
BOOL nn::OnInitDialog()
{
CDialog::OnInitDialog();
/* SetWindowPos(NULL, 0, 0, 1000, 960, SWP_NOMOVE | SWP_NOZORDER);
// 设置列表控件风格
DWORD dwStyle = m_ListCode.GetExtendedStyle();
dwStyle |= LVS_EX_FULLROWSELECT; // 选中整行
dwStyle |= LVS_EX_GRIDLINES; // 列表控件行列分隔线
//设置列表控件分隔线颜色
m_ListCode.SetBkColor(RGB(255, 255, 255)); // 设置背景色为白色
m_ListCode.SetTextBkColor(RGB(255, 255, 255)); // 设置文本背景色为白色
m_ListCode.SetTextColor(RGB(0, 0, 0)); // 设置文字颜色为黑色
//m_ListCode.SetGridLineColor(RGB(255, 0, 0)); // 设置分隔线颜色为红色
m_ListCode.SetExtendedStyle(dwStyle);
//m_ListCode.SetItemIndexState()
// 添加列表控件列
m_ListCode.InsertColumn(0, _T("代码"), LVCFMT_LEFT, 600*/
// 设置列表控件风格
DWORD dwStyle = m_ListCode.GetExtendedStyle();
dwStyle |= LVS_EX_FULLROWSELECT; // 选中整行
m_ListCode.SetExtendedStyle(dwStyle);
// 添加列表控件列
m_ListCode.InsertColumn(0, _T("代码"), LVCFMT_LEFT, 600);
// 设置自定义绘制列表控件
m_ListCode.SetExtendedStyle(m_ListCode.GetExtendedStyle() | LVS_OWNERDRAWFIXED);
m_ListCode.SetCallbackMask(LVN_ODCACHEHINT | LVN_GETDISPINFO);
m_ListCode.SetItemCount(100); // 设置列表项数量,根据实际情况修改
// 设置背景色为白色
m_ListCode.SetBkColor(RGB(255, 255, 255));
// 设置文本背景色为白色
m_ListCode.SetTextBkColor(RGB(255, 255, 255));
// 设置文字颜色为黑色
m_ListCode.SetTextColor(RGB(1, 0, 0));
CRect rect;
GetDlgItem(IDC_LIST1)->GetWindowRect(&rect);
ScreenToClient(&rect);
rect.right = rect.left + 1200; // 设置列表控件的宽度
rect.bottom = rect.top + 1800; // 设置列表控件的高度
m_ListCode.MoveWindow(rect);
// 打开.nc文件
std::ifstream file("D:\\叶轮粗加工(简单11).NC");
if (!file)
{
AfxMessageBox(_T("无法打开文件"));
return FALSE;
}
AfxMessageBox(L"dddd");
std::string line;
int itemIndex = 0;
while (std::getline(file, line))
{
// 将代码行转换为CString类型
CString strLine(line.c_str());
// 添加代码行到列表控件
m_ListCode.InsertItem(itemIndex, strLine);
itemIndex++;
/*
CString s = itoa(itemIndex,sizeof(CString), 10);
CString s1 = " ";
s.Format(L"the is %s", s);
OutputDebugString(s);*/
// CString strLine(line.c_str());
// 添加代码行到列表控件
// m_ListCode.InsertItem(itemIndex, strLine);
itemIndex++;
CString s;
s.Format(L"the is %d", itemIndex);
OutputDebugString(s);
}
file.close(); // 关闭文件
return TRUE;
}
BOOL nn::OnInitDialog()
{
CDialog::OnInitDialog();
// 设置列表控件风格
DWORD dwStyle = m_ListCode.GetExtendedStyle();
dwStyle |= LVS_EX_FULLROWSELECT; // 选中整行
m_ListCode.SetExtendedStyle(dwStyle);
// 添加列表控件列
m_ListCode.InsertColumn(0, _T("代码"), LVCFMT_LEFT, 600);
// 设置自定义绘制列表控件
m_ListCode.SetExtendedStyle(m_ListCode.GetExtendedStyle() | LVS_OWNERDRAWFIXED);
m_ListCode.SetCallbackMask(LVN_ODCACHEHINT | LVN_GETDISPINFO);
m_ListCode.SetItemCount(100); // 设置列表项数量,根据实际情况修改
// 设置列表控件位置和大小
CRect rect;
GetDlgItem(IDC_LIST1)->GetWindowRect(&rect);
ScreenToClient(&rect);
rect.right = rect.left + 1100; // 设置列表控件的宽度
rect.bottom = rect.top + 2111; // 设置列表控件的高度
m_ListCode.MoveWindow(rect);
// 打开.nc文件
std::ifstream file("D:\\叶轮粗加工(简单11).NC");
if (!file)
{
AfxMessageBox(_T("无法打开文件"));
return FALSE;
}
std::string line;
int itemIndex = 0;
while (std::getline(file, line))
{
// 将代码行转换为CString类型
CString strLine(line.c_str());
// 添加代码行到列表控件
int index = m_ListCode.InsertItem(itemIndex, strLine);
// 调整列宽度以适应数据的长度
m_ListCode.SetColumnWidth(0, LVSCW_AUTOSIZE);
itemIndex++;
}
file.close(); // 关闭文件
return TRUE;
}
endif
BOOL nn::OnInitDialog()
{
CDialog::OnInitDialog();
// 设置列表控件风格
DWORD dwStyle = m_ListCode.GetExtendedStyle();
dwStyle |= LVS_EX_FULLROWSELECT; // 选中整行
m_ListCode.SetExtendedStyle(dwStyle);
// 添加列表控件列
m_ListCode.InsertColumn(0, _T("代码"), LVCFMT_LEFT, 600);
// 设置自定义绘制列表控件
m_ListCode.SetExtendedStyle(m_ListCode.GetExtendedStyle() | LVS_OWNERDRAWFIXED);
m_ListCode.SetCallbackMask(LVN_ODCACHEHINT | LVN_GETDISPINFO);
m_ListCode.SetItemCount(100); // 设置列表项数量,根据实际情况修改
// 设置列表控件位置和大小
CRect rect;
GetDlgItem(IDC_LIST1)->GetWindowRect(&rect);
ScreenToClient(&rect);
rect.right = rect.left + 1200; // 设置列表控件的宽度
rect.bottom = rect.top + 1800; // 设置列表控件的高度
m_ListCode.MoveWindow(rect);
// 打开.nc文件
std::ifstream file("D:\\叶轮粗加工(简单11).NC");
if (!file)
{
AfxMessageBox(_T("无法打开文件"));
return FALSE;
}
std::string line;
int itemIndex = 0;
while (std::getline(file, line))
{
// 将代码行转换为CString类型
CString strLine(line.c_str());
// 添加代码行到列表控件
int index = m_ListCode.InsertItem(itemIndex, strLine);
// 调整列宽度以适应数据的长度
// m_ListCode.SetColumnWidth(0, LVSCW_AUTOSIZE);
itemIndex++;
}
file.close(); // 关闭文件
return TRUE;
}
/*
void nn::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct)
{
if (nIDCtl == IDC_LIST1)
{
CDC* pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
// 设置绘制的字体
CFont font;
font.CreateFont(8, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_SWISS, _T("Arial"));
pDC->SelectObject(&font);
// 计算单元格的位置和大小
CRect rect(lpDrawItemStruct->rcItem);
rect.DeflateRect(2, 2); // 减去边距
// 获取单元格的文本
CString strText;
m_ListCode.GetItemText(lpDrawItemStruct->itemID, lpDrawItemStruct->itemData, strText);
// 绘制单元格的背景
pDC->FillSolidRect(rect, RGB(255, 255, 255)); // 白色背景
// 绘制单元格的文本
pDC->SetTextColor(RGB(0, 0, 0)); // 黑色字体
pDC->DrawText(strText, rect, DT_LEFT | DT_VCENTER | DT_SINGLELINE);
}
else
{
CDialog::OnDrawItem(nIDCtl, lpDrawItemStruct);
}
}*/
Posted on August 27, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.