怎么从MFC转WIN32???

大树学长 2018-04-03 09:55:31
有没有学习资料一类的,一直用的MFC,没有用过WIN32,看WIN32的代码还有些地方不是很明白,请问有那些需要注意的地方???
...全文
739 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
smwhotjay 2018-05-05
  • 打赏
  • 举报
回复
win32 一般都是c函数风格,很少c++的了,除非又是窗口内裤
hurryboylqs 2018-05-05
  • 打赏
  • 举报
回复
Windows程序设计第五版等着你看
丁劲犇 2018-04-12
  • 打赏
  • 举报
回复
从mfc直接转到qt吧。qt的封装非常的棒。
schlafenhamster 2018-04-11
  • 打赏
  • 举报
回复
其实 就是 switch(message) 的 case 群!
赵4老师 2018-04-11
  • 打赏
  • 举报
回复
千句解释,不如一行代码。
xiaohuh421 2018-04-11
  • 打赏
  • 举报
回复
MFC是对win32API进行了高度的封装. 如果你只是想学win32, 那么完全不用管MFC. 如果是想从win32层面上了解MFC, 那么可以看一个WTL的源码, 看看wtl的按钮, 编辑框之类的是, 是如何封装win32 api的.
赵4老师 2018-04-09
  • 打赏
  • 举报
回复
从编译链接调试这个程序开始:
#pragma comment(lib,"user32")
#pragma comment(lib,"gdi32")
#include <windows.h>
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
    PAINTSTRUCT ps;
    HDC hdc;
    HFONT hfont,ohfont;
    RECT r;
    COLORREF oc;

    switch(message) {
    case WM_CLOSE://按Alt+F4退出
        PostQuitMessage(0);
        break;
    case WM_PAINT:
        BeginPaint(hWnd, &ps);
        hdc = ps.hdc; // the device context to draw in
        GetClientRect(hWnd, &r); // Obtain the window's client rectangle
        hfont = CreateFont(200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "宋体");
        ohfont=(HFONT)SelectObject(hdc,hfont);
        oc=SetTextColor(hdc,0x00C080FF);
        SetBkMode(hdc, TRANSPARENT);
        TextOut(hdc,r.left+r.right/2-600, r.top+r.bottom/2-100,"最短画图程序",12);
        SelectObject(hdc,ohfont);
        SetTextColor(hdc,oc);
        DeleteObject(hfont);
        EndPaint(hWnd, &ps);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
    MSG msg             = {0};
    WNDCLASS wc         = {0};
    HBRUSH hbrh;
    hbrh=CreateSolidBrush(0x00000000);
    wc.lpfnWndProc      = WndProc;
    wc.hInstance        = hInstance;
    wc.hbrBackground    = hbrh;
    wc.lpszClassName    = "minwindowsapp";
    wc.hCursor          = LoadCursor(NULL,IDC_ARROW);
    if (0==RegisterClass(&wc)) return 1;

    if (NULL==CreateWindow(wc.lpszClassName,
                        "Minimal Windows Application",
                        WS_POPUP|WS_VISIBLE,
                        0,
                        0,
                        GetSystemMetrics(SM_CXSCREEN),
                        GetSystemMetrics(SM_CYSCREEN),
                        0,
                        0,
                        hInstance,
                        NULL))
        return 2;

    while( GetMessage( &msg, NULL, 0, 0 ) > 0 ) {
        DispatchMessage( &msg );
    }
    DeleteObject(hbrh);
    return 0;
}
paschen 2018-04-05
  • 打赏
  • 举报
回复
一般一些简单的小程序,用WIN32 SDK开发会比MFC开发出来体积小数倍
paschen 2018-04-05
  • 打赏
  • 举报
回复
WIN32把开始的创建窗口和窗口过程设计出来后(通常IDE生成项目时已经给你写好了,有其他窗口需要再增加),后面就是在上面增加代码了,要实现什么功能可以参看MFC,很多函数通常就是多一个窗口句柄的参数,有不会写的地方可参照MFC里的代码
Eleven 2018-04-05
  • 打赏
  • 举报
回复
可以看看Windows程序设计一书~
worldy 2018-04-04
  • 打赏
  • 举报
回复
MFC是基于win32的一个封装,你反过来学习,虽然业务代码大多相同,但可能比较麻烦,因为MFC代码封装了win32的一些细节,建议你去找一本win32的书籍研究一下,其实不难
schlafenhamster 2018-04-04
  • 打赏
  • 举报
回复
先 创建 一个 “Hello world!” win32 工程。
赵4老师 2018-04-04
  • 打赏
  • 举报
回复
都是图灵机!
zgl7903 2018-04-04
  • 打赏
  • 举报
回复
差不多 MFC就是在API上多了一层封装,因此很多函数都和API同名 功能也类似,最好的帮助就是阅读MSDN文档
sichuanwww 2018-04-04
  • 打赏
  • 举报
回复
看来,要干大事啊
ckc 2018-04-04
  • 打赏
  • 举报
回复
差异比较大 就好像一直用c语言的,突然不用了改用汇编

1,649

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 非技术类
社区管理员
  • 非技术类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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