是否有其他人在使用tableView.registerClassSwift方法时遇到问题?
它不再是我的代码完成(如果手动输入也不能使用它)但它仍然在标题中...


我想问一下,为什么在使用API开发Windows GUI时,是否需要注册窗口类?它的概念是什么?
我已经阅读了Charles Petzold 编写Windows的前三章,但我仍然想知道明确注册一个类的目的是什么.我为什么要明确地这样做?为什么不在后台完成,例如CreateWindow()(或CreateWindowEx())函数?我的意思是,为什么不是RegisterClass()在CreateWindow()中执行的代码,或者为什么CreateWindow()不调用RegisterClass()本身?
我也一直在阅读MSDN上的文档,我知道RegisterClass()函数通过填充WNDCLASS结构将窗口过程与窗口类相关联.我知道这是处理来自操作系统的消息的函数,但为什么有必要将该函数(WinProc一个)注册到CreateWindow()的单独函数中的类?
我可以理解存在CreateWindow()函数的原因,以及为什么它不会自动显示创建的窗口.这意味着我也理解ShowWindow()函数的用途.
我确信这种行为必须有充分的理由,让程序员在他想要的时候注册课程,我只是没有看到这些原因,这就是为什么我要求你们解释这个问题.
请记住,我是使用Windows API进行GUI开发的新手.我在MATLAB中做了一些GUI,它与Windows API不同,仍然允许我理解一些Windows哲学,特别是回调函数的目的.我不知道这些信息是否有用,但如果你需要做一些类比,请成为我的客人.
我正在使用ios 7.
快问.我有一个使用dequeueReusableCellWithIdentifier:forIndexPath的工作程序来显示具有两个不同原型的单元格.我从未使用过UITableView registerClass方法.
这是否意味着我不重复使用细胞?我的想法是,情况并非如此(因为我在此应用程序之前修复了与保留先前状态的单元格相关的错误).
如果我现在实际使用registerClass(在viewVieW的viewDidLoad中),我的数据没有显示 - 任何想法为什么?
谢谢!
更新 我在viewDidLoad中添加了registerClass代码,如下所示:
[self.tableView registerClass:[ProtoCell1 class] forCellReuseIdentifier:@"proto1"];
[self.tableView registerClass:[ProtoCell2 class] forCellReuseIdentifier:@"proto2"];
Run Code Online (Sandbox Code Playgroud) 我正在使用以下方法注册我的班级:
BOOL CNDSClientDlg::InitInstance()
{
//Register Window Updated on 16th Nov 2010, @Subhen
// Register our unique class name that we wish to use
WNDCLASS wndcls;
memset(&wndcls, 0, sizeof(WNDCLASS));
wndcls.style = CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW;
wndcls.lpfnWndProc = ::DefWindowProc;
wndcls.hInstance = AfxGetInstanceHandle();
wndcls.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
wndcls.lpszMenuName = NULL;
//Class name for using FindWindow later
wndcls.lpszClassName = _T("CNDSClientDlg");
// Register new class and exit if it fails
if(!AfxRegisterClass(&wndcls)) // [C]
{
return FALSE;
}
}
Run Code Online (Sandbox Code Playgroud)
然后调用InitInstance方法并在类的构造函数中创建窗口:
CNDSClientDlg::CNDSClientDlg(CWnd* pParent /*=NULL*/)
: …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用VC++编译器和Visual Studio在Win32 API中打开一个简单的窗口.我想知道课程失败的原因; 我已经尝试在没有指针的情况下分配它,并将其作为指针分配并将其作为参考发送给函数.然而,无论我尝试什么,该RegisterClassEx函数都拒绝返回true.
为什么会这样,可以做些什么呢?
从 WinMain
WNDCLASSEX* wc = new WNDCLASSEX;
HWND hwnd;
MSG msg;
bool done;
wc->style = CS_HREDRAW | CS_VREDRAW;
wc->lpfnWndProc = WndProc;
wc->cbClsExtra = 0;
wc->cbWndExtra = 0;
wc->hInstance = hInstance;
wc->hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc->hCursor = LoadCursor(NULL, IDC_ARROW);
wc->hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
wc->lpszClassName = L"someclass";
if (!RegisterClassEx(wc)) {
MessageBox(NULL, L"Class registration has failed!", L"Error!", MB_OK | MB_ICONINFORMATION);
return 0;
}
Run Code Online (Sandbox Code Playgroud) c++ ×2
ios ×2
uitableview ×2
winapi ×2
windows ×2
createwindow ×1
mfc ×1
swift ×1
visual-c++ ×1