能力值:
( LV2,RANK:10 )
4 楼
直接用SDK写界面很费事的,而且写到一定程度,就会想封装成一个模块或者类
自己封装也许有一定用处,但是用现成的不是更节省时间?
所以我推荐楼主用WTL,最新版本下载
http://sourceforge.net/projects/wtl/
当然也有教程,关键字 MFC程序员的WTL指南
能力值:
( LV2,RANK:10 )
5 楼
打死不用MFC......
不用什么class......
能力值:
( LV2,RANK:10 )
6 楼
汗,WTL就是给那些不愿意用MFC的人准备的,没有lib,只有头文件,把路径包含进来就可以用
几乎就是SDK编译,编译出来的体积和SDK代码编译出来的差不多
最后回帖,听不听的进去就不关我事了
能力值:
( LV2,RANK:10 )
7 楼
不知道解决没有 这有个例子 lz自己分析 http://u.115.com/file/f94f0e98f3
能力值:
( LV7,RANK:100 )
8 楼
比较简单的对话框程序, 枚举进程
新建一个VC6++的Win32应用程序,代码如下:
// ProcessList.c
#include <windows.h>
#include <tlhelp32.h>
#include "resource.h"
HWND hWinList = NULL;
char szTerminate[] = TEXT("无法结束指定进程");
void GetProcessList(HWND hWnd);
LRESULT CALLBACK DialogProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
int WINAPI WinMain(IN HINSTANCE hInstance, IN HINSTANCE hPrevInstance, IN LPSTR lpCmdLine, IN int nShowCmd )
{
DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_MAIN), NULL, DialogProc, 0);
return 0;
} void GetProcessList(HWND hWnd)
{
PROCESSENTRY32 stProcess;
HANDLE hSnapShot;
DWORD dwRtn;
BOOL b;
RtlZeroMemory(&stProcess, sizeof(stProcess));
SendMessage(hWinList, LB_RESETCONTENT, 0, 0);
stProcess.dwSize = sizeof(stProcess);
hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
b = Process32First(hSnapShot, &stProcess);
while ( b )
{
dwRtn = SendMessage(hWinList, LB_ADDSTRING, 0, (LPARAM)stProcess.szExeFile);
SendMessage(hWinList, LB_SETITEMDATA, dwRtn, stProcess.th32ProcessID);
b = Process32Next(hSnapShot, &stProcess);
}
CloseHandle(hSnapShot);
EnableWindow(GetDlgItem(hWnd, IDOK), FALSE);
}
LRESULT CALLBACK DialogProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
int nItem = 0;
LRESULT lRes = 0;
HANDLE hProcess = NULL;
switch ( uMsg )
{
case WM_CLOSE:
EndDialog(hWnd, 0);
break;
case WM_INITDIALOG:
hWinList = GetDlgItem(hWnd, IDC_PROCESS);
GetProcessList(hWnd);
break;
case WM_COMMAND:
if ( LOWORD(wParam) == IDOK )
{
nItem = SendMessage(hWinList, LB_GETCURSEL, 0, 0);
lRes = SendMessage(hWinList, LB_GETITEMDATA, nItem, 0);
if ( ( hProcess = OpenProcess(PROCESS_TERMINATE, FALSE, lRes) ) )
{
TerminateProcess(hProcess, -1);
CloseHandle(hProcess);
Sleep(200);
GetProcessList(hWinList);
}
else
MessageBox(hWnd, szTerminate, NULL, MB_OK | MB_ICONERROR);
}
else if ( LOWORD(wParam) == IDC_REFRESH )
{
GetProcessList(hWnd);
}
else if ( LOWORD(wParam) == IDC_PROCESS )
{
if ( HIWORD(wParam) == LBN_SELCHANGE )
{
EnableWindow(GetDlgItem(hWnd, IDOK), TRUE);
}
}
break;
default:
return FALSE;
}
return TRUE;
} // resource.h
#define IDD_MAIN 101
#define IDC_REFRESH 1000
#define IDC_PROCESS 1001 // ProcessList.rc
#include "resource.h"
#include "afxres.h"
//
// Dialog
//
IDD_MAIN DIALOG DISCARDABLE 0, 0, 218, 145
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "进程列表"
FONT 10, "宋体"
BEGIN
DEFPUSHBUTTON "终止(&T)",IDOK,161,124,50,14
PUSHBUTTON "刷新(&R)",IDC_REFRESH,97,124,50,14
LISTBOX IDC_PROCESS,7,7,204,110,LBS_SORT | LBS_NOINTEGRALHEIGHT |
WS_VSCROLL | WS_TABSTOP
END
能力值:
( LV7,RANK:100 )
9 楼
DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_MAIN), NULL, DialogProc, 0);
这个函数是根据对话框资源建立对话框的
能力值:
( LV2,RANK:10 )
11 楼
微软有没有单独的windows sdk呀,帮助文档那么大!!1G多。。。。有没有像linux api文档一样的东西呀,也就几十兆的。
能力值:
( LV6,RANK:80 )
12 楼
不晓得楼主为什么想要一个SDK写的对话框程序,我建议楼主去看看查尔斯的WINDOWS程序设计吧,这本书经典的很,你的要求里面很多很多,让你知其然也知道一些所以然不是很好吗?例子我就不给了吧,书上N多的。