首页
社区
课程
招聘
怎样用VC++的SDK写一个基于对话框的程序?(非MFC)
发表于: 2011-1-6 00:19 24913

怎样用VC++的SDK写一个基于对话框的程序?(非MFC)

2011-1-6 00:19
24913
收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 91
活跃值: (57)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
要看你怎么做了,你是打算封装起来,还是直接的一个程序?
2011-1-7 23:39
0
雪    币: 209
活跃值: (773)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
呵呵!一个最简单的最直接的程序!
2011-1-9 03:15
0
雪    币: 53
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
直接用SDK写界面很费事的,而且写到一定程度,就会想封装成一个模块或者类
自己封装也许有一定用处,但是用现成的不是更节省时间?
所以我推荐楼主用WTL,最新版本下载
http://sourceforge.net/projects/wtl/
当然也有教程,关键字 MFC程序员的WTL指南
2011-1-9 08:41
0
雪    币: 209
活跃值: (773)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
打死不用MFC......
不用什么class......
2011-1-9 23:45
0
雪    币: 53
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
汗,WTL就是给那些不愿意用MFC的人准备的,没有lib,只有头文件,把路径包含进来就可以用
几乎就是SDK编译,编译出来的体积和SDK代码编译出来的差不多

最后回帖,听不听的进去就不关我事了
2011-1-11 09:02
0
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
不知道解决没有 这有个例子 lz自己分析 http://u.115.com/file/f94f0e98f3
2011-2-19 17:12
0
雪    币: 387
活跃值: (25)
能力值: ( 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
2011-2-19 17:39
0
雪    币: 387
活跃值: (25)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
9
DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_MAIN), NULL, DialogProc, 0);
这个函数是根据对话框资源建立对话框的
2011-2-19 17:40
0
雪    币: 214
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
MFC 有那么可恨吗
2011-2-21 17:02
0
雪    币: 72
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
微软有没有单独的windows sdk呀,帮助文档那么大!!1G多。。。。有没有像linux api文档一样的东西呀,也就几十兆的。
2011-3-7 12:21
0
雪    币: 132
活跃值: (214)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
12
不晓得楼主为什么想要一个SDK写的对话框程序,我建议楼主去看看查尔斯的WINDOWS程序设计吧,这本书经典的很,你的要求里面很多很多,让你知其然也知道一些所以然不是很好吗?例子我就不给了吧,书上N多的。
2011-4-20 09:26
0
游客
登录 | 注册 方可回帖
返回
//