首页
社区
课程
招聘
[旧帖] [求助]listview控件的使用 0.00雪花
发表于: 2011-10-5 13:07 1370

[旧帖] [求助]listview控件的使用 0.00雪花

2011-10-5 13:07
1370
#include "stdafx.h"
#include "tchar.h"
#include "commctrl.h"
#include "shlwapi.h"
#pragma comment(lib,"comctl32.lib")
#pragma comment(lib,"shlwapi.lib")
void InsertColumn();
LONG CALLBACK ProcWinMain(   HWND hWnd, 
                       UINT Msg, 
                       WPARAM wParam, 
                       LPARAM lParam 
);
HINSTANCE g_hInstance;
HWND hList;
int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
 	// TODO: Place code here.
	
WNDCLASSEX wc;
    MSG msg;
    HWND hWnd;
    InitCommonControls();
  g_hInstance = hInstance;
    wc.cbSize = sizeof(WNDCLASSEX);
    wc.style = CS_HREDRAW | CS_VREDRAW ;
    wc.lpfnWndProc = ProcWinMain;
    wc.cbClsExtra = NULL;
    wc.cbWndExtra = NULL;
    wc.hInstance = hInstance;
    wc.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);
    wc.lpszMenuName = 0;
    wc.lpszClassName = "ClassName";
    wc.hIcon = wc.hIconSm = LoadIcon(NULL,IDI_APPLICATION);
    wc.hCursor = LoadCursor(NULL,IDC_ARROW);
    RegisterClassEx(&wc);


    hWnd = CreateWindowEx(NULL,"ClassName","AppName",WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);
    ShowWindow(hWnd,SW_SHOWNORMAL);
	
       
    UpdateWindow(hWnd);
  
    while(GetMessage(&msg,NULL,0,0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.wParam;

	return 0;
}





























LONG CALLBACK ProcWinMain(   HWND hWnd, 
                       UINT Msg, 
                       WPARAM wParam, 
                       LPARAM lParam 
)
{
	

    switch(Msg)
    {
    case WM_CREATE:
    {
			[COLOR="Red"]hList = CreateWindowEx(NULL,"SysListView32",NULL,WS_CHILD| LVS_REPORT |WS_VISIBLE | WS_TABSTOP ,
            0,0,0,0,hWnd,NULL,g_hInstance,NULL);[/COLOR]      //|LVS_EX_CHECKBOXES LVS_REPORT
       SendMessage(hList,LVM_SETTEXTCOLOR,0,(LPARAM)RGB(123,168,168));
       SendMessage(hList,LVM_SETBKCOLOR,0,(LPARAM)RGB(0,0,0));
       SendMessage(hList,LVM_SETTEXTBKCOLOR,0,(LPARAM)RGB(0,0,0));
		if(hList == 0)
		{
			MessageBox(NULL,TEXT("SS"),TEXT(""),0);
		}
      //  hMenu = GetMenu(hWnd);
        //CheckMenuRadioItem(hMenu,IDM_ICON,IDM_LIST,IDM_REPORT,MF_CHECKED);
		//SendMessage(hList, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_CHECKBOXES);
		 InsertColumn();


//
		 LV_ITEM lvi;
    CHAR buffer[20];
    lvi.mask = LVIF_TEXT | LVIF_PARAM;
   lvi.iItem = 0;
    lvi.iSubItem = 0;

	 lvi.pszText = "IOISSSSO.EXE";


		 

	SendMessage(hList,LVM_INSERTITEM,0,(LPARAM)&lvi);
    lvi.mask = LVIF_TEXT;
    lvi.iSubItem ++;


	wsprintf(buffer,"60","kb");
	lvi.pszText = buffer;
    SendMessage(hList,LVM_SETITEM,0,(LPARAM)&lvi);


//


    
    lvi.mask = LVIF_TEXT | LVIF_PARAM;
   lvi.iItem = 1;
    lvi.iSubItem = 0;

	 lvi.pszText = "SSSSSSSSSSS.EXE";


		 

	SendMessage(hList,LVM_INSERTITEM,0,(LPARAM)&lvi);
    lvi.mask = LVIF_TEXT;
    lvi.iSubItem ++;


	wsprintf(buffer,"133","kb");
	lvi.pszText = buffer;
    SendMessage(hList,LVM_SETITEM,0,(LPARAM)&lvi);

    }
    break;
   
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    case WM_SIZE:
        MoveWindow(hList,0,0,LOWORD(lParam),HIWORD(lParam),TRUE);
        break;
    case WM_COMMAND:
        if(lParam == 0)
        {
            LONG nStyle = GetWindowLong(hList,GWL_STYLE) ;
            nStyle &= ~LVS_TYPEMASK;
            nStyle |= LOWORD(wParam);
            SetWindowLong(hList,GWL_STYLE,nStyle);
          //  CheckMenuRadioItem(hMenu,IDM_ICON,IDM_LIST,LOWORD(wParam),MF_CHECKED);
        }
        break;

   /* case WM_NOTIFY:
        {
            NMHDR *pNm = (NMHDR *)lParam;
            if(pNm->hwndFrom == hList)
            {
                if(pNm->code == LVN_COLUMNCLICK)
                {
                     NM_LISTVIEW *pLV = (NM_LISTVIEW *)lParam;
                    if(pLV->iSubItem == 1)
                    {
                        if(SizeSortOrder == 0 || SizeSortOrder == 2)
                        {
                            SendMessage(hList,LVM_SORTITEMS,1,(LPARAM)CompareFunc);
                            UpdatelParam();
                            SizeSortOrder = 1;
                        }
                        else
                        {
                              SendMessage(hList,LVM_SORTITEMS,2,(LPARAM)CompareFunc);
                            UpdatelParam();
                            SizeSortOrder = 2;

                        }
                    }
                    else
                    {
                          if(FileNameSortOrder == 0 || FileNameSortOrder == 4)
                        {
                            SendMessage(hList,LVM_SORTITEMS,3,(LPARAM)CompareFunc);
                            UpdatelParam();
                            FileNameSortOrder = 3;
                        }
                        else
                        {
                            SendMessage(hList,LVM_SORTITEMS,4,(LPARAM)CompareFunc);
                            UpdatelParam();
                            FileNameSortOrder = 4;
                        }
                    }
                }
                else if(pNm->code == NM_DBLCLK)
                    ShowCurrentFocus();
            }
        }
        break;
		*/
    default:
        return DefWindowProc(hWnd,Msg,wParam,lParam);
    }
    return 0;
}





void InsertColumn()
{
    LV_COLUMN lvc;
    lvc.mask = LVCF_TEXT | LVCF_WIDTH;
    lvc.pszText = "Heading1";
    lvc.cx = 150;
    SendMessage(hList,LVM_INSERTCOLUMN,0,(LPARAM)&lvc);
    lvc.mask |= LVCF_FMT;
    lvc.fmt = LVCFMT_RIGHT;
    lvc.pszText = "Heading2";
    lvc.cx = 100;
    SendMessage(hList,LVM_INSERTCOLUMN,1,(LPARAM)&lvc);
}



hList = CreateWindowEx(NULL,"SysListView32",NULL,WS_CHILD| LVS_REPORT |WS_VISIBLE | WS_TABSTOP ,
            0,0,0,0,hWnd,NULL,g_hInstance,NULL);


这句代码 我想问一下 为什么不能设置listview控件的大小 ,这个listview控件一旦创建就把父窗口给占满了。我想设置子窗口(listview)的大小。在父窗口中留一些位置。能够放其他的控件。
请问高手如何实现?以上就是我把四个参数设置为0了 但是发现到其实子窗口(listview)的大小还是按照父窗口的大小设置的。让我没有办法设置子窗口大小。  
怎么样才能设置子窗口(listview)的大小????
请高手指教?

[培训]科锐软件逆向54期预科班、正式班开始火爆招生报名啦!!!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 349
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
没这样用过,我都是写RC文件。
2011-10-5 13:22
0
雪    币: 1708
活跃值: (586)
能力值: ( LV15,RANK:670 )
在线值:
发帖
回帖
粉丝
3
你用 spy++ 照照看这个控件的区域在什么地方。不要以为白色的都是 listview.
2011-10-5 19:10
0
雪    币: 81
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
ls 可以把我的代码复制run下试试。
控件的颜色已经SendMessage(hList,LVM_SETBKCOLOR,0,(LPARAM)RGB(0,0,0));
       SendMessage(hList,LVM_SETTEXTBKCOLOR,0,(LPARAM)RGB(0,0,0));
大小很容易看到的  只要是黑色的  就是。
就是不懂得怎么设置listview控件的大小、
2011-10-6 14:31
0
游客
登录 | 注册 方可回帖
返回