The Fourth Dimension Space

枯叶北风寒,忽然年以残,念往昔,语默心酸。二十光阴无一物,韶光贱,寐难安; 不畏形影单,道途阻且慢,哪曲折,如渡飞湍。斩浪劈波酬壮志,同把酒,共言欢! -如梦令

走进MFC的空间

在看了孙鑫的 《C++深入详解》 后,终于能写出个人的第一个MFC程序了,虽然是模仿孙鑫的例程,不过个人非常有成就感呵,希望能早日写出一个功能完整的程序;

#include<windows.h>
#include
<stdio.h>
#include
<cmath>
#include
<iostream>
using namespace std;


LRESULT CALLBACK WinSunProc(
                            HWND hwnd,      
// handle to window
                            UINT uMsg,      // message identifier
                            WPARAM wParam,  // first message parameter
                            LPARAM lParam   // second message parameter
                            );

int WINAPI WinMain(
                   HINSTANCE hInstance,      
// handle to current instance
                   HINSTANCE hPrevInstance,  // handle to previous instance
                   LPSTR lpCmdLine,          // command line
                   int nCmdShow              // show state
                   )
{
    WNDCLASS wndcls;
    wndcls.cbClsExtra
=0;
    wndcls.cbWndExtra
=0;
    wndcls.hbrBackground
=(HBRUSH)GetStockObject(WHITE_PEN);
    wndcls.hCursor
=LoadCursor(NULL,IDC_CROSS);
    wndcls.hIcon
=LoadIcon(NULL,IDI_ERROR);
    wndcls.hInstance
=hInstance;
    wndcls.lpfnWndProc
=WinSunProc;
    wndcls.lpszClassName
="abilitytao";
    wndcls.lpszMenuName
=NULL;
    wndcls.style
=CS_HREDRAW | CS_VREDRAW;
    RegisterClass(
&wndcls);
    
    HWND hwnd;
    hwnd
=CreateWindow("abilitytao","欢迎来到MFC世界",WS_OVERLAPPEDWINDOW,
        
0,0,600,400,NULL,NULL,hInstance,NULL);
    
    ShowWindow(hwnd,SW_SHOWNORMAL);
    UpdateWindow(hwnd);
    
    MSG msg;
    
while(GetMessage(&msg,NULL,0,0))
    
{
        TranslateMessage(
&msg);
        DispatchMessage(
&msg);
    }

    
return msg.wParam;
}


LRESULT CALLBACK WinSunProc(
                            HWND hwnd,      
// handle to window
                            UINT uMsg,      // message identifier
                            WPARAM wParam,  // first message parameter
                            LPARAM lParam   // second message parameter
                            )
{
    
switch(uMsg)
    
{
    
case WM_CHAR:
        
char szChar[20];
        sprintf(szChar,
"char code is %d",wParam);
        MessageBox(hwnd,szChar,
"char",0);
        
break;
    
case WM_LBUTTONDOWN:
        MessageBox(hwnd,
"mouse clicked","message",0);
        HDC hdc;
        hdc
=GetDC(hwnd);
        
//ReleaseDC(hwnd,hdc);
        break;
    
case WM_PAINT:
        HDC hDC;
        PAINTSTRUCT ps;
        hDC
=BeginPaint(hwnd,&ps);
        TextOut(hDC,
260,100,"hello,MFC",strlen("hello,MFC"));
        TextOut(hDC,
350,120,"by  -abilitytao",strlen("by  -abilitytao"));
        EndPaint(hwnd,
&ps);
        
break;
    
case WM_CLOSE:
        
if(IDYES==MessageBox(hwnd,"真的要退出吗?","提示",MB_YESNO))
        
{
            DestroyWindow(hwnd);
        }

        
break;
    
case WM_DESTROY:
        PostQuitMessage(
0);
        
break;
    
default:
        
return DefWindowProc(hwnd,uMsg,wParam,lParam);
    }

    
return 0;
}



感谢那些在我学习过程中给我指点和建议的人!

posted on 2009-04-29 23:30 abilitytao 阅读(2868) 评论(31)  编辑 收藏 引用

评论

# re: 走进MFC的空间 2009-04-30 02:46 路人丁

不好意思 这是windows API 不是MFC  回复  更多评论   

# re: 走进MFC的空间 2009-04-30 08:54 brightcoder

...................  回复  更多评论   

# re: 走进MFC的空间 [未登录] 2009-04-30 08:57 Peter

同意楼上,这是C风格的windows程序。
建议看Jeff Prosise的《MFC Windows程序设计 第二版》,非常经典,翻译的也可以,。  回复  更多评论   

# re: 走进MFC的空间 2009-04-30 09:11 Linuxer

确实,这完全不是MFC,这是经典的API式程序  回复  更多评论   

# re: 走进MFC的空间 2009-04-30 09:44 shongbee2

哦!恭喜您。进入MFC。呵呵!我也是学孙鑫的。还可以。加油。不过楼上推荐的《MFC Windows程序设计 第二版》感觉比孙鑫的好。
加油。。。  回复  更多评论   

# re: 走进MFC的空间 2009-04-30 09:47 kevin.c

建议你跳过这些API例程,直接由MFC框架开始学习,这些东西可以以后回来再看。  回复  更多评论   

# re: 走进MFC的空间 2009-04-30 09:51 dopoco

