能力值:
( LV2,RANK:10 )
在线值:
|
-
-
2 楼
解决了.我自己又写了个程序.
#include "dlg.h"
INT_PTR CALLBACK ProcDlgMain(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
int wmId;
switch(uMsg)
{
case WM_INITDIALOG:
sif.cbSize = sizeof(SCROLLINFO);
sif.fMask =SIF_POS|SIF_RANGE;
sif.nMin =0;
sif.nMax =99;
sif.nPos =0;
SetScrollInfo(GetDlgItem(hwndDlg,IDC_SCROLLBAR1),SB_CTL,&sif,TRUE);
return TRUE;
case WM_CLOSE://关闭
{
EndDialog(hwndDlg ,NULL);
return TRUE;
}
case WM_HSCROLL:
{
wmId = LOWORD(wParam);
switch(wmId)
{
case SB_LINELEFT:
pos--;
SetDlgItemInt(hwndDlg,IDC_STATIC_VALUE,pos,FALSE);
SendDlgItemMessage(hwndDlg,IDC_SCROLLBAR1,SBM_SETPOS,pos,TRUE);
return TRUE;
case SB_LINERIGHT:
pos++;
SetDlgItemInt(hwndDlg,IDC_STATIC_VALUE,pos,FALSE);
SetScrollPos(GetDlgItem(hwndDlg,IDC_SCROLLBAR1),SB_CTL,dwPos,TRUE);
return TRUE;
}
}
}
return FALSE;
}
int _stdcall WinMain(HINSTANCE hInst,HINSTANCE hPrevInst,LPSTR lpCmdLine,int nShowCmd)
{
LoadLibrary(_T("Riched20.dll"));
DialogBoxParamW(hInst,MAKEINTRESOURCEW(IDD_DIALOG1),NULL,ProcDlgMain,NULL);
return 0;
}
顺便解释一下:
LoadLibrary(_T("Riched20.dll")); 这行是因为对话框中使用Riched box控件.使用此控件.VS不能保证DLL被加载.所以必须显式加载.
而我这个程序出错的原因是SB_CTL 这个问题. SB_CTL 代表你在对话框中使用的是控件.
SB_HORZ表示标准的scroll控件,打个比方,就是浏览器下面的那个东西.
在Win32中,这个分开的.我都忽视了.
|