我们都知道,Windows内置了一些控件的实现,要使用它们只需要在CreateWindow的时候指定好类就可以了。如果现在我们完全不能使用它们,那如何来实现一个EditBox?或一个button,或一个Check box?我承认我比较喜欢寻根究底。^_^

解决方案 »

  1.   

    你要喜欢寻根究底的话就直接用GDI绘制吧,处理好各种具体才消息就可以实现任意的控件——但是有必要吗???
      

  2.   

    那你就自绘控件嘛,呵呵!
    然后自己再指定个LRESULT CALLBACK WndProc!
    想怎么画就怎么画 呵呵!
      

  3.   

    不是就是win32吧,自己registerclass,然后绘制窗口了,相应消息。
      

  4.   

    RegisterClass的WNDCLASS结构我觉得包含信息不足以使一个窗口形成一个button或者别的控件啊,内部究竟如何操作呢?
      

  5.   

    button很简单, 处理WM_PAINT/WM_LBUTTONDOWN/WM_LBUTTONUP, 自绘边框状态并发送WM_COMMAND消息就可以了.edit复杂一点. 需要自已维护一个缓冲区,并
    自己处理WM_KEYDOWN/WM_CHAR/WM_IME_CHAR/WM_LBUTTONDOWN/WM_LBUTTONUP/WM_VSCROLL/WM_HSCROLL/WM_SIZE/WM_PAINT/WM_SETFONT/WM_SETTEXT/WM_COMMAND等多个消息, 
    需要调用到TextOut/GetTextMetrics/GetTextExtentPoint32/TrackPopupMenuEx等多个API。
    如果不是确有特殊需求,一般不会自已去实现这样的控件。