请问高手Windows编程的问题

liangsonliu 2003-10-10 10:36:49
请问高手,我下面的程序错在哪里,请帮忙调试或修改一下,非常谢谢!

/****************************************
* 主程序,调用cWlogon.cpp中的cWlogon函数
*/

#include <windows.h>
#include "cWlogon.h"

int cWlogon (HINSTANCE hInstance,
int iCmdShow)
int WINAPI
WinMain (HINSTANCE hInstance,
HINSTANCE hPrevInstance,
PSTR szCmdLine,
int iCmdShow)
{
cWlogon(NULL, SW_SHOWNORMAL);
}




/*********************************
*头文件
*/
#ifndef CITELOGON
#define CITELOGON
int cWlogon (HINSTANCE hInstance,
int iCmdShow)
#endif





/**********************************
*建立窗口
*/

#include <windows.h>
#include "cWlogon.h"

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

int cWlogon (HINSTANCE hInstance,
int iCmdShow)
{
static TCHAR szAppName[] = TEXT ("HelloWin") ;
HWND hwnd ;
MSG msg ;
WNDCLASS wndclass ;

wndclass.style = CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc = WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
wndclass.lpszMenuName = NULL ;
wndclass.lpszClassName = szAppName ;

if (!RegisterClass (&wndclass))
{
MessageBox (NULL, TEXT ("This program requires Windows NT!"),
szAppName, MB_ICONERROR) ;
return 0 ;
}

hwnd = CreateWindow (szAppName,
TEXT ("Cits Logon"),
WS_OVERLAPPEDWINDOW,
300,
200,
300,
400,
NULL,
NULL,
hInstance,
NULL) ;

ShowWindow (hwnd, iCmdShow) ;
UpdateWindow (hwnd) ;

while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
return msg.wParam ;

}

LRESULT CALLBACK
WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
static int cxChar, cxCaps, cyChar ;
HDC hdc ;
int i ;
PAINTSTRUCT ps ;
TCHAR szBuffer [10] ;
TEXTMETRIC tm ;

switch (message)
{
case WM_CREATE:
hdc = GetDC (hwnd) ;

GetTextMetrics (hdc, &tm) ;
cxChar = tm.tmAveCharWidth ;
cxCaps = (tm.tmPitchAndFamily & 1 ? 3 : 2) * cxChar / 2 ;
cyChar = tm.tmHeight + tm.tmExternalLeading ;


ReleaseDC (hwnd, hdc) ;
return 0 ;



case WM_DESTROY :
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}
...全文
35 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
liangsonliu 2003-10-14
  • 打赏
  • 举报
回复
非常感谢各位的帮助,这个问题我已经解决了,我是用类进行处理的,大家可以参考一下。

/***************
* cWlogon.h
*/
#ifndef CWLOGON_H_
#define CWLOGON_H_

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

class cWlogon {
public:
int Show();
};
#endif


/***************
* cWlogon.cpp
*/
#include <windows.h>
#include "cWlogon.h"

int cWlogon::Show() {
HINSTANCE hInstance;
static TCHAR szAppName[] = TEXT ("cWlogon") ;
HWND hwnd ;
MSG msg ;
WNDCLASS wndclass ;

wndclass.style = CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc = WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
wndclass.hbrBackground = (HBRUSH) GetStockObject (LTGRAY_BRUSH) ;
wndclass.lpszMenuName = NULL ;
wndclass.lpszClassName = szAppName ;

if (!RegisterClass (&wndclass)) {
MessageBox (NULL, TEXT ("This program requires Windows NT!"),
szAppName, MB_ICONERROR) ;
return 0 ;
}

hwnd = CreateWindow (szAppName,
TEXT ("Cits Logon"),
WS_OVERLAPPEDWINDOW,
300,
200,
300,
400,
NULL,
NULL,
hInstance,
NULL) ;

ShowWindow (hwnd, SW_SHOWNOACTIVATE) ;
UpdateWindow (hwnd) ;

while (GetMessage (&msg, NULL, 0, 0)) {
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
return msg.wParam ;
}

LRESULT CALLBACK
WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {
static int cxChar, cxCaps, cyChar ;
HDC hdc ;
int i ;
PAINTSTRUCT ps ;
TCHAR szBuffer [10] ;
TEXTMETRIC tm ;

switch (message) {
case WM_CREATE:
hdc = GetDC (hwnd) ;

GetTextMetrics (hdc, &tm) ;
cxChar = tm.tmAveCharWidth ;
cxCaps = (tm.tmPitchAndFamily & 1 ? 3 : 2) * cxChar / 2 ;
cyChar = tm.tmHeight + tm.tmExternalLeading ;

ReleaseDC (hwnd, hdc) ;
return 0 ;

case WM_COMMAND:
switch( wParam ) {

}
break;

case WM_CLOSE:
DestroyWindow( hwnd );
return 0;

case WM_DESTROY :
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}


/***************
* main.cpp
*/
#include <windows.h>
#include "cWlogon.h"

main() {
cWlogon cWlogon;
cWlogon.Show();
}
Jinhao 2003-10-11
  • 打赏
  • 举报
回复
/*********************************
*头文件
*/
#ifndef CITELOGON
#define CITELOGON
int cWlogon (HINSTANCE hInstance,
int iCmdShow); //这里少了个;
#endif

cWlogon(NULL, SW_SHOWNORMAL); //第一个可以是NULL
Jinhao 2003-10-10
  • 打赏
  • 举报
回复
int WINAPI
WinMain (HINSTANCE hInstance,
HINSTANCE hPrevInstance,
PSTR szCmdLine,
int iCmdShow)
{
cWlogon(hInstance, SW_SHOWNORMAL); //建一个窗口属于hInstance这个实例,你用的是NULL
}

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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