关于一个list的问题

bigwolf23 2005-01-13 04:21:18
#include <windows.h>

#define ID_LIST 1

#define ID_TEXT 2


LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;


int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,

PSTR szCmdLine, int iCmdShow)

{

static TCHAR szAppName[] = TEXT ("Environ") ;

HWND hwnd ;

MSG msg ;

WNDCLASS wndclass ;



wndclass.style = CS_HREDRAW | CS_VREDRAW ;

wndclass.lpfnWndProc = WndProc ;

wndclass.cbClsExtra = 0 ;

wndclass.cbWndExtra = 0 ;

wndclass.hInstance = hInstance ;

wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;

wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;

wndclass.hbrBackground = (HBRUSH) (COLOR_WINDOW + 1) ;

wndclass.lpszMenuName = NULL ;

wndclass.lpszClassName = szAppName ;



if (!RegisterClass (&wndclass))

{

MessageBox ( NULL, TEXT ("This program requires Windows NT!"),

szAppName, MB_ICONERROR) ;

return 0 ;

}



hwnd = CreateWindow (szAppName, TEXT ("Environment List Box"),

WS_OVERLAPPEDWINDOW,

CW_USEDEFAULT, CW_USEDEFAULT,

CW_USEDEFAULT, CW_USEDEFAULT,

NULL, NULL, hInstance, NULL) ;



ShowWindow (hwnd, iCmdShow) ;

UpdateWindow (hwnd) ;



while (GetMessage (&msg, NULL, 0, 0))

{

TranslateMessage (&msg) ;

DispatchMessage (&msg) ;

}

return msg.wParam ;

}


void FillListBox (HWND hwndList)

{

int iLength ;

TCHAR * pVarBlock, * pVarBeg, * pVarEnd, * pVarName ;


pVarBlock = GetEnvironmentStrings () ; // Get pointer to environment block


//pingyb
SendMessage(hwndList, LB_SETITEMHEIGHT , 0, 20);//¸Ä±ä¼ä¾à


while (*pVarBlock)

{

if (*pVarBlock != '=') // Skip variable names beginning with '='

{

pVarBeg = pVarBlock ; // Beginning of variable name

while (*pVarBlock++ != '=') ; // Scan until '='

pVarEnd = pVarBlock - 1 ; // Points to '=' sign

iLength = pVarEnd - pVarBeg ; // Length of variable name


// Allocate memory for the variable name and terminating

// zero. Copy the variable name and append a zero.


pVarName = calloc (iLength + 1, sizeof (TCHAR)) ;

CopyMemory (pVarName, pVarBeg, iLength * sizeof (TCHAR)) ;

pVarName[iLength] = '\0' ;


// Put the variable name in the list box and free memory.

SendMessage (hwndList, LB_ADDSTRING, 0, (LPARAM) pVarName) ;

free (pVarName) ;

}

while (*pVarBlock++ != '\0') ; // Scan until terminating zero

}

FreeEnvironmentStrings (pVarBlock) ;

}


LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam,LPARAM lParam)

{

static HWND hwndList, hwndText ;

int iIndex, iLength, cxChar, cyChar ;

TCHAR * pVarName, * pVarValue ;


switch (message)

{

case WM_CREATE :

cxChar = LOWORD (GetDialogBaseUnits ()) ;

cyChar = HIWORD (GetDialogBaseUnits ()) ;

// Create listbox and static text windows.


hwndList = CreateWindow (TEXT ("listbox"), NULL,

WS_CHILD | WS_VISIBLE | LBS_DISABLENOSCROLL ,

cxChar, cyChar * 3,

cxChar * 16 + GetSystemMetrics (SM_CXVSCROLL),

cyChar * 10,

hwnd, (HMENU) ID_LIST,

(HINSTANCE) GetWindowLong (hwnd, GWL_HINSTANCE),

NULL) ;



hwndText = CreateWindow (TEXT ("static"), NULL,

WS_CHILD | WS_VISIBLE | SS_LEFT,

cxChar, cyChar,

GetSystemMetrics (SM_CXSCREEN), cyChar,

hwnd, (HMENU) ID_TEXT,

(HINSTANCE) GetWindowLong (hwnd, GWL_HINSTANCE),

NULL) ;


FillListBox (hwndList) ;

return 0 ;



case WM_SETFOCUS :

SetFocus (hwndList) ;

return 0 ;

case WM_COMMAND :

if (LOWORD (wParam) == ID_LIST && HIWORD (wParam) == LBN_SELCHANGE)
//ID_LISTû¿´³ö×÷ÓÃÀ´
{// Get current selection.

iIndex = SendMessage (hwndList, LB_GETCURSEL, 0, 0) ;

iLength = SendMessage (hwndList, LB_GETTEXTLEN, iIndex, 0) + 1 ;

pVarName = calloc (iLength, sizeof (TCHAR)) ;

SendMessage (hwndList, LB_GETTEXT, iIndex, (LPARAM) pVarName) ;


// Get environment string.


iLength = GetEnvironmentVariable (pVarName, NULL, 0) ;

pVarValue = calloc (iLength, sizeof (TCHAR)) ;

GetEnvironmentVariable (pVarName, pVarValue, iLength) ;


// Show it in window.

SetWindowText (hwndText, pVarValue) ;

free (pVarName) ;

free (pVarValue) ;

}

return 0 ;


case WM_DESTROY :

PostQuitMessage (0) ;

return 0 ;

}

return DefWindowProc (hwnd, message, wParam, lParam) ;

}

这个程序是一个显示List的东西,用windows32和c语言编的,我会加按钮,但我想实现一个功能就是把选择的内容向下移动,请问如何做到
...全文
102 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