不推荐学习MFC,推荐QT或wxWidgets
QT你自己看一下就会知道,如果想学C++,你会被她打动的;
wxWidgets类似于MFC,但开放、跨平台,虽然现在不用跨平台,多一件利器,又比MFC简单,何乐而不为呢;
如果喜欢C,推荐GTK+和IUP(http://www.tecgraf.puc-rio.br/iup/)
不过学点windows API 好处多多。
祝您成功。  回复  更多评论   

# re: 走进MFC的空间 2009-04-30 10:55 茶亭量子

学点API还是不错的,MFC的大部分功能都是对Windows API的封装,看一下那些控件的源代码就知道了,MFC是开放源代码的。用QT做界面开发确实要比MFC简单,但是需要QT的运行库,所以程序会变成比较大。还有一种是基于WTL的界面开发,比较符合原始的程序开发方式,需要对模版有一定的理解。  回复  更多评论   

# re: 走进MFC的空间 2009-04-30 11:06 陈梓瀚(vczh)

任何一件想保留C++精神的GUI库,最终都会变得无敌难看以及难用的。不过学学MFC也没啥不好,这个找工作容易些。  回复  更多评论   

# re: 走进MFC的空间 2009-04-30 12:31 __ay

呵呵 个人比较推荐深入浅出MFC 侯老大的书 那个才叫MFC~学东西要升华到设计思想  回复  更多评论   

# re: 走进MFC的空间 2009-04-30 12:42 abilitytao

谢谢各位的指点 实在感激不尽
不过由于我现在还处于学生阶段 可能还只能按照学校拟定的大方向来学习 所以学完C++后 我觉得还是应该先学MFC为好 至于QT或wxWidgets 如果有机会的话 一定会去看的 谢谢各位!
  回复  更多评论   

# re: 走进MFC的空间 2009-04-30 12:57 abilitytao

@__ay
那个我也看了下 感觉有点难。。。感觉还是等到有一定功力的时候再看比较合适  回复  更多评论   

# re: 走进MFC的空间 2009-04-30 15:25 xcpp

初学就不要学MFC了吧?直接用ATL/WTL不是更好?  回复  更多评论   

# re: 走进MFC的空间 2009-04-30 15:39 lsc1011

呵呵~!和你一样钟情MFC……  回复  更多评论   

# re: 走进MFC的空间 2009-04-30 15:49 dopoco

"任何一件想保留C++精神的GUI库,最终都会变得无敌难看以及难用的。"
没觉得,倒是C++本身太过博大精深,如果过于关注C++本身的功能,到有可能走火入魔  回复  更多评论   

# re: 走进MFC的空间 2009-04-30 16:02 邓冬生

@abilitytao
你学校教MFC?
你写那个确实不是MFC程序,那本书我也看了。这个例子中只不过是引出MFC的  回复  更多评论   

# re: 走进MFC的空间 2009-04-30 16:46 abilitytao

@邓冬生
呵呵 没错啊 我们上课教得也的确不是这个
我们老师讲的东西比较少 所以我基本上是线下自学了 昨天拿着孙鑫的书看了下
于是写出了上面这个程序 其实只是想初步了解一下可视化编程的概念 这个是引入 的确没错 您看得很仔细 多谢~  回复  更多评论   

# re: 走进MFC的空间 2009-04-30 20:00 duzhongwei

MFC好难,至今不会  回复  更多评论   

# re: 走进MFC的空间 2009-04-30 20:23 Bill Hsu

不屑于会MFC。。。  回复  更多评论   

# re: 走进MFC的空间 2009-04-30 21:10 abilitytao

@Bill Hsu
何出此言?  回复  更多评论   

# re: 走进MFC的空间 2009-04-30 23:54 空明流转

@陈梓瀚(vczh)
只要你是静态语言,且没有反射,就会很难看。  回复  更多评论   

# re: 走进MFC的空间 2009-05-01 01:11 abilitytao

@空明流转
做为初学者 请恕我无法理解您的意思。。。  回复  更多评论   

# re: 走进MFC的空间 2009-05-02 00:02 foxtail

MFC学了也没什么用了吧。呵呵!  回复  更多评论   

# re: 走进MFC的空间 2009-05-02 00:06 abilitytao

@foxtail
为何?  回复  更多评论   

# re: 走进MFC的空间 2009-05-02 15:01 zomoir

MFC没什么学的意义。。。  回复  更多评论   

# re: 走进MFC的空间 2009-05-03 08:44 彭小虎(Tigerkin)

学学挺好,能用起来就行  回复  更多评论   

# re: 走进MFC的空间 2009-05-04 08:52 tmp

学了真没什么用,以后你慢慢就明白了,多说无益,把编码基本功和设计架构熟练就不错了,多做做小东西  回复  更多评论   

# re: 走进MFC的空间 2009-05-05 13:07 hoodlum1980

case WM_LBUTTONDOWN:
MessageBox(hwnd,"mouse clicked","message",0);
HDC hdc;
hdc=GetDC(hwnd);
//ReleaseDC(hwnd,hdc);
break;

~~~~~~~~~~~~~~~~~
你在搞什么啊,拿到DC以后不释放的呀你!!??而且什么都没干。  回复  更多评论   

# re: 走进MFC的空间 2009-05-06 00:12 abilitytao

@hoodlum1980
在下初学 还不能领会其中奥妙 希望您能多多指点  回复  更多评论   

# re: 走进MFC的空间 2010-07-13 10:11 路青飞

真是抛砖引玉呀
  回复  更多评论   

# re: 走进MFC的空间 2013-02-25 09:55 dhy

赞同,感兴趣de话,学着玩吧  回复  更多评论   


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理