
HWND就像指针一样(说白了就是指针), 它也是整型数据类型 所以, 只需要强制类型转换为int型就可以了
HWND wnd;cout<<(int)wnd;
或者用C语言的方法:
HWND wnd;printf("%d", wnd);
C语言相比C++来说, 不需要强制类型转换了 ,但是仍然需要写%d 所以怎么使用需要看实际情况
使用CFile类,在VS2005中
HANDLE hFile = CreateFile(_T("C:\\MyFiletxt"),
GENERIC_WRITE, FILE_SHARE_READ,
NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);//创建文件并获得文件句柄
if (hFile == INVALID_HANDLE_VALUE)//如果创建失败
AfxMessageBox(_T("Couldn't create the file!"));
else
{
// Attach a CFile object to the handle we have
CFile myFile(hFile);
static const char sz[] = "Hockey is best!";
// write string, without null-terminator
myFileWrite(sz, lstrlen(sz));//将文本写入文件
// We can call Close() explicitly, but the destructor would have
// also closed the file for us Note that there's no need to
// call the CloseHandle() on the handle returned by the API because
// MFC will close it for us
myFileClose();//关闭流
}
或者你用C或C++语言的输入输出流也可以只要包括相应的头文件就行了
行数 int nItemNum = m_listGetItemCount();
列数 int nHeadNum = m_listGetHeaderCtrl()->GetItemCount();
1、 ListCtrl添加左键单击(NM_CLICK)函数(这个很重要)。
2、 ListCtrl风格设置(一般是网格)。
一般listctrl默认view风格为report,一般在OnInitDialog函数中:
LONG m_lStyle;
m_lStyle = GetWindowLong( m_listm_hWnd , GWL_STYLE);//获取当前窗口style
m_lStyle |= LVS_EX_FULLROWSELECT;//选中某行使整行高亮(只适用与report风格的listctrl)
m_lStyle |= LVS_EX_GRIDLINES;//网格线(只适用与report风格的listctrl)
//m_lStyle |= LVS_SHOWSELALWAYS;//一直选中item
m_listSetExtendedStyle( m_lStyle );//设置扩展风格
3、 插入数据
一般在OnInitDialog函数中:
//m_listInsertColumn( 0, "ID", LVCFMT_LEFT, 40 );
//插入列
m_listInsertColumn( 1, "NAME", LVCFMT_LEFT, 50 );
int nRow = m_listInsertItem(0, "11");//插入行
m_listInsertItem(1,"12");
m_listSetItemText(nRow, 1, "jacky");//设置数据
m_listSetItemText(nRow+1, 1, "James");
4、 得到listctrl中所有行的checkbox的状态
在OnNMClickList1函数中:
方法一:
m_listSetExtendedStyle(LVS_EX_CHECKBOXES);
CString str;
for(int i=0; i<m_listGetItemCount(); i++)
{
if( m_listGetItemState(i, LVIS_SELECTED) == LVIS_SELECTED || m_listGetCheck(i))
{
strFormat(_T("第%d行的checkbox为选中状态"), i+1);
AfxMessageBox(str);
}
}
方法二:
POSITION pos = m_listGetFirstSelectedItemPosition();
CString str;
if (pos == NULL)
TRACE0("No items were selected!/n");
else
{
while (pos)
{
int nItem = m_listGetNextSelectedItem(pos);
strFormat(_T("选中了第%d行"), nItem+1);
AfxMessageBox(str);
}
}
5、 删除所有列(即清空)
while ( m_listDeleteColumn (0));
6、 得到单击的listctrl的行列号
// 方法一:
DWORD dwPos = GetMessagePos(); //返回表示屏幕坐标下光标位置的长整数值
CPoint point( LOWORD(dwPos), HIWORD(dwPos) );
m_listScreenToClient(&point); //把屏幕上指定点的屏幕坐标转换成用户坐标
LVHITTESTINFO lvinfo;
lvinfopt = point;
lvinfoflags = LVHT_ABOVE;
int nItem = m_listSubItemHitTest(&lvinfo);
if(nItem != -1)
{
CString strtemp;
strtempFormat("单击的是第%d行第%d列", lvinfoiItem, lvinfoiSubItem);
AfxMessageBox(strtemp);
}
// 方法二:
NM_LISTVIEW pNMListView = (NM_LISTVIEW)pNMHDR;
if(pNMListView->iItem != -1)
{
CString strtemp;
strtempFormat("单击的是第%d行第%d列", pNMListView->iItem, pNMListView->iSubItem);
AfxMessageBox(strtemp);
}
7、 右键点击listctrl的itemd出菜单
在资源里画菜单
添加listctrl控件的NM_RCLICK消息相应函数
//右键单击的函数
void CListCtrlDlg::OnNMRclickList1(NMHDR pNMHDR, LRESULT pResult)
{
NM_LISTVIEW pNMListView = (NM_LISTVIEW)pNMHDR;
if(pNMListView->iItem != -1)
{
DWORD dwPos = GetMessagePos(); //返回表示屏幕坐标下光标位置的长整数值
CPoint point( LOWORD(dwPos), HIWORD(dwPos) );
CMenu menu;
VERIFY( menuLoadMenu( IDR_MENU1 ) );
CMenu popup = menuGetSubMenu(0); //取得被指定菜单激活的下拉式菜单或子菜单的句柄
ASSERT( popup != NULL );
popup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,pointx, pointy, this ); //在指定位置显示快捷菜单,并跟踪菜单项的选择
}
pResult = 0;
}
以上就是关于c++ 如何输出HWND句柄的值全部的内容,包括:c++ 如何输出HWND句柄的值、如何用vc++ 写入文本文件、如何跨进程获取listctrl的行数和列数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)