user-0 提问: 请问高手，如何用c语言编写窗口程序？？

回复:
user: user-1
content: if( FAILED(RegisterClass(&wc)) ) return 1;  将你写的窗口数据   登记注册  到系统中。 createwindow  ； 根据你 登记注册   的窗口数据。。。创建窗口 具体参数解释 可以查 MSDN 。 。 。  在windows 系统中创建窗口。是有一个过程的。。只要你遵循这个过程写代码就可以。。  消息机制----就相当于，我们发给系统的操作口令。。

user: user-2
content: 这就一定要读一读<windows程序设计>

user: user-0
content: 引用 11 楼 arthuryangsh 的回复:没有消息机制，窗口无法绘图刷新，无法响应。请问下，这部分代码是不是死记住就可以了？

user: user-3
content: 没有消息机制，窗口无法绘图刷新，无法响应。

user: user-0
content: 引用 9 楼 qq_15033289 的回复:windows 是视图化系统，你要想在windows下创建、显示   窗口。。你就得用 微软提供的函数。。。     你想自己写一个窗口。。。那我 估摸着 ，你先的把所有的底层支持 都写出来才成。。 。。是的，我不是说不用微软的函数，我是说编写了 WNDCLASS wc         = {0};     HBRUSH hbrh;     hbrh=CreateSolidBrush(0x00000000);     wc.lpfnWndProc      = WndProc;     wc.hInstance        = hInstance;     wc.hbrBackground    = hbrh;  不写if( FAILED(RegisterClass(&wc)) ) return 1;       if(FAILED(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);这些，也能编写窗口程序吗？难道非的要消息机制吗？     wc.lpszClassName    = "minwindowsapp";     wc.hCursor          = LoadCursor(NULL,IDC_ARROW);

user: user-1
content: windows 是视图化系统，你要想在windows下创建、显示   窗口。。你就得用 微软提供的函数。。。     你想自己写一个窗口。。。那我 估摸着 ，你先的把所有的底层支持 都写出来才成。。 。。

user: user-0
content: 引用 7 楼 zhao4zhong1 的回复:仅供参考#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(240, 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-720, r.top+r.bottom/2-120,"最短画图程序",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( FAILED(RegisterClass(&wc)) ) return 1;      if(FAILED(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; } 请问下，c语言编写窗口，必须涉及到消息机制，窗口才能显示出来吗？光设置窗口属性和显示窗口，不可以吗？

user: user-4
content: 仅供参考#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(240, 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-720, r.top+r.bottom/2-120,"最短画图程序",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( FAILED(RegisterClass(&wc)) ) return 1;      if(FAILED(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; }

user: user-5
content: 使用win32 api 即可创建出窗口

user: user-6
content: 引用 4 楼 king_2007 的回复:引用 3 楼 zjq9931 的回复:[quote=引用 2 楼 king_2007 的回复:] [quote=引用 1 楼 zjq9931 的回复:] 请详细研读《windows程序设计》这本书最开始就提到了怎么写。那你不能告诉我么？就是一个窗口的显示，没有事件消息，如何编写？ 这样：  #include "windows.h" int APIENTRY WinMain(HINSTANCE hInstance,                      HINSTANCE hPrevInstance,                      LPSTR     lpCmdLine,                      int       nCmdShow) { 	MessageBox(NULL, "内容", "标题", NULL); 	return 0; } [/quote]  能不能提供个编写窗体的代码？我不要这对话框的代码，这个随便找个书上就有，我是想要个一个窗体的代码。[/quote] 《windows程序设计》第五版，第一章，就有啊。里面的代码可以复制。

user: user-0
content: 引用 3 楼 zjq9931 的回复:引用 2 楼 king_2007 的回复:[quote=引用 1 楼 zjq9931 的回复:] 请详细研读《windows程序设计》这本书最开始就提到了怎么写。那你不能告诉我么？就是一个窗口的显示，没有事件消息，如何编写？ 这样：  #include "windows.h" int APIENTRY WinMain(HINSTANCE hInstance,                      HINSTANCE hPrevInstance,                      LPSTR     lpCmdLine,                      int       nCmdShow) { 	MessageBox(NULL, "内容", "标题", NULL); 	return 0; } [/quote]  能不能提供个编写窗体的代码？我不要这对话框的代码，这个随便找个书上就有，我是想要个一个窗体的代码。

user: user-6
content: 引用 2 楼 king_2007 的回复:引用 1 楼 zjq9931 的回复:请详细研读《windows程序设计》这本书最开始就提到了怎么写。那你不能告诉我么？就是一个窗口的显示，没有事件消息，如何编写？ 这样：  #include "windows.h" int APIENTRY WinMain(HINSTANCE hInstance,                      HINSTANCE hPrevInstance,                      LPSTR     lpCmdLine,                      int       nCmdShow) { 	MessageBox(NULL, "内容", "标题", NULL); 	return 0; }

user: user-0
content: 引用 1 楼 zjq9931 的回复:请详细研读《windows程序设计》这本书最开始就提到了怎么写。那你不能告诉我么？就是一个窗口的显示，没有事件消息，如何编写？

user: user-6
content: 请详细研读《windows程序设计》这本书最开始就提到了怎么写。